Guides

Termine und Buchungen

Vorlagen, Termine, Buchungsseite und Anmeldungen — und was genau im Postfach der Teilnehmenden landet.

Created 22 Aug 2026

Am Ende hast du ein Webinar, einen Workshop oder einen Kurs auf deiner Seite: buchbare Termine, echtes Geld, und du weißt, was bei den Angemeldeten ankommt.

Ein Event ist die Vorlage, ein Termin eine Ausgabe davon

Das Event ist das Wiederverwendbare — Name, Typ, Dauer, Preis, Zugriffsregeln, öffentliche Seite — und hat kein Datum. Ein Termin ist eine Ausgabe davon. Alle Termine teilen sich eine öffentliche Seite; ab zwei wählt die Besucherin im Schritt „Choose your date" aus. „Babyzeichen-Webinar dienstags" ist ein Event mit zwölf Terminen, nicht zwölf Events.

Die Reiter unter Admin → Events heißen andersherum, als man erwartet: Scheduled listet die datierten Termine, Events die Vorlagen, Event Pages ist der Seiten-Baukasten.

Das Event anlegen

Admin → Events, Reiter Events, Knopf New Event. Der Dialog heißt New Event Template und hat vier Reiter: General, Pricing, Cost & Profit, Permissions. (Hängst du ein Produkt an, verschwinden die beiden Geld-Reiter — das Produkt trägt Preis und Kosten selbst.)

Unter General stehen Name, Category, Image, Public Event und die Schalter für Bewertung und Testimonials, dazu diese, die über das Verhalten entscheiden:

  • Type — Webinar, Lesson, Workshop, Meetup, Conference, Other. Bestimmt das URL-Präfix: /webinars/, /lessons/, /workshops/, /meetups/, /conferences/, für Other /events/. Ein anderer Pfad löst nicht auf.
  • Duration (min) — ganze Zahl, und die Meeting-Länge, die Zoom bucht, falls angebunden.
  • Default Time — füllt bei einem neuen Termin das ganze Feld Date & Time vor, mit dem nächsten Vorkommen dieser Uhrzeit (heute, sonst morgen) in der Zeitzone deines Betriebs.
  • Meeting Link — der Einwahllink, den du selbst einträgst. Verschwindet, sobald Zoom angebunden ist und Meetings erzeugt.
  • Show on events page — aus heißt ungelistet: über den direkten Link buchbar, in der Übersicht nicht sichtbar.
  • Feature on home page — zeigt kommende Termine im Bereich „Upcoming events" der Startseite und blendet sich aus, sobald kein künftiger Termin mehr da ist.

Pricing — unter Payment Types stehen Free, Voluntary, One-time, Subscription, Installments; mehrere ankreuzen ist erlaubt, dann wählt die Besucherin. Preis-, Währungs-, Intervall- und Ratenfelder tauchen auf, sobald sie gebraucht werden.

Permissions — Permission bzw. Required Permission, Grant Permission, Linked product (optional) und Confirm Email Subscription. Letzteres trägt mit der Anmeldung jemanden, der sich früher abgemeldet hatte, wieder in den Verteiler ein und markiert neue Kontakte als angemeldet.

Die URL entsteht aus dem Namen, und Umbenennen ändert sie. Ein Adressfeld gibt es nicht. Benennst du ein laufendes Event um, ist jeder verteilte oder gedruckte Link tot — ein geänderter Type verschiebt die Seite ebenfalls. Entscheide beides, bevor du bewirbst. Ist die Adresse vergeben, hängt das System einen Zeitstempel an: lange, hässliche URL.

Mindestens einen Termin anlegen — vor jeder Bewerbung

Termine legst du vom Event aus an, nicht aus der Scheduled-Liste: im Reiter Events auf der Karte des Events Create Event drücken. Im Dialog Schedule Event musst du nur Date & Time ausfüllen. Der Reiter Scheduled sucht und filtert nur, er hat keinen Anlege-Knopf.

Eine öffentliche Event-Seite ohne Termin liefert 404 — keine leere Seite. Also erst Event, dann Termin, dann den Link herausgeben.

Duration, Meeting Link, die Zoom-Schalter (falls angebunden) und Currency sind aus der Vorlage vorbelegt, aber pro Termin änderbar. Bei einem bestehenden Termin kommen vier Felder dazu: Status, Public Event, Permission, Grant Permission — plus der TEST/LIVE-Schalter darunter.

  • Event Name ist im Termin schreibgeschützt. Der Name wurde beim Anlegen kopiert; benennst du die Vorlage später um, behalten bestehende Termine den alten Text.
  • Status — Draft, Scheduled, Live, Completed, Cancelled; neue Termine sind Scheduled. Öffentlich sichtbar und buchbar sind nur Scheduled und Live. Alles andere ist unsichtbar und weist die Anmeldung mit „Event not available for registration" ab.

