Terminplanung & Buchungsseiten

Überblick
Die Terminplanung lässt andere Menschen Zeit bei Ihnen buchen — ohne Hin und Her. Sie besteht aus vier Teilen: Termintypen (was gebucht werden kann), Verfügbarkeit (wann), Buchungsseiten (wo gebucht wird) und Verbindungen (welche Fremdkalender mitzählen).
Der wichtigste Satz zur Belegtzeit: Ein bekannter Termin nimmt den Slot — auch ohne Fremdkalender. Was im System steht, gilt. Ein verbundener Kalender ergänzt das, er ersetzt es nicht.
Kernaufgaben
Einen Termintyp anlegen. Dauer, Puffer, Vorlauf, Ort oder Videolink, und wer eingeladen wird.
Verfügbarkeit festlegen. Ein Zeitplan beschreibt die Regelzeiten; Ausnahmen für einzelne Tage gehen vor.
Eine Buchungsseite veröffentlichen. Die Seite ist öffentlich erreichbar und zeigt nur wirklich freie Zeiten.
Anfragen verteilen. Ein Routing-Formular stellt Fragen und leitet daraufhin auf den passenden Termintyp oder die passende Person.
Ressourcen mitbuchen. Wo ein Raum oder ein Gerät zum Termin gehört, wird es mitgebucht und ist für andere blockiert.
Kalender verbinden. Eine Verbindung bringt Fremdtermine als Belegtzeit ein.
Felder im Detail
Die Spalte Was es bewirkt beantwortet, was sich im System ändert — nicht, wie das Feld heißt. Der graue Name dahinter ist das Feld der API: unter ihm läuft dasselbe über Automation, Import und KI-Werkzeuge.
Termintyp
| Feld | Pflicht | Werte / Format | Was es bewirkt |
|---|---|---|---|
Name name | ja | Text | Wofür gebucht werden kann. Der Bucher liest diesen Namen. |
URL-Kürzel slug | ja | Kleinbuchstaben, Ziffern, Bindestriche | Der Teil der öffentlichen Buchungs-URL. Nach dem ersten Teilen nicht mehr ändern — jeder verschickte Link läuft sonst ins Leere. |
Beschreibung description | nein | Text | Was der Bucher vor der Auswahl liest. |
Farbe color | nein | Farbwert | Farbe der Marke in Liste und Kalender. |
Dauer durationMinutes | nein | Minuten, größer als 0 | Wie lange der Termin dauert. Er belegt genau diese Zeit — Puffer kommen zusätzlich obendrauf. |
Wählbare Dauern durationOptions | nein | Liste von Minutenwerten | Lässt den Besucher zwischen mehreren Längen wählen, etwa 15, 30 und 60 Minuten. Die Vorgabe-Dauer ist immer dabei, auch wenn sie hier nicht steht. |
Art kind | nein | one_on_one, group, collective, round_robin, managed | Wer den Termin wahrnimmt und wie viele buchen dürfen. 1:1 ist ein Gastgeber je Buchung, Gruppe mehrere Bucher auf einen Termin, Gemeinsam alle Gastgeber gleichzeitig, Round-Robin reihum verteilt, Verwaltet nur durch das Team gesetzt. Das Feld entscheidet, welche der folgenden Angaben überhaupt greifen. |
Sitzplätze capacity | nein | Zahl, größer als 0 | Nur bei Gruppe: wie viele Bucher denselben Termin belegen dürfen. Unter 2 ist es kein Gruppentermin. |
Ort locationKind | nein | video_meet, video_teams, video_zoom, video_custom, in_person, phone, ask_invitee, custom | Wo der Termin stattfindet. Bei den Video-Arten entsteht der Link automatisch, bei Bucher fragen gibt ihn der Gast an. |
Ort-Angaben locationConfig | nein | Objekt | Die Ergänzung zum Ort — Adresse, Telefonnummer oder eigener Videolink. |
Puffer davor bufferBeforeMinutes | nein | Minuten, 0 oder größer | Zeit, die vor dem Termin zusätzlich blockiert wird — Anfahrt, Vorbereitung. |
Puffer danach bufferAfterMinutes | nein | Minuten, 0 oder größer | Dasselbe danach. Ohne Puffer stehen Termine auf Kante, und die erste Verspätung kippt den Tag. |
Mindest-Vorlauf minNoticeMinutes | nein | Minuten, 0 oder größer | Wie kurzfristig gebucht werden darf. Die Angabe ist in Minuten, nicht in Stunden — ein Tag Vorlauf ist 1440, nicht 24. |
Buchbar bis horizonDays | nein | Tage, größer als 0 | Wie weit im Voraus gebucht werden darf. |
Art des Buchungshorizonts horizonKind | nein | rollend (Vorgabe), fester Zeitraum oder unbegrenzt | Woran sich „buchbar bis" bemisst: rollend zählt Tage ab heute, „fester Zeitraum" öffnet genau eine Spanne, „unbegrenzt" lässt jeden Termin zu. |
Fester Buchungszeitraum dateRange | bei festem Zeitraum | Von-Datum und Bis-Datum, beide einschließlich | Die eine Spanne, in der gebucht werden kann — für eine Messe, eine Aktionswoche oder ein Sprechstunden-Fenster. Ein leerer Wert räumt die Spanne wieder weg. |
Zeitfenster-Takt slotIncrementMinutes | nein | Minuten, größer als 0 | In welchem Raster die freien Zeiten angeboten werden. Bei 15 beginnt ein 60-Minuten-Termin auch um 9:15 — bei 60 nur zur vollen Stunde. Das Feld entscheidet, wie dicht der Tag wird. |
Tageslimit dailyLimit | nein | Zahl; 0 oder leer = kein Limit | Wie viele Termine dieser Art an einem Tag höchstens zustande kommen. Ist es erreicht, verschwindet der Tag aus dem Angebot. |
Sichtbarkeit visibility | nein | public, secret | Öffentlich erscheint auf Buchungsseiten, Nur per Link nicht — buchbar bleibt es über den direkten Link trotzdem. Das ist kein Zugriffsschutz, sondern Zurückhaltung. |
Zahlung verlangt requiresPayment | nein | Ja/Nein | Ob vor der Bestätigung gezahlt wird. |
Preis priceAmount | nein | Betrag in Cent, 0 oder größer | Was der Termin kostet. In Cent geführt: 4500 sind 45,00 EUR. |
Formularfragen questions | nein | Liste von Fragen | Was der Bucher zusätzlich angeben muss. Jede Pflichtfrage kostet Buchungen — fragen Sie, was Sie wirklich brauchen. |
Bestätigungsseite confirmationConfig | nein | eigener Text oder Weiterleitung | Was der Besucher nach dem Buchen sieht: einen eigenen Dankestext oder eine Weiterleitung auf eine Adresse Ihrer Wahl, etwa auf eine Seite, die den Abschluss zählt. |
Verfügbarkeit scheduleId | nein | ein Zeitplan | Welcher Zeitplan die buchbaren Zeiten vorgibt. Leer heißt: der Standard-Zeitplan des Gastgebers. |
Gastgeber hostEmployeeIds | nein | Mitarbeiter | Wer den Termin wahrnimmt. Angeboten wird nur, wo die Person wirklich frei ist. Round-Robin und Gemeinsam brauchen mindestens zwei. |
Ressourcen resourceIds | nein | Ressourcen | Pflicht-Räume und -Geräte. Das Zeitfenster ist nur frei, wenn Gastgeber und alle Ressourcen frei sind. |
Serie recurrenceRule | nein | {freq: daily/weekly/monthly, interval, count}; leer = Einzeltermin | Der Bucher bucht alle Vorkommen in einem Zug. Es kommt nur zustande, wenn jedes Vorkommen frei ist — sonst gar keines. |
Interessent anlegen createLead | nein | Ja/Nein | Ob die Buchung eines unbekannten Besuchers einen Interessenten im CRM anlegt. Ohne den Schalter bleibt ein Termin ein Termin, und der Kontakt geht verloren. |
Vorgang je Buchung workItemKind | nein | Aufgabe, Ticket oder nichts | Ob jede Buchung zusätzlich einen Vorgang erzeugt — eine Aufgabe zur Vorbereitung oder ein Ticket zur Bearbeitung. Leer = kein Vorgang. |
Aktiv active | nein | Ja/Nein | Aus heißt: nicht mehr buchbar. Bereits gebuchte Termine bleiben bestehen. |
Marke brandId | nein | eine Ihrer Marken | Unter welcher Marke der Termintyp geführt und angeboten wird. |
Buchungsseite
| Feld | Pflicht | Werte / Format | Was es bewirkt |
|---|---|---|---|
Name title | ja | Text | Die Überschrift der öffentlichen Seite. |
URL-Kürzel slug | ja | Kleinbuchstaben, Ziffern, Bindestriche | Der Teil der öffentlichen Adresse /public/booking/…. Nach dem Teilen nicht mehr ändern. |
Inhaber-Art ownerType | nein | employee, resource | Ob die Seite einer Person oder einer Ressource gehört. |
Inhaber ownerId | nein | Mitarbeiter bzw. Ressource | Wessen Zeiten die Seite anbietet. |
Begrüßungstext welcomeText | nein | Text | Was oben auf der Seite steht. Der Satz, der erklärt, worauf sich der Gast einlässt. |
Bild avatarFileId | nein | Datei | Das Foto oder Logo der Seite. |
Gestaltung branding | nein | Objekt | Farben und Logo für den White-Label-Auftritt. |
Eigene Domain customDomain | nein | Domain | Liefert die Seite unter Ihrer eigenen Adresse aus. DNS und Host-Routing sind ein Betriebsschritt — ohne den zeigt die Domain ins Leere. |
Termintypen eventTypeIds | nein | Termintypen | Was auf der Seite gebucht werden kann. Angezeigt wird nur, was aktiv und öffentlich ist. |
Sichtbarkeit visibility | nein | public, secret | Nur per Link nimmt die Seite aus Übersichten und Suchmaschinen, erreichbar bleibt sie. |
Marke brandId | nein | eine Ihrer Marken | Unter welcher Marke die Seite geführt wird. |
Verfügbarkeits-Zeitplan
| Feld | Pflicht | Werte / Format | Was es bewirkt |
|---|---|---|---|
Name name | ja | Text | Wie der Zeitplan in der Auswahl heißt, z. B. „Geschäftszeiten". |
Inhaber-Art ownerType | nein | employee, resource | Ob der Plan zu einer Person oder zu einer Ressource gehört. |
Inhaber ownerId | nein | Mitarbeiter bzw. Ressource | Wessen Zeiten er beschreibt. |
Zeitzone timezone | nein | Zeitzone (z. B. Europe/Berlin) | In welcher Zone die Uhrzeiten gemeint sind. Falsch gesetzt, verschiebt sich jeder angebotene Slot — der häufigste Grund für „die Zeiten stimmen nicht". |
Wochenverfügbarkeit weekly | nein | je Wochentag Zeitfenster „HH:MM"–„HH:MM" | Die Regelzeiten. Ein Tag ohne Fenster ist geschlossen. |
Standard-Zeitplan isDefault | nein | Ja/Nein | Der Plan, den ein Termintyp ohne eigene Angabe verwendet. |
Marke brandId | nein | eine Ihrer Marken | Unter welcher Marke der Zeitplan geführt wird. |
Datums-Ausnahme
| Feld | Pflicht | Werte / Format | Was es bewirkt |
|---|---|---|---|
Zeitplan scheduleUlid | ja | ein Zeitplan | Für welchen Zeitplan die Ausnahme gilt. |
Datum date | ja | JJJJ-MM-TT | Der eine Tag, der von der Wochenregel abweicht. Ausnahmen gehen der Regel immer vor. |
Zeitfenster intervals | nein | Paare „HH:MM"–„HH:MM"; leer = ganztägig gesperrt | Die abweichenden Zeiten dieses Tages. Leer lassen heißt sperren, nicht „wie immer". |
Grund reason | nein | Text | Warum der Tag abweicht. Der Satz, der in einem halben Jahr die Frage „warum war da zu?" beantwortet. |
Routing-Formular
| Feld | Pflicht | Werte / Format | Was es bewirkt |
|---|---|---|---|
Name name | ja | Text | Wie das Formular in der Verwaltung heißt. |
URL-Kürzel slug | ja | Kleinbuchstaben, Ziffern, Bindestriche | Der Teil der öffentlichen Formular-Adresse. |
Beschreibung description | nein | Text | Was der Besucher über dem Formular liest. |
Felder fields | nein | Liste aus Schlüssel, Beschriftung, Art, Pflicht | Die Fragen. Auf ihre Schlüssel beziehen sich die Regeln — wird ein Schlüssel umbenannt, greift die Regel nicht mehr. |
Regeln rules | nein | Liste aus Bedingungen und Ziel-Termintyp | Wohin geleitet wird. Die erste Regel, deren Bedingungen alle zutreffen, gewinnt; die Reihenfolge ist damit Teil der Logik. |
Ersatz-Termintyp fallbackEventTypeSlug | nein | URL-Kürzel eines Termintyps | Wohin geleitet wird, wenn keine Regel greift. Ohne Ersatz endet der Besucher in einer Sackgasse. |
Aktiv active | nein | Ja/Nein | Ob das Formular öffentlich beantwortet werden kann. |
Marke brandId | nein | eine Ihrer Marken | Unter welcher Marke das Formular geführt wird. |
Ressource (Raum oder Gerät)
| Feld | Pflicht | Werte / Format | Was es bewirkt |
|---|---|---|---|
Name name | ja | Text | Wie der Raum oder das Gerät heißt. |
Art kind | nein | room, equipment, other | Raum, Gerät oder Sonstiges — nur zur Gliederung der Liste. |
Kapazität capacity | nein | Zahl, größer als 0 | Wie viele Personen hineinpassen. |
Verfügbarkeit scheduleUlid | nein | ein Zeitplan | Wann die Ressource überhaupt buchbar ist. Leer heißt: rund um die Uhr. |
Ort location | nein | Text | Wo die Ressource steht. |
Aktiv active | nein | Ja/Nein | Aus heißt: nicht mehr mitbuchbar. |
Marke brandId | nein | eine Ihrer Marken | Unter welcher Marke die Ressource geführt wird. |
Kalender-Verbindung
Google und Microsoft werden über den jeweiligen Anmelde-Dialog verbunden und haben keine Eingabefelder. Die folgenden Felder gelten für CalDAV (iCloud, Nextcloud, Fastmail …) und für abonnierte iCal-/ICS-Feeds.
| Feld | Pflicht | Werte / Format | Was es bewirkt |
|---|---|---|---|
Kalender-URL url | ja | Adresse der Kalender-Kollektion bzw. des ICS-Feeds | Woher die Fremdtermine kommen. Bei CalDAV die direkte Kollektions-URL, nicht die Server-Wurzel. |
Benutzername username | ja (CalDAV) | Text | Die Anmeldung am CalDAV-Server. |
App-Passwort password | ja (CalDAV) | Text | Das anwendungsspezifische Passwort — bei iCloud und Fastmail zwingend, das Konto-Passwort funktioniert dort nicht. Es wird verschlüsselt abgelegt und nie wieder angezeigt. |
Bezeichnung label | nein | Text | Wie die Verbindung in der Liste heißt. |
Nach dem Verbinden wird ausgewählt, welche Kalender mitzählen:
| Feld | Pflicht | Werte / Format | Was es bewirkt |
|---|---|---|---|
Ziel-Kalender targetCalendarId | nein | ein Kalender der Verbindung | Wohin bestätigte Termine geschrieben werden. Leer heißt: der Standardkalender des Kontos. |
Belegtzeit-Kalender conflictCalendarIds | nein | Kalender der Verbindung | Welche Kalender zusätzlich Zeitfenster sperren. Leer heißt: nur der Ziel-Kalender. |
Termine hereinholen syncInbound | nein | Ja/Nein | Ob Fremdtermine als Belegtzeit gelten. |
Termine hinausschreiben syncOutbound | nein | Ja/Nein | Ob gebuchte Termine im Fremdkalender eingetragen werden. |
Belegte Zeit hat eine Quelle. Ein bekannter Termin nimmt den Slot auch dann, wenn kein Fremdkalender angebunden ist — und ein Termin aus einem verbundenen Kalender ebenso. Deshalb kann keine Doppelbuchung entstehen, solange die Verbindung steht.
Einstellungen & Rechte
- Termintypen:
scheduling.event_type.view/.manage - Verfügbarkeit:
scheduling.schedule.view/.manage - Buchungsseiten:
scheduling.booking_page.view/.manage - Termine:
scheduling.appointment.view_own/.view_any/.manage/.reschedule
Modul-Flag: module.scheduling. Die Einrichtung führt Sie unter Einrichtung durch die Reihenfolge.
FAQ & Fehlerbilder
Es werden keine freien Zeiten angezeigt. Prüfen Sie Zeitplan, Vorlauf und Puffer — oft ist der Vorlauf länger als der angezeigte Zeitraum.
Ein Termin aus dem Fremdkalender fehlt. Prüfen Sie die Verbindung. Fällt sie aus, gilt weiterhin, was im System steht — Sie sind also nicht ungeschützt, aber die Fremdtermine fehlen.
Zwei Buchungen auf denselben Slot. Möglich, wenn beide im selben Moment abgeschlossen werden. Setzen Sie einen Puffer, wenn das öfter vorkommt.