Widget einbetten
Das Levy Bookings Widget ist ein winziges Dependency-freies JavaScript-Bundle (ca. 6 KB) auf widget.levyelectric.com/v1.js. Es injiziert ein sicheres iframe, das auf Ihre gehostete Buchungsseite zeigt.
Funktioniert auf:
- Squarespace, Wix, Webflow, Shopify
- WordPress (jedes Theme mit Custom-HTML-Block)
- Hand-coded HTML / Next.js / React / Astro / Hugo / Jekyll
Das Script-Snippet
Schnellster Weg: aus dem Dashboard kopieren.
- Dashboard > Bookings > Widgets > {Ihr Widget} oeffnen.
- Embed-Code holen klicken.
- Modus waehlen (inline, modal, floating-button).
- Snippet kopieren und auf Ihre Seite einfuegen.
Das Snippet sieht so aus:
<!-- Inline Embed -->
<div id="levy-bookings"></div>
<script
src="https://widget.levyelectric.com/v1.js"
data-slug="front-beach-bikes"
data-mode="inline"
data-target="#levy-bookings"
data-theme="light"
async
></script>
Embed-Modi
Inline
Das Widget injiziert ein iframe in ein Zielelement. Nutzen Sie diesen Modus auf einer eigenen "Fahrrad buchen" Seite.
<div id="levy-bookings"></div>
<script
src="https://widget.levyelectric.com/v1.js"
data-slug="front-beach-bikes"
data-mode="inline"
data-target="#levy-bookings"
async
></script>
Das iframe passt seine Hoehe automatisch an, waehrend der Kunde durch die Schritte navigiert.
Modal
Das Widget injiziert ein verstecktes iframe und oeffnet es als Overlay-Modal beim Klick auf ein Element mit data-levy-book="open".
<button data-levy-book="open">Fahrrad buchen</button>
<script
src="https://widget.levyelectric.com/v1.js"
data-slug="front-beach-bikes"
data-mode="modal"
async
></script>
Floating Button
Das Widget zeigt einen festen "Jetzt buchen" Button unten rechts auf jeder Seite, die das Snippet enthaelt.
<script
src="https://widget.levyelectric.com/v1.js"
data-slug="front-beach-bikes"
data-mode="floating-button"
data-button-label="Fahrrad buchen"
data-button-position="bottom-right"
async
></script>
Referenz der Data-Attribute
| Attribut | Pflicht | Standard | Beschreibung |
|---|---|---|---|
src | ja | - | Muss https://widget.levyelectric.com/v1.js sein |
data-slug | ja | - | Ihr Widget-Slug |
data-mode | ja | inline | inline, modal, floating-button |
data-target | inline | #levy-bookings | CSS-Selektor des Host-Elements |
data-theme | nein | light | light, dark, minimal |
data-button-label | floating | Jetzt buchen | Text auf dem Button |
data-button-position | floating | bottom-right | bottom-right, bottom-left, top-right, top-left |
data-locale | nein | Browser | en, es, fr, de, pt erzwingen |
data-utm-source | nein | - | UTM-Parameter |
data-pixel-ga4 | nein | - | GA4 Measurement-ID |
data-pixel-meta | nein | - | Meta Pixel ID |
async | empfohlen | - | Skript nicht blockierend laden |
Conversion-Events
<script>
window.addEventListener('message', (event) => {
if (event.origin !== 'https://widget.levyelectric.com') return;
if (event.data?.type === 'levy:event') {
const { eventName, payload } = event.data;
console.log('Levy Buchungs-Event:', eventName, payload);
}
});
</script>
Mit data-pixel-ga4 oder data-pixel-meta werden Events automatisch weitergeleitet.
Eigene Domains
book.frankebikes.com statt fleets.levyelectric.com/book/{slug}:
- DNS CNAME von
book.frankebikes.comaufcname.levyelectric.comsetzen. - Support-Ticket mit gewuenschter Domain oeffnen. Wir bereitstellen TLS und Routing innerhalb eines Arbeitstags.
- Im Widget die Oeffentliche URL aktualisieren.
Squarespace
Squarespace blockiert <script> Tags in Textbloecken:
- Seite editieren.
- Code Block hinzufuegen.
- Snippet einfuegen.
Fuer Floating-Button-Modus in Einstellungen > Erweitert > Code Injection > Footer.
Wix
- Editor > + Elemente hinzufuegen > Embed Code > HTML einbetten.
- Snippet einfuegen.
WordPress
In einem Custom-HTML-Block (Gutenberg) oder Text-Widget einfuegen.
Shopify
- Themes > Code bearbeiten.
layout/theme.liquidoeffnen.- Snippet vor
</body>einfuegen.
Performance
Das Host-Skript ist ca. 6 KB und laedt mit async. Das iframe laedt lazy und beginnt mit Stripe.js erst beim Zahlungsschritt. TTI unter 200 ms auf 3G.
Erlaubte Origins
Bevor POST-Requests akzeptiert werden, listen Sie die Origins:
https://www.frankebikes.com
https://frankebikes.com
GET-Requests sind CORS-offen, nur POST-Requests brauchen Allowlist.
Apple Pay
Apple Pay in iframes wird unterstuetzt, weil das iframe auf widget.levyelectric.com laeuft, das fuer jedes verbundene Stripe-Konto als Merchant-Domain registriert ist.