Embeds

Embeddable scheduling widget for your website

One script tag. Inline calendar, popup from any button, or a floating "Book a meeting" button. If a visitor's browser blocks the script, they get a plain link to your booking page instead. And flat-rate pricing: no per-seat fees, ever.

Start free trial

15-day free trial · no credit card required

The whole install

Two lines of HTML. The link inside the div is the fallback if the script is blocked.

HTML
<script src="https://synqslot.com/embed.js" async></script>
<div data-synqslot="yourname/30min">
  <a href="https://synqslot.com/yourname/30min">Book a time</a>
</div>

How do you add a scheduling widget to a website?

Paste one <script> tag anywhere on the page, then a <div> with your booking link where the calendar should appear. The script turns that div into an auto-resizing iframe of your booking page; the plain link you leave inside the div is what visitors see if the script is blocked. It works on platforms that let you paste a script and HTML (WordPress, Webflow, Squarespace, Shopify, Framer, plain HTML, React), subject to each builder's plan rules; Wix runs pasted HTML inside its own frame and Notion takes only a URL. There is no per-seat fee and nothing extra to install.

  1. 1Create a booking link in SynqSlot (Dashboard → Booking links).
  2. 2Open Settings → Embed on your site and copy the snippet — it already has your link filled in.
  3. 3Paste it into your site builder's HTML/embed block and publish. Book a test meeting from the live page to confirm.

Live demo

This is the real widget, not a mockup.

It's installed on this page with the same two lines you'll paste on yours. This demo uses sample times: click through the whole flow, nothing is booked and no email is sent.

Source on this page: <div data-synqslot="demo/30min">

Install

Add it in 60 seconds

Paste the script once, then a div wherever the calendar should appear. Your own snippet, with your booking link filled in, is in Settings → Embed.

1. The script — once per page, anywhere

HTML
<script src="https://synqslot.com/embed.js" async></script>

2. The div — where the calendar goes (replace yourname/30min with your booking link)

HTML
<div data-synqslot="yourname/30min">
  <a href="https://synqslot.com/yourname/30min">Book a time</a>
</div>

Instructions for your platform

The same snippet everywhere — only where you paste it changes.

Add the scheduling widget to WordPress

  1. 1Open the page or post in the block editor and click the + button where you want the calendar.
  2. 2Search for the Custom HTML block and add it.
  3. 3Paste both lines below into the block.
  4. 4Click Update (or Publish) and check the published page, not only the editor.
HTML
<script src="https://synqslot.com/embed.js" async></script>
<div data-synqslot="yourname/30min">
  <a href="https://synqslot.com/yourname/30min">Book a time</a>
</div>

Self-hosted WordPress keeps the script only for users allowed to post unfiltered HTML (typically Administrators). WordPress.com strips scripts from the Custom HTML block unless the site is on a paid plan with plugins/hosting features enabled. Using Elementor or another page builder? Use its HTML widget. Adding the widget to many pages? Put the script line in a header-and-footer plugin and just the div on each page.

Three ways to embed

Inline calendar, popup, floating button — or a routing form

Inline puts the calendar in the page. Popup opens it from any button or link. The floating button sits in the corner of every page, like a chat widget. Routing forms embed inline or as a popup — see smart routing for how forms send each visitor to the right calendar. Try two of them live:

Try the popup

Inline booking widget

The calendar renders in the page, in a container you control. Best for contact, demo and service pages where the visitor has already decided to talk.

data-synqslot
<div data-synqslot="yourname/30min">
  <a href="https://synqslot.com/yourname/30min">Book a time</a>
</div>

Popup booking widget

Put the attribute on any button or link — a hero CTA, a navbar item, a pricing-page button — and the calendar opens in an overlay when clicked. Escape or a click outside closes it.

data-mode="popup"
<a href="https://synqslot.com/yourname/30min" data-synqslot="yourname/30min" data-mode="popup">
  Book a time
</a>

Floating "Book a meeting" button

One script tag, nothing else. A persistent button sits in the bottom corner of every page it is on (like a chat widget) and opens the calendar. data-text, data-color and data-position="left" set the label, colour and side.

data-synqslot-float
<script src="https://synqslot.com/embed.js" async
  data-synqslot-float="yourname/30min"
  data-text="Book a meeting"
  data-color="#4F46E5"></script>

Inline routing form

A routing form in the page instead of a single calendar: it asks a couple of questions and sends each visitor to the right person or booking link.

data-synqslot-form
<div data-synqslot-form="discovery-call">
  <a href="https://synqslot.com/r/discovery-call">Book a call</a>
</div>

Popup routing form

Put the attribute on a button or link and the form opens in an overlay when clicked — Escape or a click outside closes it. Ideal for pricing pages and navigation bars.

data-mode="popup"
<a href="https://synqslot.com/r/discovery-call" data-synqslot-form="discovery-call" data-mode="popup">
  Book a call
</a>

Screenshots

What you'll see in the product

Unedited captures from a SynqSlot account — the embed settings page and the widget running on a page.

SynqSlot dashboard, Settings → Embed on your site: the two-line snippet with the account's booking link filled in and a Copy button
Settings → Embed on your site. The snippet is generated with your booking link; copy it as-is.
The SynqSlot booking widget rendered inline on a web page, showing the month calendar and the day's available times
The widget inline on a page: month grid on the left, the selected day's times on the right, resized to fit.

Limitations

What the widget doesn't do (yet)

