Integrations
Embed on your site
One script tag. Three drop-in modes. No build step, no framework dependencies.
Inline
Embed the booking flow directly inside any container on your page. The iframe auto-resizes to fit its content.
<div data-calee-inline="http://localhost:3000/u/demo/30min"></div>
<script src="http://localhost:3000/embed.js" async></script>Popup
Open the booking flow in a centred modal when an element is clicked. Closes with Escape or the corner button.
<button data-calee-popup="http://localhost:3000/u/demo/30min">Book a call</button>
<script src="http://localhost:3000/embed.js" async></script>Floating badge
Add a fixed bottom-right pill that opens the popup. Add the data-calee-badge attribute to the script tag itself.
<script src="http://localhost:3000/embed.js"
data-calee-badge="http://localhost:3000/u/demo/30min"
data-calee-badge-label="Book a call"
async></script>Listen for events
The widget posts window.parent.postMessage events with source: "caledee". Hook into them to fire analytics or redirect the visitor.
window.addEventListener("message", (e) => {
if (e.data?.source !== "caledee") return;
switch (e.data.type) {
case "ready": /* iframe loaded */ break;
case "resize": /* { height } */ break;
case "bookingScheduled": /* { bookingId, eventName, startAt, endAt } */ break;
case "bookingRescheduled":/* { bookingId, eventName, startAt, endAt } */ break;
}
});Need help? hello@caledee.com.