Workspace369 ยท Booking

Booking embed examples

Pick the setup that matches your site, copy the block, replace the workspace id and page slug (Share & embed in the app gives you both).

Everything here books a demo workspace, so anything you book is test data.

01

Inline on the page

The scheduler sits in the page and grows to fit. Best where booking is the point of the page.

The scheduler below is the Apex Auto Spa booking page: three services, instant booking.

Scrolls inside this box on the examples page; on your site the frame grows to its full height.

HTML
<script src="https://369.dev/booking.js" data-booking
  data-workspace="demo_showcase_apex_auto_spa" async></script>

Paste the inline snippet in the body of your page, where the scheduler should appear.

03

Your own button or link

Your own button, link or menu item opens the scheduler. Nothing of ours shows on the page.

The link below is a real trigger. It opens the page where the visitor picks a specialist.

HTML
<script src="https://369.dev/booking.js" data-booking
  data-workspace="demo_showcase_apex_auto_spa"
  data-page="choose-specialist"
  data-mode="api" async></script>

<a href="https://369.dev/ws/demo_showcase_apex_auto_spa/book/choose-specialist" data-w369-booking>
  Choose your specialist
</a>

Any button or link opens the scheduler. Add data-w369-booking to it and keep a real link for visitors without JavaScript.

04

Your own form, then the scheduler

Ask for the details in your own form, then hand them over. The visitor never types their name twice.

Fill the form below. The scheduler opens on the time picker with your answers in it.

HTML

Your form collects the details; the scheduler opens on the time picker with them filled in. Anything in metadata lands on the booking and the client record.

05

Inside your own modal

Put the scheduler inside something you own: a dialog, a drawer, a step in your checkout.

The button below opens our own dialog with the scheduler inside it.

HTML

Render the scheduler inside your own dialog with mount(); call destroy() when it closes.

06

Plain iframe

One iframe, no script. For a site builder or CMS that blocks custom JavaScript.

The frame below is a page that needs approval before anything reaches the calendar.

HTML
<iframe src="https://369.dev/ws/demo_showcase_apex_auto_spa/book/deposit-review?embed=1" title="Book an appointment" width="100%" height="900" style="border:0;display:block" loading="lazy"></iframe>
<a href="https://workspace369.com/?utm_source=powered_by&amp;utm_medium=booking&amp;utm_campaign=powered-by&amp;utm_content=iframe" target="_blank" rel="noopener" style="display:inline-flex;align-items:center;gap:6px;margin-top:8px;font:500 12px/1 system-ui,sans-serif;color:#6b7280;text-decoration:none"><img src="https://369.dev/logo/favicon-32x32.png" width="14" height="14" alt=""> Powered by <strong>Workspace369</strong></a>

One iframe, fixed height, no script. This page needs approval, so a booking here waits for the team.

07

Layouts and themes

The booking page sets the layout; the embed can set the colours.

HTML
<script src="https://369.dev/booking.js" data-booking
  data-workspace="demo_showcase_apex_auto_spa"
  data-page="large-gallery"
  data-theme="nord" async></script>

data-theme takes any of the 35 theme names. Leave it off and the page keeps the theme it was given in the app.

08

Language

The scheduler follows the language of the visitor's browser. Set data-lang to show one language on every visit.

The scheduler below is the same booking page in Polish.

Scrolls inside this box on the examples page; on your site the frame grows to its full height.

HTML
<script src="https://369.dev/booking.js" data-booking
  data-workspace="demo_showcase_apex_auto_spa"
  data-lang="pl" async></script>

data-lang takes a language code such as pl, de or pt-PT. Leave it off and the page follows the language of the visitor's browser.

Phone numbers

Every phone number needs its country code: a +, the country code, then the number. +14155550100, +442071234567 and +48221234567 all work. Anything else reaches the scheduler for the visitor to correct.

JavaScript
W369Booking.open({ prefill: { phone: '+14155550100' } });

Workspace ID and page slug for your own embeds live under Share & embed on any booking page in the app.

Book a detail