Apps · People

Scheduling & bookings

A link you send a customer, showing only the times your people are genuinely free. They pick a slot; it lands on the right person's calendar with an invite, and nobody gets double-booked.

User guideApps › Scheduling & bookings

Where it lives

Scheduling doesn't get its own sidebar entry. It's a set of tabs inside the Calendar app, so bookings sit next to the calendar they land on.

TabWhat it's for
CalendarThe calendar itself. Everyone with the app sees this.
Booking pagesWhat customers can book — one page per kind of meeting.
BookingsEverything that's been booked. Confirm, edit, reschedule, cancel.
AvailabilityReusable sets of weekly hours.
StaffWho can be booked, and whose calendar each of them books onto.
Admin

The last four tabs are admin only. They're hidden from everyone else, and the server refuses their actions with Admin only — so there's no way round it by URL. Setting up a booking page publishes something to the internet and writes to shared calendars; that isn't delegated. Ordinary members still host bookings, they just don't configure them. See Permissions & access.

Before the first booking

Four things have to exist, in this order. Skip one and the next step tells you so.

  1. A connected Google calendar per host Each person who'll be booked connects their own calendar under Integrations. That connection is what gets read for free/busy and written to when a booking is made.
  2. Bookable staff Calendar → Staff lists your workspace members. Add as staff makes one bookable. Somebody without a connected calendar shows Needs a connected Google calendar instead of the button — connect it first.
  3. An availability schedule Calendar → Availability. Create one and mark it the company default. This is the "we're open these hours" answer everything else falls back to.
  4. A booking page Calendar → Booking pages → New booking page. This is what a customer actually books.

Availability schedules

A schedule is a named set of weekly hours in a named timezone — "Company hours", "Sales team", one person's own pattern. They're reusable: one schedule can back several people and several booking pages.

  1. Create it New schedule makes one and opens the editor straight away. Set the Schedule name and the Timezone — the weekly hours below are expressed in that timezone, not the viewer's.
  2. Add the hours Each weekday has a + that adds a window; set a start and an end time. A day with no window reads Unavailable and is never offered. Add two windows to one day for a lunch break in the middle.
  3. Handle the exceptions Date overridesAdd override. Pick a date. Leave Available ticked and give it times to work unusual hours that day; untick it to block the day entirely. An override replaces the weekly hours for its date rather than adding to them.
  4. Save Save writes the schedule and returns to the list.

Back on the list, the star marks the Company default and the star button on any other row is Make company default. Exactly one schedule is the default at a time.

Bookable staff

Calendar → Staff is short: who can be booked, and against what. Each active host row carries three controls.

ControlWhat it does
CalendarWhich connected Google account this person books onto and is checked against. Listed by account email.
ScheduleCompany default, or one of the schedules as this person's own hours.
ActiveUntick to take somebody out of rotation without unpicking them from every booking page.
Don't leave a host on "— no calendar —"

The calendar picker includes a — no calendar — option. A host set that way is still offered to customers, but their real calendar is never read, so an existing meeting won't block a slot, and their bookings get no calendar event and no Meet link — only the BackOffice record and the confirmation email. Use it deliberately or not at all.

Booking pages

A booking page is one bookable thing — "30-min intro", "Demo call", a room. New booking page opens the editor; everything is on one screen in four blocks.

Basics

Title, Link slug, Duration (minutes) and an optional Description. The slug fills itself in from the title and is the last part of the public URL; it has to be lowercase letters, numbers and hyphens. Once saved, the full public link is shown right here with a button to open it.

Staff & assignment

Click the chips to assign hosts — at least one is required. Then choose what happens when there's more than one:

ModeBehaviour
Single hostBookings go to the one assigned host.
First availableInvitee is booked with whichever assigned host is free.
Round-robinBookings are distributed evenly across assigned hosts.
Collective (all attend)All assigned hosts must be free; everyone attends (panel).