Einen Generator für wiederkehrende Termine gibt es nicht. Ein wöchentliches Webinar heißt: jeden Termin von Hand anlegen.

Jeder neue Termin entsteht im TEST-Modus

Das ist der Schritt, der still Geld kostet. Neue Termine stehen immer auf TEST: Der Checkout läuft über deine Test-Schlüssel bei Stripe oder PayPal, abgebucht wird nichts. Der Dialog Schedule Event zeigt das nicht — den Schalter gibt es erst, wenn der Termin existiert.

Umstellen kannst du ihn mit dem Knopf TEST / LIVE auf der Event-Karte im Reiter Events — der schaltet alle Termine dieses Events auf einmal um und erscheint nur, wenn das Event nicht Free ist — oder mit demselben Schalter unten in einem einzelnen Termin.

Falsch herum sieht das so aus: ein „erfolgreicher" Kauf, der nie in deinem Live-Dashboard bei Stripe ankommt — oder, wenn nur Live-Schlüssel hinterlegt sind, ein Checkout, der mit Stripe is not configured abbricht. Schick eine echte Karte durch, bevor du wirbst.

Die Buchungsseite

Admin → Events → Event Pages zeigt eine Karte pro Event mit den Abzeichen Published und Unpublished changes; ein Klick führt in den Baukasten. Änderungen speichern automatisch in einen Entwurf, die Live-Seite ändert sich erst mit Publish (bzw. Republish, sobald sie live ist). Eine Seite, die du heute Morgen repariert hast, liefert also weiter die alte Fassung, bis du drückst — das Abzeichen in der Liste ist der Hinweis darauf.

Unangetastet rendert die Seite eine eingebaute Vorgabe: Navigation, Buchungsband mit drei Stichpunkten, leerer Block „What you'll get", Testimonials, FAQ mit zwei Fragen, Footer. Zwei ausgelieferte Zeilen versprechen etwas, das die Software nicht hält:

  • Der Stichpunkt „Limited seats so everyone gets answers". Eine Teilnehmerbegrenzung gibt es nirgends — keine Platzzahl, kein „ausgebucht", keine Warteliste. Ändern kannst du ihn unter Benefit checks in den Einstellungen des Buchungsabschnitts.
  • Die FAQ beantwortet „What if I can't make the date?" mit „…register anyway and we'll keep you posted." Es hält niemanden auf dem Laufenden; Erinnerungen gibt es nicht. Schreib das um.

In einer Übersicht taucht ein Event nur auf, wenn es öffentlich ist, Show on events page an ist und ein Termin im Status Scheduled oder Live von heute an existiert. /events ist die gemeinsame Übersicht über alle Typen. Die Detailseite zeigt den nächsten kommenden Termin, sonst den letzten vergangenen — ein gelaufenes Event nimmt sich nicht selbst vom Netz.

Zugriff beschränken

  • Das Event mit einem Produkt verknüpfen (Reiter Permissions). Dann ist die Berechtigung des Produkts die Hürde, und wer sie nicht hat, landet auf der Verkaufsseite dieses Produkts — dort kann er den Zugang kaufen.
  • Public Event ausschalten und eine Required Permission setzen. Wer sie nicht hat, bekommt /forbidden; nicht Angemeldete gehen vorher zum Login; Admins kommen immer durch. Das geht über zwei Reiter — Public Event steht unter General.

Grant Permission ist eine Auswahl mit zwei Werten, keine reine Teilnahme-Einstellung: Grant on signup ist der Standard, Grant on attendance die Alternative — wer eine Permission setzt und die Auswahl nie öffnet, vergibt bei der Anmeldung. Was heute tatsächlich passiert: Ein kostenpflichtiges Event vergibt bei der Zahlung, egal was dort steht; eine kostenlose Anmeldung vergibt gar nichts; das Teilnahme-Häkchen vergibt nur unter Grant on attendance. Soll ein kostenloses Event Zugang verteilen, stell also auf Grant on attendance und hak die Teilnahme später ab.

Was passiert, wenn sich jemand anmeldet

