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.