Read this before you commit to a layout. These are current limits, not fine print.

  • The floating button is one per page: a second data-synqslot-float declaration is ignored. Put it on the script tag (or one element), not in a repeated template partial.
  • It is an iframe, not native markup. Your site's CSS can't restyle the inside of the calendar; branding is the booking link's accent colour and the optional "Powered by" mark.
  • Widgets are initialised once, when the page loads. If your app adds the div later (single-page apps, tabs that mount on click), append a fresh embed.js script after the div exists — the React snippet below shows how.
  • The frame starts at 700 px tall and shrinks or grows once the booking page reports its height, so there is a brief layout shift on first paint.
  • Prefill comes from your page's query string (?name=&email=&company=), not from attributes on the div.
  • Booking inside the widget needs third-party iframes to be allowed. A browser set to block all third-party frames shows the fallback link instead of the calendar.
  • If your site sends a Content-Security-Policy header, you must allow script-src and frame-src https://synqslot.com or the widget will be blocked.

Compared

Why teams choose it over Calendly's embed

The widget is the same product as the hosted booking page — every feature the page has, the embed has.

FeatureSynqSlotCalendly embed
PricingFlat rate — $6/mo solo, $27/mo for up to 5 people, $35/mo for up to 10Per seat — every host who takes bookings is a paid seat
If the script is blockedThe plain booking link you put inside the div shows instead, and opens the hosted booking pageNot compared here — see Calendly's embed docs
Auto-resizing iframeYes — grows to fit each step (it does not shrink back, and on narrow screens the time list scrolls in its own box)Yes
Prefill from the page URLYes — ?name=&email=&company= on your page are forwarded automaticallyYes — via URL parameters or embed options
Remove the vendor's brandingEvery planPaid plans only
Custom intake questionsEvery plan, inside the widgetYes
Works on any CMSYes — anywhere you can paste HTMLYes

Calendly details reflect its public plans and embed documentation at the time of writing; check calendly.com for current terms.

FAQ

Embedding questions, answered

Does the scheduling widget work without JavaScript?

Partly, and it depends on how it's installed. With the standard install, embed.js has to run to create the calendar: if a visitor's browser blocks it or has JavaScript off, they see the plain booking link you put inside the div, which opens your hosted booking page. The booking page itself (hosted, or inside the frame) is rendered on the server and built so a visitor can pick a day and time and submit the form without JavaScript; we haven't re-run that full no-JavaScript booking end to end since October 2026, so treat it as a fallback rather than a guarantee.

Will the embed slow down my website?

embed.js is small and loaded with async, so it doesn't block your page from rendering, but the calendar is a full booking page loaded in an iframe, which does add requests. Measure on your own page before and after (Lighthouse or your browser's network panel). The script sets no cookies on your domain and the widget loads no analytics tags; check with your own adviser whether your cookie notice needs to mention an embedded third-party frame.

Can I match my brand colours?

Yes. Each booking link has its own accent colour (any hex value) that the widget uses, and you can remove the "Powered by SynqSlot" mark on every plan — there is no enterprise tier gating it.

Can I prefill the visitor's name or email?

Yes. embed.js forwards your page's query string into the widget, which reads name, email, company and jobTitle, so a link like yoursite.com/book?name=Jane&company=Acme arrives with those fields filled in. Other parameters (such as UTM tags) are passed along but not stored on the booking. Avoid putting personal data in public campaign links: anything in a URL can end up in browser history and analytics logs.

Does it work on WordPress, Webflow, Squarespace, Wix and Shopify?

Yes, with each builder's own limits. The two-line snippet works where you can paste a script plus HTML: WordPress (Custom HTML block; WordPress.com needs a plan with plugins enabled), Webflow (Code Embed; paid site or workspace plan), Squarespace (Code block; Core plan or above), Shopify (page HTML or Custom Liquid), Framer, Carrd (Pro Standard or above), plain HTML and React. Wix runs pasted HTML inside its own frame, so set the element's height yourself. Notion can't run scripts, so there you embed the widget's direct URL.

Is there a per-seat fee for embedding?

No. SynqSlot is flat-rate: Solo is $6/month, Team plans are $27/month for up to 5 people or $35/month for up to 10, and the embed is included on every plan with unlimited bookings.

What embed formats are available?

Three for a booking link and two for a routing form. Inline: the calendar renders in the page where you put the div. Popup: any button or link with data-mode="popup" opens the calendar in an overlay; the × button or a click outside closes it, and Escape works until the visitor clicks into the calendar. Floating button: one script tag with data-synqslot-float adds a persistent "Book a meeting" button in the corner of every page it is on, in the colour you choose. Routing forms can be inline or popup.

Can I embed a routing form instead of a single calendar?

Yes. Use data-synqslot-form="your-form-slug" on a div for an inline form, or on a link with data-mode="popup" to open the form in an overlay when it's clicked. The form asks its questions and sends each visitor to the right calendar.

Can I put more than one booking widget on a page?

Yes. Add the script once and as many divs as you like — one per booking link. embed.js initialises every data-synqslot and data-synqslot-form element it finds, and each one resizes independently.

Want the long version? Read the step-by-step embedding guide. Platform guides: Webflow, Framer, Squarespace, WordPress, Notion. Comparing tools? The best embeddable scheduling widgets in 2026.

Live in 60 seconds

Ready to try it?

Start your 15-day free trial — full access, no credit card required.