Availability schedule below decides whose hours apply. Left on Each host's own schedule (default), every host is offered against their own hours. Pick a named schedule instead and it replaces theirs for this page.

Location & meeting settings

  • LocationGoogle Meet, In person, Phone or Custom. Anything but Meet reveals a Location details box, and that text is what the customer sees and what goes on the calendar event.
  • Require confirmation — bookings land as Pending and you confirm each from the Bookings tab before the invitee is notified. See below.
  • Guests can invite others / Guests can see other guests / Guests can modify the event — passed through to the calendar event's own guest permissions.
  • Reminders — chips for At start, 10 min before, 30 min before, 60 min before and 1 day before. These are the calendar event's reminders.
  • Request meeting recording — records your intent only. The page says so itself: enabling Meet recording is a Google Workspace admin policy, not something an app can switch on.

Limits & rules

SettingWhat it protects
Buffer before (min) · Buffer after (min)Padding either side. A slot is only offered if the padded span is clear too — no back-to-back with no breathing room.
Minimum notice (min)How far ahead someone must book. Stops a meeting appearing in ten minutes' time.
Bookable window (days)How far into the future the page will offer slots.
Max bookings/dayA daily cap. Blank means No limit.
ActiveUntick and the page stops taking bookings — the public link returns "this booking page isn't available". Existing bookings are untouched.

Save returns to the list. Under the buttons a line reminds you of the timezone rule: invitees pick a time in their own timezone, while availability is evaluated in each host's schedule timezone.

Shared resources — booking a room, not a person

Tick Shared resource (room / equipment) and the page changes meaning: only one booking at a time across all hosts, and the schedule you pick becomes the resource's open hours, intersected with each host's own availability rather than replacing it. So a meeting room bookable 08:00–20:00 still only offers times when somebody who can host is also free.

Sharing the link

Two links, both on the Booking pages tab.

  • Your public booking page (all services) at the top — /book/<your-workspace>. It lists every active booking page under your workspace name, so the customer picks which kind of meeting they want. This is the one to put in an email signature.
  • Per page — every row has a copy button and an open button for its own link, /book/<your-workspace>/<slug>. This is the one to send when you already know what you're inviting them to.

Both are public. Nobody needs an account, a login or an invitation to use them, and the page only ever exposes what an invitee needs to see.

What the customer actually does

  1. Opens the link They see the title, the duration, whether it's Meet / in person / phone, and a note reading Times shown in their own timezone — the page converts everything into their local time automatically.
  2. Picks a day, then a time Open days run along the top; the times for the selected day sit underneath. Only genuinely free slots appear. If there are none the page says No open times in the next few weeks.
  3. Leaves their details Your name, Your email, and an optional Anything to share before the meeting? note.
  4. Confirms Confirm booking. They land on You're booked! with the meeting details, a Join with Google Meet link where there is one, and A confirmation was sent to their address.

How the booking reaches them

Three separate things happen, and it's worth knowing which is which when somebody says they didn't get anything:

  1. The calendar invite — from Google The invitee is added as an attendee on the host's calendar event, so Google sends the real invite with the add-to-calendar attachment. This is the one that puts the meeting in their calendar.
  2. The confirmation — from your workspace BackOffice sends its own branded confirmation carrying the meeting details, the Meet link, and — the part Google can't give you — Reschedule and Cancel links. It goes out through your workspace's own email setup, so that has to be configured for it to arrive.
  3. The reminder A reminder email goes to the invitee once, within 24 hours of the start, carrying the same links.

The host is told separately, through Settings → System notifications: Meeting booked when someone books, and Meeting reminder (host) shortly before it starts. Both arrive in-app by default; switch on the email channel there if you want them mailed too.

The customer can undo their own booking from those links without contacting anyone: cancel outright, or pick a new time from the same slot picker. Either way the calendar event moves or disappears and everyone is re-notified.

Why a taken slot can't be taken twice

