Client Calendars

Give every white-label client their own calendar, so bookings land in the right place.

Why this exists

Without this, every agent you run books into ONE calendar — yours. That's fine with a single business, but an agency with ten clients would have ten businesses' appointments in one place.

With client calendars on, each client connects their own Google or Outlook calendar and their agent books straight into it. You never see their appointments, and they never see each other's.

Turning it on for a client

  1. Dashboard → White Labeling → Client Portals → open the client.
  2. In Settings, tick "This client has their own calendar".
  3. Choose which providers they may connect (Google Calendar, Outlook, or both).
  4. Decide what happens before they've connected anything — see Fallback below.
  5. Save.
Note · It's off by default for every client. Nothing changes for your existing agents until you turn it on.

Who connects the calendar

Two ways, both ending in the same place:

  • The client does it — a Calendar tab appears in their portal once you enable it. They click Connect, sign in to Google/Outlook, done.
  • You do it for them — "Connect for them" in the client's panel. Useful during onboarding or for non-technical clients.

A client only ever sees their own connection. They can't see or reach another client's, or yours.

Note · Disconnecting removes the connection here, but doesn't revoke access inside the customer's Google/Microsoft account. Tell clients they can also remove it from their provider's account settings.

Fallback: what happens when a booking can't be made

The agent tries, in order, and stops at the first one that works:

  1. The client's own calendar. If it errors, it retries once — a brief network blip shouldn't cost you an appointment. If the client connected both Google and Outlook, it tries the other one too.
  2. Your calendar — but ONLY if the client hasn't connected anything yet, and only if you left "book into your own calendar" on. Once a client HAS a calendar, a failure never spills into yours.
  3. Email. If no calendar took the booking, the details are emailed to the client's notification address (or to you if they haven't set one) so the appointment is captured instead of lost.
  4. If even the email can't be sent, the agent tells the caller honestly that it couldn't confirm, takes their details, and says someone will call back.
Important · A booking is never invented. The agent will not tell a customer they're booked unless an event was actually created in a calendar.

Why a client's failure never uses your calendar

Once a client has connected a calendar, a failure stops there. It does not fall back to yours.

That's deliberate: writing a client's customer appointment into your own calendar would leak one client's customer data to you, and the appointment would sit somewhere nobody is looking. Capturing it by email and telling the caller the truth is both safer and more useful.

What to put in your agent's prompt

You don't need to mention calendars, providers, or clients in the prompt. The agent is given a booking tool, and the tool decides which calendar to use based on which client the agent is linked to. Prompting it to "book into Joe's calendar" does nothing — the routing isn't prompt-driven.

Do tell it when to book

Prompt the conversation, not the plumbing — when an appointment is appropriate, what to collect first, and how long a slot is. For example:

When the caller wants to schedule a visit, collect their name, the service
they need, and a preferred day and time before booking. Confirm the time
back to them in their own words before you create the booking.

Do NOT promise a confirmation before booking

Avoid prompts like "tell the customer their appointment is confirmed, then book it". If the booking then fails, the agent has already lied. Book first, then confirm what actually happened.

Let the tool's own result drive what it says

When a booking doesn't go through, the tool returns an explicit instruction for what to say next — for example, that the request was emailed to the team and someone will call back to confirm. The agent follows that. You don't need to write fallback wording into your prompt, and you shouldn't override it with something more optimistic.

Tip · If you want a specific phrase used when booking fails, add it as guidance ("if you can't confirm a booking, offer our callback window of 9am–5pm") rather than as an instruction to claim success.

Who the fallback email comes from

It goes out from the platform address by default, and the client doesn't need to set anything up. That's deliberate: this email is an internal notice addressed to the client themselves, so the sending domain doesn't affect anyone's trust in it.

If you'd rather it came from your own domain, connect your Resend account under Integrations → Resend (Email) — one API key and a from address on a domain verified at resend.com/domains. It applies to every client you serve.

Note · Both the key and the from address are required. A key without an address (or an address without a key) is ignored and the platform default is used instead — sending from an address the account doesn't own would just be rejected by Resend.

Troubleshooting

What you seeLikely cause
No Calendar tab in the client's portal"This client has their own calendar" isn't ticked, or the portal page needs a reload.
Bookings land in your calendar, not the client'sThe agent isn't linked to that client, or the client hasn't connected a calendar and fallback is on.
Agent says it couldn't confirm the appointmentThe connected calendar errored twice. Check the connection is still valid — a revoked Google/Microsoft grant looks like this.
Client connected a calendar but sees "Not connected"The consent screen was cancelled, or the connection was made on a different provider than the one shown.
Fallback emails aren't arrivingNo recipient is set — add a notification email on the client, or make sure your workspace has a user. Check spam if sending from the platform default address.
Fallback email arrives from the wrong addressConnect your own Resend under Integrations, or check its from-address domain is verified at resend.com/domains.