Help Center
DocsBooking Pages
Configure booking pages, availability, and booking confirmations
Booking pages are the configurable booking surfaces prospects and clients land on when they want to schedule a meeting with you. Each page defines its own duration, location, availability, branding, and policies. Most teams set up separate pages for distinct workflows — an introductory call, a product demo, an onboarding session, a support check-in.
A booking page can also require payment before a time is confirmed. See Paid Booking Pages for pricing a page, handing a quote or invoice payer a link once they pay, and what a refund or a dispute does to a link that has not been used yet.
Six sections, and only the decisions you must make to share a working link are in plain view.
The booking-page editor has a rail of six sections — Basics, Availability, Timing, Limits, Team, and Booking form. Each one holds a single Advanced disclosure that starts closed. A control sits outside that disclosure only if a first-time user has to decide it to share a working link, so Basics shows the title, duration and location, and Availability shows where the hours come from, the weekly grid, and date-specific hours. Everything else — description, who can book the page, time zone, page URL, start-time spacing, buffers, caps, hosts, intake questions, follow-up email settings — is one click away under Advanced.
| Field | Description | Type |
|---|---|---|
| Name* | A descriptive name for the booking page, such as "30-Minute Discovery Call" or "Product Demo". This is displayed to contacts on the booking page. | text |
| Duration* | The length of the meeting. Choose from preset options to standardize your meeting lengths. | select (15 / 30 / 45 / 60 / 90 min) |
| Location Type* | Where the meeting will take place. Choose Google Meet to have a join link generated automatically for every booking (requires a connected Google account — see "Meeting Locations" below), or Zoom / Phone Call / Custom for manually configured details. | select (Google Meet / Zoom / Phone Call / Custom) |
Google Meet (auto-generated)
When a Google Meet booking page is selected and the host has connected their Google account (via Settings → Integrations), the CRM creates a Google Calendar event with a fresh Meet link at the moment of booking. The unique join URL is included in the booker's confirmation email, the attached calendar invite, and the booker's browser confirmation screen. Google also sends its own native calendar invite to the booker alongside the CRM confirmation, so the invitation is created directly in their calendar, so it does not depend on the email arriving.
If the host has not connected Google, the booking still succeeds but no Meet link is generated. The confirmation email tells the booker the host will follow up with the link, and the booking row is flagged so you can see which confirmations went out without a join URL.
Zoom (static personal link)
Zoom uses the URL you paste into the booking page's Location Value field (typically your personal room URL). The same link is reused for every booking of this booking page. Dynamic per-booking Zoom links (separate meeting IDs, passcodes, and waiting rooms per booking) are not yet supported; if you have back-to-back Zoom bookings on the same booking page, the second booker will enter the same Zoom room. Dedicate separate booking pages or add a buffer to avoid overlap.
Phone Call
Phone bookings use the phone number you paste into the Location Value field. No join link is generated; the number is shown in the confirmation email and the calendar invite.
Custom
Custom accepts free-form text or a URL. If the value starts with http:// or https://, the confirmation email and booking page render it as a clickable join button; otherwise it displays as plain text (for example, an office address).
Weekly Availability
Set your available hours for each day of the week, with up to six time periods on any one day so you can model a lunch break. A day with no periods reads Unavailable. Hours can belong to this page alone or come from a named schedule several pages share, and any single date can be given its own hours or switched off entirely. The full mechanics — including the Does not repeat mode and which control wins when two disagree — are in Availability Schedules.
Start Time Increments
In the Timing section, Start time increments decides how often start times appear — the default is every 15 minutes, and you can choose 5, 10, 15, 20, 30, or 60. This is separate from how long the meeting is: a 60-minute meeting can still offer starts every 15 minutes.
Buffer Time
Buffers keep time free around each booked meeting — set one Before meeting and one After meeting, from 5 to 60 minutes. A 15-minute meeting with a 15-minute buffer books 30 minutes apart, whatever the start-time spacing.
Booking Window
Under Advanced in the Availability section, When can people book?offers three answers: Number of days into the future (set Days ahead, 1 to 365 — new pages default to 30), Within a date range (a fixed Start date and End date), or Up to a year ahead (365 days). A plain sentence underneath states the result, for example “People can book through Mar 31.”
Minimum Notice
Also in Timing: the soonest someone can book, in minutes. Leave it at 0 for no limit.
Timezone
Select the timezone for your availability. The booking page automatically converts your availability to the visitor's local timezone for a seamless booking experience.
Every time a booker loads your booking page or picks a date, the scheduler evaluates your availability against three sources of busy time for the host user, all in the booking page's timezone:
- Existing bookings on any of your booking pages (so two booking pages can't double-book the same slot).
- Synced calendar events imported from your connected Google or Microsoft calendar (so external events block your scheduler).
- CRM activities on your calendar — meetings, calls, and any activity with a start/end time.
A slot only appears if the entire duration plus any buffer is free across all three sources. The database also prevents two bookers from grabbing the same slot at the same instant — whichever request completes first wins, and the other sees a “just booked” message and is prompted to pick another time.
Each booking page can be set to active or inactive. Use Disable in the page list (or Pause in the calendar's Booking pages rail) to switch one off, and Enable / Resume to switch it back on. All configuration and booking history is kept.
A paused page is not silently broken for someone holding the link. Its URL still renders, and it says so plainly: “This page is not accepting bookings right now.” No times are offered and no booking can be made while it is paused. Copy and Preview are hidden for a paused page in the calendar rail, because there is nothing bookable to send anyone to.
A page hosted by one person reads the same way once that person's account is deleted from the workspace: it stops offering times and taking bookings, and a booker sees the paused sentence. Round-robin and collective pages are not paused this way, because their hosts come from the page's team.
Two related states have their own sentences rather than a wall, so a booker who arrives outside the window knows what to do: before a fixed range opens the page shows “Bookings open on” with the date, and after it ends, “Scheduling ended on” with the date. A URL that names no real page — or a page that is set to Private link and reached without its secret link — gets one neutral sentence instead, “This booking page is not available.”, with nothing echoed back.
Deleting a booking page removes it and its booking history permanently, and its booking link stops working. If the page still has confirmed upcoming bookings, the delete is refused rather than quietly cancelling them.
- From the calendar's Booking pages rail, the refusal becomes a second, explicit question that names the number: “Cancel upcoming bookings?”, with a Delete and cancel button. Only that second confirmation cancels them, so one click can never do it.
- From the Scheduler page list, the delete simply does not go through while those bookings exist. Cancel or reschedule them first, or delete the page from the calendar rail if you intend to cancel them.
- Deactivating instead of deleting keeps every booking and every record intact.
Booking pages start on Pro: 2 on Pro, 3 on Business, and unlimited on Ultra. Creating one past your cap is refused with a message naming the limit. Deactivating a page does not free a slot — delete one, or move up a plan. Nothing else in this article is gated by plan; who can be booked is decided by roles.
Every booking link has the shape /b/[workspace]/[page]: your workspace booking URL first, then this page's own URL. A page URL of demo in a workspace whose booking URL is your-business gives you /b/your-business/demo instead of /b/your-business/30-minute-product-demo.
The page URL lives under Advanced in the Basics section, labelled Page URL. It is generated from the title until you edit it, and it is checked as you type — Available, Already used by another page in your workspace, This word is reserved, or At least 3 characters.
- Characters — lowercase letters, numbers, and hyphens only. Anything else you type is converted as you go, and leading or trailing hyphens are trimmed.
- Length — at least 3 characters, at most 60.
- Uniqueness — unique within your workspace. Another organization can use the same page URL; you never collide with them.
- Reserved words — a short list of words the booking URLs themselves use is refused, including
manage,attendee,series,login,admin,api,help, andportal. Only an exact match is reserved, somanage-demois fine. - No workspace URL yet — until one is set, the field is disabled and reads “Set a workspace URL in Settings first.” A page with no workspace URL has no shareable link.
The first part of every booking link in your workspace, and what happens when you change it.
Settings > Company > Scheduler holds the Workspace booking URL: “The first part of the web address of every booking page in your workspace.” Every booking page sits under it, so changing it changes the address of all of them at once. Opening the page at all needs permission to see booking pages; a seat without it is returned to your home page rather than shown the workspace's scheduler settings.
Changing it is admin only. You need a workspace owner or admin role on top of full scheduler access; anyone else, including a seat that holds full scheduler access without the role, sees the address as read-only text under the line “Only a workspace admin can change this.” The same rule is enforced on the save, so there is no way around the read-only view.
Because every page moves at once, the change asks for confirmation first. The confirm names the real number of booking pages affected, shows the address before and after, and repeats that shared links keep working. If the count cannot be read the confirm refuses to open and asks you to reload, rather than guessing a number.
Under the booking URL, admins see Previous links: the addresses this workspace used before, each with the date it was replaced and whether it is still working. Three controls sit on each row.
| Field | Description | Type |
|---|---|---|
| Stop serving | Retires one old address. It stops opening your booking pages, and anyone who follows it lands on a not-found page. The row stays in the list. | control |
| Resume | Puts a stopped address back to work. Stop and Resume are reversible and take effect immediately. | control |
| Forget | One way, and the only control with its own confirm. The address stops opening your pages and its text is removed from the list, but no other workspace can ever take it. The row stays behind as a forgotten link, reserved for this workspace. | control |
The shape rules, the reserved words, and the two limits.
- Shape. Lowercase letters, numbers and hyphens only, with no leading or trailing hyphen, and between 3 and 60 characters. Availability is checked as you type, and a taken address is answered with up to three alternatives you can take with one tap. Nothing is ever renamed for you behind your back.
- Reserved words. A word we use ourselves is refused only when it is the whole address, because on its own it reads as though the page were ours.
supportalone is refused;your-business-supportis fine. - Our own name. An address that reads as Laureo is reserved for us, including lookalike spellings.
- 5 changes in 30 days. Once your booking URL is set, it can change at most five times in any rolling 30 days. Replacing the temporary link a new workspace starts with does not count, so choosing your first real address is always free.
- 25 past links. A workspace keeps at most 25 previous addresses. At the cap the booking URL cannot change again, and the message says so.
The bookings themselves are untouched by any of this. If one booker has lost their confirmation email, Copy new manage link in the Bookings tab mints a fresh link for that booking, which is a separate thing from the workspace address. The new link is shown under the booking and copied when your browser allows it, and the line above it says which happened; on a touch screen a share button sits beside it. See Bookings.
Under Advanced in the Basics section, Who can book this page offers three tiers:
| Field | Description | Type |
|---|---|---|
| Public | Anyone with the link can book. Shown in your workspace's pickers. This is the default. | tier |
| Unlisted | Anyone with the link can book. Hidden from search and from any shared listing. | tier |
| Private link | Only people with a secret link can book. The page's ordinary URL behaves exactly like a page that does not exist. | tier |
On the Private link tier you generate the secret links yourself with + Generate link. A new link stays on screen for the rest of your editing session, with the note “Copy this now. Once you close this editor, it cannot be shown again.” — once the editor closes, only a short masked prefix is stored, so there is no way to reveal it again. Tick Single use before generating and that link stops working after its first booking. You can hold up to 10 private links on one page; revoking one frees a slot, and a used single-use link still counts until you revoke it.
| Field | Description | Type |
|---|---|---|
| Individual | Default. The booking page belongs to one host; every booking is assigned to that host. Use this for solo flows like "Book a call with Sarah". | strategy |
| Round robin | Multiple hosts are eligible. Each booking goes to the host with no conflicting confirmed booking and the least-recent rotation cursor; the cursor bumps atomically so two simultaneous bookings can't pick the same host. Tiebreaker: weight DESC, then user_id ASC. When a booking already has a video meeting, rescheduling keeps the same host, so the times offered are that host's. | strategy |
| Collective | All eligible hosts must be free; the booking page shows only slots that are open on every host's calendar. The booking's primary host is the lowest user_id (deterministic); the rest are added as calendar attendees on the provisioned event. | strategy |
| Group | A single host but the booking page sets a group capacity > 1, so multiple bookers can register for the same slot (webinars, group demos, office hours). Each booker is a separate attendee row; the booking is full once attendee_count hits the cap. | strategy |
Beyond name, email, phone, and notes, you can add up to 30 custom questionsper booking page. Question types: text, textarea, email, phone, number, date, single-select, multi-select, and checkbox. Mark any question as Required and the booker can't confirm without answering it. Responses are stored on the booking, surfaced in the host email, and rendered inline on the Bookings drawer for quick context before the call.
Toggle Allow recurring bookings on a booking page and add one or more allowed recurrence rules (RFC 5545 RRULE subset: FREQ=DAILY|WEEKLY|MONTHLY,COUNT, INTERVAL). The booker can pick a base slot and one of the allowed rules; the system expands the rule to N occurrences and books them all in a single atomic transaction. If any one occurrence fails the slot check (e.g., a future Tuesday is blocked by another booking), every previously-inserted occurrence is rolled back so the series is all-or-nothing.
- Each series gets its own series management token so the booker can cancel the entire series in one click.
- Per-occurrence management tokens still work — cancelling one occurrence leaves the rest of the series intact.
- Recurring is supported only on Individual strategy in v1 (multi-host recurring is a v2 candidate).
Control how your booking pages, confirmation emails, and calendar invites present to the booker.
The workspace-wide settings below decide what a booker sees before they ever read the meeting details. They live together under Settings → Company → Scheduler, in the Branding & defaults section, with two preview rows beneath them that follow your changes before you save: Booking page preview shows how your logo and name sit at the top of a booking page, and Email preview shows how the top of a booking email will look. The email preview makes the same decisions the real send makes, such as which logo survives and what color the button label ends up, so it is a preview rather than an impression.
Logo
Logo URL takes a link to an image you already host, and it must be a secure link beginning with https — anything else is refused with “Use a secure image link that begins with https, or leave this empty.” The logo appears at the top of your booking emails and on your booking pages.
Leaving it empty is a supported choice, not a broken state: the field says “No logo set. Your organization name is shown instead.” and the email header falls back to your organization name set as a plain wordmark in your accent color.
With a logo set, the checkbox beneath it, Show organization name next to the logo, decides whether your name also appears as text. It is off when a workspace sets its first logo, because many logos already include the name; a workspace that already showed a logo keeps its name beside it until the checkbox is changed. The choice applies everywhere a booker sees you: the booking page, the pages a booker opens from their email, and the booker emails. With it off, the emails still name you: the logo image carries your organization name as its text alternative, which mail clients that block images show in its place, and your name stays in the footer, and in the From line unless booking mail is sent under the host's name alone. On the booking pages, a logo that fails to load is replaced by your name. The checkbox is available once a logo is set; to show only your name, clear the logo.
An SVG file is accepted and used, but only on part of the way: mail clients do not render SVG, so the field notes it — “SVG logos show on your booking pages but not in email, where your organization name is shown instead.” The Email preview below drops it too, so what you see there is what the booker receives. Use a PNG or JPEG if you want the logo in the emails as well.
Only workspace admins, or a role an admin has given full scheduler admin access, can change booking branding. Everyone else sees it read-only.
Organization name
Organization name is the workspace name itself, editable from this page with a Save name button rather than autosaving, because it is the one field here that is not scheduler-only. It appears in three places a booker will see: on your booking pages, in your booking emails, and in the From line — so it is also what the Sender display mode below inserts wherever a mode names the organization. Changing it here changes it everywhere in the workspace, so only a workspace admin can edit it.
Brand color
Brand color is the accent on your booking pages and your booking emails: the wordmark tint and the button color a booker sees. It is set here, by typing a hex value or with the color picker beside the field, and it is available on every plan that has booking pages. Your Help Center shares this color, so people who can edit your Help Center can change it there too, and a change in either place shows in both. If no brand color has been chosen, the row says so and a default accent is used instead.
A value that is not a hex color is refused with “Use a hex color like #1d4ed8, or leave this empty.”, and emptying the field goes back to the default accent. Anyone who cannot change booking branding sees the color and its value read-only.
Filled buttons, on your booking pages and in your booking emails, always carry white text. So the button fill is your brand color darkened only as far as needed for that white text to stay readable, keeping the hue, and it is a little darker again when the pointer is on it. A color that is already dark enough is used exactly as you set it.
In email, the same care applies where the accent is used as text: the wordmark, and links in the body. A pale brand would be unreadable on the white email background, so it is deepened just far enough to be legible, keeping the hue. A color that is already readable is used exactly as you set it. The accent bar at the top of the email keeps your color as it is.
The currency your dashboards, reports and totals are stated in, and what changing it does to documents you have already sent.
Workspace currency
Workspace currency is the currency your dashboards, reports and totals are stated in. It is set here, with its own Save currency button, and only a workspace admin can change it. Setup asks it once, unless one of the two cases below already rules it out, in which case setup leaves it alone and points here. It does not have to match the currency on any individual quote or invoice: a document always keeps the currency it was issued in.
What the lock rule means. The moment a quote is sent, that document freezes three things: its own currency, the workspace currency at that time, and the exchange rate between them. Nothing that happens afterwards moves those numbers, which is what keeps a sent quote and a paid invoice saying today what they said on the day they went out.
Documents issued under an older workspace currency. Because the frozen rate converts into the workspace currency of the day, it cannot be reused once you change that currency. Those documents are therefore left out of converted totals rather than restated at a rate that was never agreed, and the reports that show a total also show how many documents were left out of it. Their own pages are unaffected and still show the full amount in the currency they were issued in. If you have already sent quotes or invoices, the change asks you to confirm, and tells you how many documents it affects.
Two cases are refused outright rather than confirmed, because the charge would land in the wrong currency and need a manual refund: a purchase of extra credits or an assistant seat that is still open at checkout, and an active subscription priced in the old currency. Finish or cancel the purchase, then change the currency.
A workspace still on its trial is not held by the subscription rule and can set its currency. Once a paid subscription is billing, contact support to change how you are billed first. When an admin saves a new workspace currency, everyone in the workspace sees it on their next page load.
| Field | Description | Type |
|---|---|---|
| Sender display mode | How the From: name renders. Host = "Sarah Smith"; Host via org = "Sarah Smith via Acme Co" (recommended default, industry standard); Org = "Acme Co" (useful for service-desk rotations). The envelope domain stays on the verified Laureo SES identity for SPF/DKIM compliance — only the display portion changes. | select (host / host_via_org / org) |
| Calendar event title template | A string with placeholders that becomes the calendar event summary. Supported placeholders: {event_title}, {booker_name}, {booker_email}, {org_name}. Default: "{event_title} with {booker_name}". Capped at 200 characters with grapheme-aware truncation so emoji and CJK characters render cleanly. | text |
| Hold prefix | When enabled, prepends "HOLD: " to the calendar event title. Useful when you want bookings to appear on calendars as tentative holds rather than confirmed meetings. | boolean |
| Field | Description | Type |
|---|---|---|
| Minimum notice (minutes) | How far in advance the booker must book. A 60-minute minimum hides any slot less than 60 minutes from now. Up to 10,080 (one week). | number |
| Cancel cutoff (minutes) | How close to the meeting start the booker can self-cancel. A 1440 (24-hour) cutoff returns 409 with code CUTOFF_EXCEEDED if the booker tries to cancel within 24 hours of the meeting. Set to 0 to allow cancellation up to the start time. | number |
| Reschedule cutoff (minutes) | Same as cancel cutoff but for reschedule. The booker sees a friendly message pointing them at the host's email for last-minute changes. | number |
| Allow cancel | Master toggle. If off, the booker's management page hides the Cancel button regardless of cutoff. | boolean |
| Allow reschedule | Master toggle. If off, the booker's management page hides the Reschedule button regardless of cutoff. | boolean |
| Confirmation message | Free-form HTML/text shown on the booking confirmation page (the screen the booker lands on after confirming). Up to 1,000 characters. Use this for "What to bring", parking instructions, or links to a pre-meeting questionnaire. | text |
With Pre-meeting briefing enabled (default on), the host receives a notification roughly 1 hour before each confirmed booking. The briefing includes recent activity with the linked person, their lifecycle stage, and any open opportunities tied to them. Toggle it off if you don't want the noise. Briefings are dispatched by a background cron that runs every 5 minutes; bookings created with less than 60 minutes' notice don't get a briefing because the cron can't catch them in time.
Lock a conference room or piece of equipment when this booking page is booked.
From the booking-page editor, attach one or more resourcesas Required (every booking locks the resource) or Preferred (best-effort). Required resources are intersected into the availability calculation, so the booking page hides any slot where the host is free but the room isn't. See the Resources article for the full lifecycle.
Each booking page displays a booking count showing how many meetings have been scheduled through it. This helps you understand which booking pages are most popular and make decisions about your scheduling strategy. The count updates in real time as new bookings are made.
- The contact receives a booking link via email, embedded on a website, or shared directly.
- They open the link and see the meeting details: the duration, the location, and your time zone when it differs from theirs.
- They choose a date from the available days.
- Available times for the selected date are shown in the booker's own time zone (see below).
- They select a time slot and enter their name, email, phone (optional), and notes (optional).
- On confirm: the booking is created, a CRM activity is logged, a Google Meet link is generated if applicable, and a confirmation page is shown.
- Both the booker and the host receive a confirmation email with a calendar invite (
.ics) attached. - To change or cancel later, the booker uses the Reschedule or Cancel meeting button in their confirmation or reminder email, when the booking page allows it.
Times in the booker's time zone. The booking page shows every time in the time zone the booker's browser reports, and names it in the time zone control above the calendar, for example Mountain Time (Denver), GMT-6 in summer. If the browser reports no usable time zone, the page uses your booking page's time zone instead. To see another zone, the booker opens that control and searches by region name, abbreviation, city or offset from GMT, such as Mountain, MST, Denver or GMT-6. A zone they pick is remembered in that browser for their next visit, and so is their choice of the 12h or 24h clock. The page they open from the Reschedule or Cancel meeting button in their email shows times in the same zone, including the new times offered for a reschedule; it has no time zone control of its own. When the booker's zone differs from your booking page's, both pages also show a Host time line with the chosen time in your zone.
Changing or cancelling from the email. The Reschedule and Cancel meeting buttons in the booker's emails open the booking's own page, straight at the step the button names, and each button appears only when the booking page allows that change. If the page does not allow cancelling, or its cancellation cutoff has passed by the time the booker clicks, that page says “Cancelling is closed for this meeting” and shows how to reach the host instead of a cancellation form. Rescheduling follows the same rule with its own cutoff. A recurring series follows it too: cancelling the series cancels every upcoming session outside the cutoff and leaves the sessions inside it in place, and the series page states the cutoff for the ones it keeps. If the page does not allow cancelling, the series page says cancellations are closed instead of offering the button.
Every successful booking sends two confirmation emails from the CRM, both with an.ics calendar invite attached:
- To the booker: subject “Confirmed: {booking page}, {date and time} {zone}”. Includes the date and time in the time zone the booking page showed the booker (with the time in your zone beside it when the two differ), duration, location, join link (if available), any notes they submitted, and the host's name. Reply-to is set to the host so replies go directly to them.
- To the host: subject “New booking: {booker} booked {booking page}, {date and time} {zone}”. Includes the booker's contact details, any notes, and a link back to the CRM activity for the meeting. Reply-to is set to the booker so replies go directly to them. Only sent if the host user has an email address on file.
The attached .ics follows the iCalendar standard (RFC 5545, METHOD=REQUEST) so Outlook and Apple Mail show Accept/Decline buttons. Both parties' invites share the same event identifier, which means a future cancellation will remove the event from both calendars cleanly.
Public booking pages are open to the internet, so the CRM enforces several caps to prevent abuse without getting in the way of legitimate bookers:
- 5 bookings per hour per IP address — blocks a single source from flooding your calendar.
- 60 bookings per hour per booking page — protects against distributed abuse targeting one host.
- Input caps — booker name 200 characters, email 254 characters, phone 50 characters, notes 1000 characters. Control characters are stripped defensively so names can't break the calendar invite or email headers.
- Database-level overlap prevention — even if two bookers hit the same slot at the exact same instant, only one succeeds. The other sees a 409 message and is prompted to pick another time.
If a booker exceeds a rate limit, they see a friendly “too many attempts” message with a cooldown window. No error is logged on your end — rate-limit hits are transparent to you.
- scheduler.view — required to see booking pages at all, and to open Settings > Company > Scheduler; a seat without it is sent back to your home page instead. A view-only seat reads every page as text: no inputs, no host list, no private links, and no Create button.
- scheduler.create — required to create a booking page.
- scheduler.edit — required to change any setting on a page, including hours, the booking window, hosts, resources, and the page URL.
- scheduler.delete — required to delete a booking page.
- scheduler.admin: required for the organization-wide settings: booking branding (the logo, whether your organization name shows next to it, and the brand color), the sender line, calendar event titles, and resources. Booking branding, the sender line and event titles need it at the All scope, which workspace admins have and an admin can give to another role. The workspace booking URL needs this and a workspace owner or admin role; full scheduler access on its own shows it read-only.
Booker didn't get a Meet link
Google Meet links only generate when the host has a connected Google account. Go to Settings → Integrations and verify Google is connected with Calendar access. Existing bookings without a Meet link keep their current state; future bookings will generate links once Google is connected.
Booker says they didn't receive the email
The booking page confirmation screen always appears regardless of email delivery, and the booking row records whether the booker email was accepted by the mail server. Ask the booker to check their spam folder. For Google Meet bookings, Google also sends its own native calendar invite from a Google address, which is delivered independently of our confirmation email.
Two Zoom bookings overlapped
Zoom currently reuses a single personal-room URL for every booking on a booking page. If you need separate rooms per booking, use Google Meet (auto-generated) instead, or create separate Zoom booking pages for different windows and add buffer time.
Time slot showed available but got “just booked”
Two people picked the same time at the exact same instant; the database accepted only one. The second booker is prompted to pick another slot. This is working as designed — no duplicate bookings can slip through.