Find sections across all documentation pages
Choose from three embedding methods based on your website layout and user experience preferences.
Best for: Dedicated booking pages, sites with plenty of vertical space, simple implementation, WordPress, Wix, Squarespace, and other CMS platforms.
The widget loads directly on the page in an iframe. Customers can see the full booking interface immediately.
data-height attribute if needed for your layoutPlatform-Specific Instructions
WordPress: Use the "Custom HTML" block and paste the code
Wix: Add an "Embed a Site" element and paste the iframe URL
Squarespace: Use a "Code Block" and paste the embed code
Shopify: Edit your theme and paste the code in the desired template
Best for: Sites where you want to preserve existing layout, adding booking to multiple pages via a button, mobile-optimized booking experience, similar UX to Calendly or OpenTable.
A button appears on your page. When clicked, the widget opens in a slide-out panel from the right side of the screen. The widget loads only when needed (faster page load).
</body> tag)You can add multiple booking buttons on the same page. Each button works independently with its own slide-out panel. Add multiple div elements with different settings — only include the script tag once.
Example: Multiple Buttons
<!-- Button 1: Haircut -->
<div data-bookerkit-widget="your-account"
data-mode="button"
data-button-text="Book Haircut">
</div>
<!-- Button 2: Massage -->
<div data-bookerkit-widget="your-account"
data-mode="button"
data-button-text="Book Massage"
data-background-color="#10b981">
</div>
<!-- Only include the script once -->
<script src="https://www.bookerkit.com/embed.js" defer></script>Best for: Developers who want full control over the trigger button styling, using existing design systems, or integrating with frameworks like React, Vue, or Tailwind CSS.
Instead of using the default styled button, you can place your own HTML element inside the container. The embed script will detect your custom element and use it as the trigger, giving you complete styling control.
<!-- Custom button trigger -->
<div data-bookerkit-widget="your-account" data-mode="button">
<button class="my-custom-button">
Book Appointment
</button>
</div>
<script src="https://www.bookerkit.com/embed.js" defer></script>Any clickable element can be used as a trigger:
<button> — Standard button element<a> — Link styled as a button<div> — Custom styled container<span> — Inline trigger element<!-- Tailwind styled button -->
<div data-bookerkit-widget="your-account" data-mode="button">
<button class="bg-blue-600 hover:bg-blue-700 text-white font-semibold py-3 px-6 rounded-lg shadow-md transition-colors">
Schedule Now
</button>
</div><!-- Link trigger -->
<div data-bookerkit-widget="your-account" data-mode="button">
<a href="#" class="text-blue-600 underline hover:text-blue-800">
Click here to book →
</a>
</div>Customize the embed behavior using data attributes on the container element. These override your default widget settings per-embed.
| Attribute | Description | Example |
|---|---|---|
data-bookerkit-widget | Your account ID or slug (required) | "your-account" |
data-mode | Embed mode: "iframe" or "button" | "button" |
data-button-text | Button label text | "Book Now" |
data-background-color | Button background color | "#3b82f6" |
data-text-color | Button text color | "#ffffff" |
data-border-radius | Button corner rounding | "8px" |
data-height | iframe height (iframe mode only) | "800px" |
data-sheet-title | Override the widget header title | "Book a Session" |
data-sheet-description | Override the widget header description | "Limited time offer" |
data-service-id | Pre-select a service (skips service selection step) | "service-uuid" |
data-service-category | Custom category for tracking and webhooks | "Hair Services" |
Pre-Selecting a Service
Use data-service-id to skip the service selection step entirely. This is useful when you have dedicated pages for specific services:
<!-- Direct booking for a specific service -->
<div data-bookerkit-widget="your-account"
data-mode="button"
data-button-text="Book Haircut"
data-service-id="your-service-uuid"
data-service-category="Hair Services">
</div>The widget automatically captures UTM parameters from your page URL for marketing attribution. If a customer lands on your site via a Google Ad or Facebook campaign, those parameters will be tracked with the booking session.
Supported Parameters:
In addition to UTM parameters, the widget captures ad platform click IDs (gclid, fbclid, msclkid) automatically. All tracking data is included in webhook payloads and stored with the booking session. See the Analytics & Session Tracking section for the full list of captured data.