Embeds
Embeddable scheduling widget for your website
One script tag, inline widget or popup form. Works without JavaScript — the first available times are already in the HTML. And flat-rate pricing: no per-seat fees, ever.
Start free trial15-day free trial · no credit card required
The whole install
Two lines of HTML. The link inside the div is the no-JavaScript fallback.
<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>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. Feel free to book a 15-minute walkthrough with the founder.
Source on this page: <div data-synqslot="mandeep/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
<script src="https://synqslot.com/embed.js" async></script>2. The div — where the calendar goes (replace yourname/30min with your booking link)
<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
- 1Open the page or post in the block editor and click the + button where you want the calendar.
- 2Search for the Custom HTML block and add it.
- 3Paste both lines below into the block.
- 4Click Update (or Publish) and view the page — the block editor's preview doesn't run scripts, so check the live page.
<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>Using Elementor or another page builder? Use its HTML widget instead. Adding the widget to many pages? Put the script line in your theme's footer-scripts field (or a header-and-footer plugin) and just the div on each page.
Add the scheduling widget to Webflow
- 1In Project Settings → Custom Code, paste the script line into Footer Code and save.
- 2Open the page in the Designer and drag an Embed element (Add panel → Components) to where the calendar should go.
- 3Paste the div into the Embed element and save.
- 4Publish the site. Custom code only runs on the published site, not in the Designer preview.
<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>Skipping Footer Code? Paste both lines into the single Embed element instead — it works the same on one page.
Add the scheduling widget to Squarespace
- 1Edit the page and add a Code block where the calendar should appear.
- 2Paste both lines below into the Code block (leave the type set to HTML).
- 3Save and view the live page.
<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>Code blocks need a Squarespace Business plan or higher. For a site-wide install, put the script line in Settings → Advanced → Code Injection → Footer.
Add the scheduling widget to Wix
- 1In the editor, click Add Elements → Embed Code → Embed HTML.
- 2Choose Code, paste both lines below, and click Update.
- 3Resize the element so the calendar has room — about 750px tall on desktop.
- 4Publish the site.
<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>Wix runs custom HTML inside its own fixed-size frame, so the widget can't grow the Wix element automatically — give it enough height. Alternatively use Embed a Site with the direct widget URL synqslot.com/embed/yourname/30min.
Add the scheduling widget to Framer
- 1Press Insert and add an Embed component to the page.
- 2Set the Embed type to HTML and paste both lines below.
- 3Set the component's width to fill and give it a starting height (around 750px).
- 4Publish.
<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>If the calendar appears clipped on the published site, increase the Embed component's height — some builders render custom HTML in a fixed-size frame.
Add the scheduling widget to Shopify
- 1Go to Online Store → Pages and open the page (or create one, e.g. "Book a call").
- 2In the content editor, click the <> (Show HTML) button.
- 3Paste both lines below where the calendar should go and click Save.
<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>Prefer the theme editor? Add a Custom Liquid section and paste the same two lines.
Add the scheduling widget to Carrd
- 1Add an Embed element to the page.
- 2Set Type to Code and Style to Inline.
- 3Paste both lines below and save. Publish the site.
<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>Embed elements need a Carrd Pro plan.
Add the scheduling widget to Notion
- 1Notion pages can't run scripts, so use the widget's direct URL instead.
- 2Type /embed on the page and choose Embed.
- 3Paste the URL below and press Enter.
- 4Drag the frame's bottom edge to make it tall enough — Notion won't auto-resize it.
https://synqslot.com/embed/yourname/30minThis is a plain iframe embed: the calendar works, but there's no script, so no auto-resize.
Add the scheduling widget to Plain HTML
- 1Paste the script line once, anywhere on the page (just before </body> is conventional).
- 2Paste the div where the calendar should appear. Add more divs for more booking links — the one script handles all of them.
- 3Deploy. The link inside the div shows if the script is blocked, so nothing on the page breaks.
<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>Add the scheduling widget to React / Next.js
- 1Create a client component that renders the div.
- 2Load the script in useEffect after the div is in the DOM — the snippet appends a fresh script on every mount so it also works after client-side navigation.
- 3Render <BookingWidget /> wherever the calendar should appear.
"use client";
import { useEffect } from "react";
export function BookingWidget() {
useEffect(() => {
// Append a fresh <script> on every mount so the widget also initialises
// after client-side navigation (a cached script tag won't re-run).
const s = document.createElement("script");
s.src = "https://synqslot.com/embed.js";
s.async = true;
document.body.appendChild(s);
return () => {
s.remove();
};
}, []);
return (
<div data-synqslot="yourname/30min">
<a href="https://synqslot.com/yourname/30min">Book a time</a>
</div>
);
}next/script also works for a single page load, but it won't re-run embed.js when the user navigates back to the page client-side — the useEffect version does.
Three ways to embed
Inline calendar, inline form, or popup form
The booking widget embeds inline. Routing forms can embed inline or open in a popup — see smart routing for how forms send each visitor to the right calendar.
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.
<div data-synqslot="yourname/30min">
<a href="https://synqslot.com/yourname/30min">Book a time</a>
</div>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.
<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.
<a href="https://synqslot.com/r/discovery-call" data-synqslot-form="discovery-call" data-mode="popup">
Book a call
</a>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.
| Feature | SynqSlot | Calendly embed |
|---|---|---|
| Pricing | Flat rate — $6/mo solo, $27/mo for up to 5 people, $35/mo for up to 10 | Per seat — every host who takes bookings is a paid seat |
| Works without JavaScript | Yes — the first month and times are server-rendered inside the frame, and a plain booking link shows if the script is blocked | Requires JavaScript |
| Auto-resizing iframe | Yes — no scrollbars, no fixed height | Yes |
| Prefill from the page URL | Yes — ?name=&email=&company= on your page are forwarded automatically | Yes — via URL parameters or embed options |
| Remove the vendor's branding | Every plan | Paid plans only |
| Custom intake questions | Every plan, inside the widget | Yes |
| Works on any CMS | Yes — anywhere you can paste HTML | Yes |
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?
Yes. The widget is an iframe of a server-rendered booking page: the month grid and the first day's times are already in the HTML, day and time links reload the frame, and the details form posts normally — so it works with scripts disabled inside the frame. If embed.js itself is blocked on your site, visitors see the plain booking link you put inside the div instead.
Will the embed slow down my website?
No. embed.js is a small script loaded with async, so it never blocks your page from rendering, and the calendar loads in its own iframe after your content. It sets no cookies on your domain and loads no trackers into your page, so your cookie notice doesn't need to change.
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, so a link like yoursite.com/book?name=Jane&email=jane@acme.com&company=Acme arrives with those fields already filled in.
Does it work on WordPress, Webflow, Squarespace, Wix and Shopify?
Yes. Anywhere you can paste HTML, the two-line snippet works: WordPress (Custom HTML block), Webflow (Embed element), Squarespace (Code block), Wix (Embed HTML), Shopify (page HTML or Custom Liquid), Framer, Carrd, plain HTML and React. 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.
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.
Ready to try it?
Start your 15-day free trial — full access, no credit card required.