HTML-Seitenstruktur
Minimale Seitenstruktur mit Header, optionaler Sidebar und einem Widget im Hauptbereich.- Das Script wird einmal im
<head>geladen. a-login-buttonunda-cart-modal-buttongehören in den Header, damit sie auf allen Seiten sichtbar bleiben.- Ersetze das Panel durch ein Seiten-Widget mit
fullscreen="true"undnav-height, wenn die Buchung die gesamte Viewport-Höhe füllen soll (siehe Ganzseitige Widgets weiter unten).
Ganzseitige Widgets
Seiten-Widgets eignen sich, wenn das Widget den Hauptinhalt der Seite darstellt. Seiten-Widgets:a-organization-pagea-organization-mapa-organization-calendara-resource-pagea-resource-mapa-resource-calendara-service-pagea-subscription-pagea-package-pagea-my-bookings
Empfohlene Integration für ganzseitige Layouts
Verwendefullscreen="true", damit das Widget die verfügbare Viewport-Höhe ausfüllt. Wenn deine Website einen festen Header hat, übergib zusätzlich nav-height, damit das Widget nicht darunter gerendert wird.
fullscreen="true"entsprichtheight: 100vh.nav-heightändert das aufcalc(100vh - nav-height).- Wenn du
heightsetzt, wird die automatische Größenanpassung deaktiviert und der iframe hat eine feste Höhe. - Für
*-page, Map-, Kalender- unda-my-bookings-Widgets sind ganzseitige Layouts in der Regel die sauberste Integration.
Organization-Map und Organization-Kalender
Diese sind Seiten-Widgets, keine Modal-Buttons. Behandle sie wie einen vollständigen Seitenbereich.a-organization-page.
Panels
Booking-Panels sind bewusst kompakt gehalten und sperren die Navigation. Panel-Widgets:a-resource-booking-panela-service-booking-panel
- Panels verwenden immer dynamische Höhe.
- Externe
height- undfullscreen-Werte werden ignoriert. - Panels sind dazu gedacht, den Buchungsfluss in dein eigenes Seitenlayout einzubetten.
Externe Zahlungen im Widget
Wenn Kund:innen im eingebetteten Checkout eine Zahlungsmethode wählen, die anny verlässt (PayPal, iDEAL, giropay, Sofort, Bancontact, EPS, Przelewy24, TWINT), öffnet das Widget die Zahlungsseite in einem zentrierten Popup. Karte und SEPA bleiben im Widget (Stripe-Overlay). Der Hinweis im Checkout lautet: Deine Buchung muss online bezahlt werden. Dafür wird sich ein neues Fenster öffnen in dem du die Bezahlung durchführen kannst. Danach wird sich das Fenster automatisch schließen. Blockiert der Browser das Popup, läuft die Zahlung im Widget weiter. Das Host-Dokument der Website wird nicht navigiert.Login-Button und Warenkorb-Button
Diese zwei Komponenten werden unter Organisation → Einstellungen → Buchungsseite → Globale Komponenten konfiguriert. Sie sind als gemeinsame Steuerelemente gedacht, die sich in der Regel im Site-Header oder in einer fixen Navigationsleiste befinden.Login-Button
Verwendea-login-button, wenn du ein gemeinsames Login/Logout-Element benötigst, das mit der Widget-Session synchron bleibt.
- Lädt einen eigenen Login-iframe.
- Wechselt automatisch in den eingeloggten Avatar-Zustand.
- Sendet Auth-Änderungen weiter, damit benachbarte Widgets ihren Authentifizierungszustand aktualisieren.
- Haupt-Site-Header
- Mobile Navigation Drawer
- Obere Leiste auf Buchungs-Landingpages
Warenkorb-Button
Verwendea-cart-modal-button, wenn Nutzer Artikel aus Booking-Widgets hinzufügen und später auschecken sollen.
- Zeigt eine Live-Badge mit der Artikelanzahl.
- Bleibt mit benachbarten Widgets auf derselben Seite synchron.
- Öffnet den Checkout in einem Modal-Overlay.
a-resource-booking-panelzusammen mita-cart-modal-button- Mehrere Booking-Widgets auf einer Seite mit einem gemeinsamen Warenkorb-Button
Events und Tracking
Die meisten Embed-Widgets leiten Buchungs-Lifecycle-Events als DOM Custom Events weiter. Trifft für alles aus den Login-Button zu. Unterstützte Event-Namen:view-pageadd-to-cartstart-checkoutcomplete-checkout
event_namevaluegross_valuetaxcurrencytransaction_iditems
a-login-buttonunda-cart-modal-buttonsind Hilfs-Widgets und senden keine Buchungs-Events.- Seiten-Widgets, Maps, Kalender, Booking-Panels und checkout-orientierte Seiten senden Buchungs-Events.
- Subscription- und Package-Widgets senden checkout-fokussierte Events. In der Praxis sind
view-page,start-checkoutundcomplete-checkoutdie relevantesten.
UTM-Parameter und Click-IDs
Für Attribution musst du nichts weiter tun. Wenn ein Widget lädt, liest es den Query-String der übergeordneten Seiten-URL aus und leitet diese Parameter automatisch in den eingebetteten iframe weiter:
Wenn ein Nutzer also über
?utm_campaign=fruehling&gclid=abc123 auf deine Seite kommt, trägt das Widget diese Werte durch den gesamten Buchungsfluss – Conversion-Tracking funktioniert ohne zusätzliche Konfiguration.
Es ist kein HTML-Attribut erforderlich – die Weiterleitung erfolgt automatisch bei jedem Widget-Ladevorgang.
Start- und Enddatum
Die meisten Widgets akzeptierenstart (und manchmal end), um Kalender oder Karte auf einen bestimmten Datumsbereich vorzunavigieren.
ISO-8601-Datumsstring – exaktes Datum:
a-resource-calendar und a-organization-calendar, die ISO 8601 erfordern.
end erwartet immer einen ISO-8601-Datumsstring.
Anpassungsoptionen nach Widget-Typ
Dieser Abschnitt dokumentiert die öffentlichen HTML-Attribute. Admin-generierte Snippets decken in der Regel die wichtigsten davon bereits ab.Gemeinsame Attribute für Embed-Widgets
Gilt für Seiten-Widgets und Panel-Widgets. Nicht anwendbar auf Button-Widgets.
Alle Embed-Widgets akzeptieren zusätzlich die Design-Attribute aus
WIDGET_DESIGNING.md.
Organization-Widgets
a-organization-page
Hinweis:
- Die Option „Kalender-Board” im Admin entspricht
calendar-view="list".
a-organization-calendar
a-organization-map
Ressource-Widgets
a-resource-page
a-resource-calendar
a-resource-map
a-resource-booking-panel
Service-Widgets
a-service-page
a-service-booking-panel
Subscription- und Package-Widgets
a-subscription-page
a-subscription-button
a-package-page
a-package-button
Button-Widgets
Gilt für:a-organization-buttona-resource-buttona-service-buttona-subscription-buttona-package-buttona-modal-buttona-cart-modal-button
Gemeinsame Modal-Attribute
Trigger-Attribute für Entity-Buttons
Gilt für:a-organization-buttona-resource-buttona-service-buttona-subscription-buttona-package-button
a-modal-button ist anders:
- kein
label-Prop - keine eingebauten Trigger-Styling-Props
- verwende ein eigenes Element im Slot als Trigger
Eigener Trigger (Slot)
Alle Button-Widgets akzeptieren einen Standard-Slot, der den eingebauten Trigger ersetzt. Nutze das, wenn du den Trigger selbst gestalten oder ein anderes Element als Button verwenden möchtest.label, button-background, button-text und button-width ignoriert. Klick- und Tastatursteuerung werden weiterhin vom Widget-Wrapper übernommen.
a-resource-button
a-service-button
a-organization-button
a-modal-button
Verwende diesen Button, wenn du einen eigenen Modal-Trigger ohne entity-spezifische Button-Komponente benötigst.
Hilfs-Widgets
a-cart-modal-button
a-login-button
a-my-bookings
Hinweis:
a-my-bookingserfordert immer eine Authentifizierung.should-loginist nicht verfügbar, da Login obligatorisch ist.
Externe Zahlung im eingebetteten Checkout
Wenn Kund:innen im Widget mit einer externen Zahlungsmethode bezahlen (zum Beispiel PayPal, iDEAL, Giropay, Sofort, Bancontact, EPS, Przelewy24 oder TWINT), öffnet anny die Zahlungsseite in einem eigenen, zentrierten Fenster. Deine Website und das Widget bleiben geöffnet, der Checkout behält die eingegebenen Daten. Karten- und SEPA-Zahlungen bleiben im Widget. Wird das Zahlungsfenster vom Browser blockiert, läuft die Zahlung stattdessen im Widget selbst weiter. Schließt jemand das Fenster, bevor die Zahlung fertig ist, erscheint der Hinweis, dass die Zahlung nicht durchgeführt werden konnte.Empfehlungen
- Nutze zuerst das Admin-generierte Snippet und verfeinere es manuell nur wenn nötig.
- Verwende Seiten-Widgets für dedizierte Buchungsseiten.
- Verwende Panels für redaktionelle Seiten rund um den Buchungsfluss.
- Verwende Button-Widgets, wenn die Buchung erst nach einem Klick sichtbar sein soll.
- Platziere
a-login-buttonunda-cart-modal-buttonan stabilen, gut sichtbaren Stellen im UI. - Bevorzuge
drawerfür Desktop-seitige Checkout-Flows undfullscreenfür mobile Erlebnisse.