Offered times are computed from the schedule's windows minus the host's live Google free/busy, minus bookings already in BackOffice, with the buffers, minimum notice, bookable window and daily cap applied on top. The same check runs again at the moment of booking — so if two people race for the last slot, the second one is told That time is no longer available rather than being let in.

Holding bookings for review

With Require confirmation on, a booking arrives as Pending: the slot is held so nobody else can take it, but no confirmation goes to the invitee yet. Open Bookings, find it, and press the tick — Confirm booking. That flips it to Confirmed and sends the confirmation.

The bookings list

Calendar → Bookings splits into Upcoming and Past & cancelled, each showing the invitee and their email, which booking page it came from, when, and a status of Confirmed, Pending or Cancelled. The buttons on a row are:

  • Confirm booking — pending bookings only.
  • Join meeting — opens the Meet link, when there is one.
  • Edit booking — opens the panel described below.
  • Cancel booking — asks first, warning that the invitee is notified.

Editing a booking

The edit panel does four different jobs:

  1. Fix the invitee's details Name, email and Notes, then Save.
  2. Add people to the meeting Type an address into Guest email and press Add (or Enter) — or use Add a staff member… to pull a colleague in by name. Guests become attendees on the calendar event when you save.
  3. Hand it to someone else Host shows the current host and buttons for anyone else who is free at that time. Pressing one moves the meeting onto their calendar and re-notifies everybody. When nobody else is free it says No other staff are free at this time.
  4. Move it Pick a new time lists open slots in a two-week window, with Earlier and Later to browse past the page's normal bookable window. The slots offered are only ones this booking's own host is free for. Choosing one asks to confirm, then moves the booking and re-notifies the invitee.

Booking on someone's behalf

New booking, top right, is for when the customer phoned instead of clicking. Four steps in one dialog:

  1. Event type Pick which booking page this is. Only active ones are listed.
  2. When Free slots appear straight away; Earlier and Later move the two-week window, so you're not limited to what a customer would be offered.
  3. Host Auto-assign, or pick from the staff who are actually free at that time. If nobody is, it says No staff are free at this time — pick another slot.
  4. Invitee Name, email, an optional note and any guests, then Create booking.

A booking made this way is confirmed immediately — it skips the require-confirmation hold, because you're the one confirming it.

When something goes wrong

What you seeWhat it means
Needs a connected Google calendar That member has no calendar connected, so they can't be made bookable. Connect one under Integrations.
No staff yet — add bookable staff under the Staff tab first. You're editing a booking page before anyone is bookable. Do the Staff tab first.
Assign at least one staff member. A booking page with no host can't be saved — there'd be nobody to book.
Slug must be lowercase letters, numbers and hyphens. The link slug is part of a URL. Spaces, capitals and punctuation aren't allowed.
No open times in the next few weeks. On the public page. Usually the schedule has no weekly hours, the host's calendar is solidly busy, the bookable window is too short, or minimum notice has swallowed the near dates.
That time is no longer available. Somebody took the slot — or the host's calendar filled — between the page loading and the booking landing. Pick another.
Can't book a time in the past. Exactly that. Past times are never offered, and are refused if one is submitted anyway.
This booking page isn't available. The slug is wrong, or the page's Active tick is off.
Too many booking attempts — try again shortly. Public booking is rate-limited per visitor and page. Wait a few minutes.
Admin only The booking-admin tabs are admin-restricted, on the server as well as in the app.
Deleting a booking page keeps its bookings — but strands them

Deleting asks first and tells you existing bookings are kept as history, which they are. What it doesn't say is that a booking whose page is gone can no longer be rescheduled or reassigned — there's no set of rules left to compute new times against. If a page is finished with, untick Active instead and delete it once nothing upcoming points at it.

How this connects to the rest of your workspace

  • The calendar — every booking is mirrored into your own in-app calendar as it's made, so it's visible immediately without waiting on anything from Google.
  • Google — the connection, its scopes and how to disconnect it are covered in Integrations & API.
  • Who's actually at work is a different question, and a different app — Leave & attendance covers shifts, rosters and time off.