Embed widget
Drop your booking page into any website with a single script tag. Two modes: inline (always visible) and popup (opens on a button click).
Where to get the snippet
On any scheduler's edit page, look for the Embed panel. It generates a copy-paste snippet pre-filled with your URL.
Inline mode
Renders the full booking UI right where you put the snippet. Auto-resizes as the user clicks around (no scrollbars inside the embed).
<div id="chosencal-embed"></div>
<script src="https://chosencal.com/embed.js"></script>
<script>
ChosenCal.inline({
url: "https://chosencal.com/book/yourname/30min",
target: "#chosencal-embed"
});
</script>Popup mode
Attaches a click handler to a button. When clicked, the booking widget opens as an overlay.
<button id="book-me">Book a call</button>
<script src="https://chosencal.com/embed.js"></script>
<script>
ChosenCal.popup({
url: "https://chosencal.com/book/yourname/30min",
trigger: "#book-me"
});
</script>Browser notes
The embed works in every modern browser. On Brave with strict shields, the iframe falls back to a "Open in new tab" button automatically — bookings still happen, just in a separate tab.
Styling
The widget inherits its own theme (light/dark follows the visitor's browser preference). The host page's CSS doesn't leak in and we don't leak out — it's a fully isolated iframe.
Self-hosters
Swap chosencal.com in the snippet for your own domain. The embed script is served from /embed.js on every chosencal install.