Google Calendar
Connect a calendar, set working hours and offer bookings after customer confirmation when the integration is enabled.
Connect a calendar, set working hours and offer bookings after customer confirmation when the integration is enabled.
Availability gate#
Google Calendar is not generally available yet. Until it is enabled, Agent → Actions → Google Calendar shows “coming soon” and the connection is unavailable; an agent setting cannot turn it on. Cal.com remains a separate option.
Connect a calendar#
When enabled, open the Google Calendar panel and choose Connect. Sign in to Google and review the requested permissions for calendar events and free/busy availability. This connection is separate from signing in to Make Agent Fast. The server stores the refresh token encrypted; the dashboard and the agent do not receive it.
The requested scopes are calendar.events, calendar.freebusy, and non-sensitive openid and email. The callback requires a verified email and stores it encrypted to resolve primary to the same calendar ID as its explicit email spelling. No profile scope is requested. Older connections without a verified email must disconnect and reconnect before booking.
An agent uses one calendar provider at a time. Disconnect an existing provider before switching. Choose the calendar ID (primary for the connected account's primary calendar) and its IANA time zone, for example Asia/Seoul. A shared calendar must be accessible with the connected account's permissions. Disconnecting revokes the Google grant and removes the connection; it does not cancel existing events.
Set working hours#
New connections have no working hours, so no slots are offered until you add them. Add opening/closing windows for each working weekday. An empty day is closed; multiple non-overlapping windows support a lunch break. Hours are interpreted in the selected time zone. Settings autosave.
| Setting | Accepted range |
|---|---|
| Slot length | 5–240 minutes |
| Buffer around busy events | 0–120 minutes |
| Minimum notice | 0–43,200 minutes |
| Booking horizon | 1–90 days |
| Working windows | Up to 28 non-overlapping windows across the week |
Availability is working hours minus the selected calendar's busy blocks, buffer, minimum notice and horizon. Set hours in the calendar's intended time zone and check daylight-saving transitions when relevant. No slots may mean closed hours or busy time, rather than a connection error.
From availability to a booking#
The agent uses the same find_slots and book_slot flow as Cal.com: offer up to eight available times, collect name/email and optional note, recheck the chosen slot, then show a confirmation card. Offers and proposals expire after 15 minutes; neither holds the slot. Only the customer's button tap authorizes booking. A spoken “yes” during a live call cannot book it.
After confirmation, Google receives an event with a deterministic ID tied to the action run and sends attendee invitations. A validated confirmed event produces a completed receipt; tentative events remain pending. If a slot is taken, ask for fresh times and confirm again. An uncertain network result is checked using the same event ID; do not treat a timeout as success or create another booking blindly. Configuration changes invalidate older offers/proposals.
To be notified when a time opens, use a consented watch. Before customer use, verify a real booking and invitation in Google, try a taken slot, and check disconnect/reconnect and the intended messaging channel.