Create and share a booking page
Build a public scheduling page on your own domain, set the rules behind it, publish it, and embed it on your website with the iframe or script snippet.
A booking page is a public page on your own domain where a prospect picks a time on your calendar. Zyan creates the calendar event, sends the confirmation, and gives the visitor a private link to reschedule or cancel. Before any of that works, the rules behind bookings need to be right.
Before you start
Booking pages need: a connected booking calendar, the google_calendar_sync plan feature for the full scheduling page, and a verified domain under SettingsDomains before there is a shareable link at all. Creating drafts needs meetings create; publishing is owner-only.
Hosted pages are switched on per workspace
Public hosted booking pages are behind a platform switch that ships off. Until it is armed for your workspace, a published page still answers a neutral "not available" page, and the Share tab reports Published — waiting for hosted pages. Check that pill before you send the link to anyone.
Set the booking rules first
The rules every booking obeys live at WorkMeetingsSettings, and that page is owner-only.
Choose the Booking calendar
Google, or a connected Microsoft Outlook calendar.
Turn on Client booking
Set the Time zone and Weekly hours
Tick the days that are open and set start and end times per day.
Set Minimum notice and Booking window
Choose the Meeting location
Google Meet, Zoom with a connected host, or no meeting link.
Set duration, slot interval and buffers
Add any Unavailable blocks
Vacation, focus time, travel.
Press Save changes
Nothing commits until you do.
| Setting | What it changes | Default |
|---|---|---|
| Calendar | Which calendar bookings check availability against and land on. | |
| Client booking | Whether clients can book live slots at all. | — |
| Time zone | The zone slots are offered and confirmed in. | — |
| Weekly hours | Per-day on or off, plus start and end times. Visitors only ever see slots inside these windows. | — |
| Minimum notice | Blocks last-minute bookings. Accepts 0 to 30 days. | — |
| Booking window | How far ahead slots are exposed. Accepts 1 to 180 days. | — |
| Meeting location | Google Meet, Zoom with a host account, or No meeting link. | — |
| Meeting duration | 30, 45, 60, 90 or 120 minutes. | — |
| Slot interval | Offers slots every 15, 30, 45 or 60 minutes. | — |
| Google Meet links | Creates Meet links automatically. With it off, booking stays disabled unless a Meet link comes from elsewhere. | — |
| Google calendar id | Which Google calendar bookings land on. | primary |
| Buffer before / Buffer after | Protected time either side of each booking. Accepts 0 to 240 minutes. | — |
| Add (unavailable block) | Takes a date range out of the booking flow entirely. | — |
Nothing saves until you press Save changes
Scheduling edits sit in a draft and the floating bar reads Unsaved scheduling changes. Discard throws them away. Leaving the page without saving loses the lot.
Two Microsoft-specific rules: choosing a Microsoft calendar applies to client bookings only — staff-scheduled Google Meet calls, team meetings and voice-agent holds still use Google Calendar — and Google Meet is disabled with it, so pick Zoom or no meeting link.
The connection pill reads Connected, Needs attention, Choose a calendar or Save to verify.
Create the page
Open the booking pages list
Go to WorkMeetingsBooking pages.
Click New booking page
Type a name such as Intro call. The link slug is generated from it.
Create it
It starts as a 30-minute Google Meet on your working hours.
Work through the five tabs
Details, Availability, Questions, Design, Share.
Publish
Once the editor reports no publish issues. Publishing is owner-only.
Details and availability
| Setting | What it changes | Default |
|---|---|---|
| Name | The page title visitors see. | — |
| Link slug | The address of the page. Lower-case letters, numbers and dashes only. | — |
| Description | Shown under the page name. | — |
| Meeting location | Google Meet, Zoom or no link. Availability uses the selected booking calendar. | — |
| Duration | How long each appointment lasts. | 30 minutes |
| Ask for a phone number | Adds a required phone field. Name and email are always asked. | Off |
| Confirmation message | What the visitor sees immediately after booking. | — |
| Redirect URL | An optional https page to send the visitor to after booking. | — |
| Reminders | Reminder emails sent to the visitor before the meeting. You get the matching reminder. | — |
| Send an auto-reply | An extra email from your workspace sender, with its own subject and message. | Off |
| Minimum notice / Booking window / Time slots / Buffer before / Buffer after | Narrow the workspace scheduling rules for this page only. | — |
| Weekly hours (per page) | Gives this page its own week instead of the workspace working hours. | Off, inheriting the scheduling settings |
| Questions | Extra questions asked after name, email and phone, with a live preview. | — |
| Accent / Corners / Typeface / Theme | Page appearance. Unset values follow your workspace accent and the visitor's device theme. | Auto |
The Design tab previews the page in your own admin theme rather than the visitor's, so pin Theme when you need to know exactly what a visitor will see. Left unset, it follows their device.
Changing the slug breaks links you already shared
The slug is the address. Anyone holding the old link gets a page that is not there. Settle on it before you publish.
Saving a published page updates it immediately. Changed questions publish a new version. An impossible weekly-hours week is refused at save.
Share the page
The Share tab gives you the hosted link, an embed switch and two snippets, and a status pill that tells you the truth about whether the page is live.
| Status pill | What it means |
|---|---|
| Live | Published, hosted and reachable |
| Published — waiting for hosted pages | Published, but hosted pages are not switched on for your workspace yet |
| Published | Published, but something else is missing — usually the verified domain |
| Draft — not live | Not published |
| Archived | Retired |
Copy the Hosted link
Or click Open preview. The hosted link works whether or not embedding is on.
Turn on Embed on your website
This allows the page inside an iframe on other sites.
Paste the Iframe snippet
Put it where the booking widget should appear.
Or use the Script snippet
A div carrying a data-zyan-booking attribute plus an async script tag.
The loader mints the iframe and keeps its height in step with the content.
Which snippet should you use?
The iframe snippet is fixed-height and works anywhere. The script snippet auto-resizes, which is what you want when your questions make the page taller than one screen. It is the same loader pattern as the forms embed, so a site that already carries one will take the other without trouble.
The script snippet may not be available yet
The loader is behind its own release flag. Where it is not available, the Share tab says Coming with the loader release — use the iframe snippet until then.
What the visitor gets
Every confirmation email carries a private manage link. The visitor uses it to reschedule or cancel by themselves, right up until the meeting starts; cancelling revokes the token. Changes you make from the Calendar reach them through the calendar invitation instead — the booking-page email is for their own changes.
Troubleshooting
| Symptom | Cause | Fix |
|---|---|---|
| The link shows a neutral "not available" page | The page is a draft or archived, the workspace has no verified domain, or hosted pages are not switched on yet | Publish it, add a verified domain under Settings → Domains, and read the Share tab status pill for which of the three is missing |
| There is no shareable link at all | No verified domain | Verify a domain first |
| No slots appear on the page | Client booking is off, weekly hours are all closed, notice or window exclude the range, buffers and existing meetings consume the day, or the calendar needs attention | Check Client booking, Weekly hours, Minimum notice, Booking window and the calendar status pill, then re-save |
| Scheduling edits vanished | Changes sit in a draft until saved | Press Save changes before navigating away |
| Zoom cannot be selected | Zoom bookings are not activated, or no healthy shared host is connected | The dropdown label says which. Connect Zoom from Settings → integrations |
| Google Meet is greyed out | A Microsoft calendar is selected, which disables Meet | Choose Zoom or no meeting link |
| The embed shows a scrollbar inside the widget | You used the fixed-height iframe snippet | Use the script snippet where it is available |
| A weekly-hours change was refused at save | The week as entered is impossible | Fix the start and end times so each open day is valid |