Die öffentlichen Formulare unterscheiden sich. Das Buchungsfeld auf der Event-Seite fragt bei einem kostenlosen Termin Email Address, First Name, Last Name und Phone Number; ist der Termin kostenpflichtig oder auf Voluntary gestellt, fragt dasselbe Feld nur Email Address, First Name, Last Name — ohne Telefon. Das kleine Fenster von der Event-Karte auf der Startseite (es steckt auch hinter Event-Blöcken auf Produktseiten) fragt First name, Last name, Email. Pflicht ist überall nur die E-Mail.

  • Die Adresse wird normalisiert (klein, getrimmt, @googlemail.com wird zu @gmail.com), ein Kontakt gesucht oder mit der Rolle Lead angelegt. Ohne Vornamen steht dort wörtlich Guest.
  • Bei einem bestehenden Kontakt füllt die Anmeldung nur Lücken: Vorname nur, wenn er leer ist oder Guest lautet, Nachname und Telefon nur, wenn sie leer sind. Ein Spitzname überschreibt den echten Namen nicht.
  • Eine Anmeldung pro Person und Termin, in der Datenbank erzwungen.

Am Telefonfeld steht „(for reminders)", und sobald eine Nummer getippt ist, druckt das Formular „Access link by email · SMS reminders". Erinnerungen und SMS gibt es in der Plattform nicht — an keiner Stelle. Du sammelst Nummern für ein Versprechen, das nichts einlöst.

Eine stornierte Anmeldung blockiert die erneute Anmeldung. Die Dublettenprüfung schaut nicht, ob die frühere storniert war; wer es sich anders überlegt, bekommt „You're already registered for this event". Auf denselben Termin zurück kommt er nur per Umbuchung von einem anderen, noch aktiven Termin desselben Events — dabei wird die stornierte Anmeldung wieder aktiviert. Aus einer stornierten Anmeldung heraus geht keine Umbuchung, und im Admin nimmt kein Knopf eine Stornierung zurück.

Bei kostenpflichtigen Events entsteht die Anmeldung erst nach erfolgreicher Zahlung. Ein abgebrochener Checkout hinterlässt nichts — in der Teilnehmerliste findest du niemanden, der angefangen und aufgehört hat.

Was die Angemeldeten tatsächlich bekommen

Die Bestätigungsmail verschickt nicht der Anmelde-Code. Eine Anmeldung schreibt die Aktion event-registration an den Kontakt; eine System-Automation namens „Event Registration Confirmation" greift sie auf und verschickt die Vorlage event-registration. Ausgeliefert werden drei Vorlagen: Anmeldung, Stornierung, Umbuchung.

Abschalten kannst du das nicht — System-Automationen lassen sich weder bearbeiten noch pausieren, archivieren oder löschen. Der Haken ist leiser: Die Automation wird angestoßen und danach nicht mehr geprüft. Scheitert sie oder der Versand, landet das im Server-Log, während die Anmeldung Erfolg meldet — die Buchung sieht tadellos aus, angekommen ist nichts. Meldet jemand Funkstille, prüf Mail-Konfiguration und Server-Log, nicht die Anmeldung.

Event-Vorlagen kennen diese Platzhalter:

{{eventName}} {{eventDate}} {{eventTime}} {{eventLocation}} {{eventType}}
{{joinUrl}} {{meetingId}} {{meetingPasscode}}
{{recordingUrl}} {{recordingPasscode}}
{{cancelUrl}} {{confirmationUrl}}
{{oldEventDate}} {{newEventDate}} {{newEventTime}}
  • Die ausgelieferte Anmeldevorlage führt {{joinUrl}} nicht. Der Zoom-Einwahllink geht trotzdem raus — {{eventLocation}} enthält ihn und steht hinter „Location:", als nackter Text statt als Knopf. Wer einen erkennbaren Link will, trägt {{joinUrl}} (bei Bedarf plus {{meetingId}} und {{meetingPasscode}}) selbst in die Vorlagen Event Registration Confirmation und Event Reschedule Confirmation ein. Zweite Falle: Ist das Meeting noch nicht angelegt oder scheitert das Eintragen der Person, stellt das System einen neuen Versuch in die Warteschlange und liefert solange den gemeinsamen Meeting-Link. Die Mail geht sofort raus mit dem, was da war — der Einwahllink kann also still der allgemeine statt der persönliche sein.
  • {{confirmationUrl}} löst nur bei Events vom Typ Other auf — sonst 404. Keine ausgelieferte Vorlage benutzt ihn, er beißt also nur, wenn du ihn selbst einbaust. Lass es: {{cancelUrl}} funktioniert für jeden Typ und steckt schon hinter „Manage your booking".
  • {{eventLocation}} fällt auf „Online" (Webinare) oder „TBA" (alle anderen Typen) zurück, wenn es weder Zoom-Link noch manuellen Meeting-Link gibt. „TBA" lesen die Angemeldeten wörtlich.

Es gibt keinen Kalenderanhang und keinen „Zum Kalender hinzufügen"-Knopf — nirgends wird eine .ics-Datei erzeugt. Schreib Datum und Uhrzeit deutlich in den Text.

{{cancelUrl}} erzeugt /events/manage/r/<registrationId> — die einzige Verwaltungs-URL, die in der Plattform überhaupt entsteht. Eine zweite Form, /events/manage/<slug>?email=<Adresse>, existiert, wird aber nirgends verlinkt; ohne Adresse meldet sie fehlende Angaben.

Diese Registrierungs-ID ist der einzige Schlüssel. Kein Login, keine Rückfrage: Wer die URL hat, sieht Name und E-Mail der buchenden Person und kann stornieren oder umbuchen. Ein starkes Geheimnis ist die ID auch nicht — Zeitstempel plus kurzer Anhang aus einem gewöhnlichen, nicht kryptografischen Zufallsgenerator. Sie kann also nicht nur weitergereicht, sondern auch geraten werden. Nie in eine öffentliche Seite, einen geteilten Thread oder einen Screenshot.

Umgebucht wird nur auf einen anderen künftigen Termin desselben Events. Wie oft, ist nicht begrenzt, und eine Stornofrist gibt es nicht — storniert werden kann noch Minuten vor Beginn.

Stornieren erstattet nichts und beendet kein Abo. Beide Storno-Wege markieren die Anmeldung als storniert, entfernen den Zoom-Registranten und verschicken die Stornomail. Erstattungen sind eine getrennte, manuelle Aktion im Admin; ein Abo oder eine Ratenzahlung läuft weiter, bis du sie beim Zahlungsanbieter beendest. Dürfen zahlende Teilnehmende selbst stornieren, brauchst du eine Routine, die prüft, was zu erstatten ist.

Eine Kante am E-Mail-Weg: Die Seite lädt mit der normalisierten Adresse, storniert aber mit der Adresse genau so, wie sie getippt wurde. Andere Groß- und Kleinschreibung — oder @googlemail.com, wo @gmail.com gespeichert ist — lädt sauber und scheitert dann an „Contact not found". Storniere in dem Fall im Admin.

Teilnahme

Das Häkchen ist tot, solange der Termin nicht vorbei ist. Es bleibt deaktiviert und ausgegraut, bis dateTime + Dauer in der Vergangenheit liegt; der Tooltip sagt „Attendance can only be marked after the event ends". Wer eine Testbuchung vor dem Termin anlegt und das Kästchen nicht anklicken kann, hat keinen Fehler gefunden, sondern genau dieses Verhalten.

Das Häkchen im Teilnehmerbereich des Termins setzt das Anwesenheitskennzeichen, hängt dem Kontakt ein Tag an (Eventname, klein und mit Bindestrichen, plus -attended) und vergibt die Berechtigung des Events, falls Grant Permission auf Grant on attendance steht. Entfernst du es wieder, gehen Kennzeichen und Tag zurück, erfasste Beitrittszeit und Zuschauerdauer bleiben stehen.

Vor dem Ende des Termins geht das nicht. Bis Startzeit plus Duration verstrichen sind, ist das Häkchen ausgegraut; im Tooltip steht „Attendance can only be marked after the event ends".

Von Hand abhaken löst die Teilnahme-Automationen nicht aus. Die Auslöser event-attended, event-joined und event-no-show kommen ausschließlich aus den Zoom-Webhooks. Bau eine Nachfass-Strecke auf „Event Attended", setz die Teilnahme von Hand — und sie läuft stillschweigend nie an; das Symptom ist eine Automation mit null Anmeldungen und nirgends ein Fehler. Dafür muss Zoom angebunden sein und seine Webhooks müssen ankommen.

Zeiten und Zeitzonen

Zeiten werden ohne Zeitzone gespeichert; eine einzige betriebsweite Zeitzone in den allgemeinen Einstellungen bestimmt die Anzeige, ausgeliefert mit Europe/London. Zeitzonen pro Event oder pro Person gibt es nicht, und die Grenze „kommend" richtet sich nach dem Kalendertag des Servers. Bevor du über eine Zeitumstellung hinweg oder für einen anderen Kontinent planst: Leg auf deiner Installation einen Termin an und schau nach, ob die öffentliche Seite die Uhrzeit zeigt, die du gemeint hast.

Was es nicht gibt, damit du nicht danach suchst

Teilnehmerbegrenzung, Platzzahlen, „ausgebucht", Wartelisten, wiederkehrende Termine, Erinnerungsmails, SMS, ein Limit fürs Umbuchen, Stornofristen. Und nichts Kalenderbezogenes: Die Integrationsseite im Admin wirbt mit „Calendar sync for scheduled events" und führt eine Google-Meet-Integration — beides ist nicht gebaut.

Was this helpful?

Comments