OnCallClerk talks to Google Calendar in real time during the call. The agent reads your actual availability, offers slots that are genuinely free, and writes the event before the caller hangs up — no message-taking, no callback queue, no double-bookings.
Before the agent offers a slot, it queries the live free/busy view across every calendar you select — primary, shared resource, and team. Slots already booked in another system are never offered.
When the caller agrees to a time, the agent writes the event with the correct title, description, location, and attendee email — synchronously, while still on the call. No queue, no delay, no later sync job.
The caller's name, phone number, captured intent, and call summary are written into the event description. Optional invite emails go out to the customer immediately if they share an email address.
Route appointments to different calendars based on what the caller asked for — service vs. consultation, location A vs. B, technician vs. estimator — using simple if-then rules.
Per-service-type duration, buffer time, and lead time. The agent will not offer 4:55pm if your day ends at 5pm, and won't offer same-day for services that need 24 hours of notice.
If a customer reschedules in Google Calendar, the agent picks it up. If a slot is freed by a manual cancellation, the agent will offer it again. Calendar is the source of truth.
The agent recognizes a booking intent ("I'd like to come in for an estimate") and confirms which service type the caller wants.
The agent calls the Google Calendar free/busy API across every calendar in scope, applying your buffers, business hours, and lead-time rules.
"I have Thursday at 2pm or Friday at 10am — which works better?" The caller picks one, or asks for something else and the loop continues.
Name, phone (already known from caller ID), email if available, service address, and any custom intake questions you defined.
A single calendar.events.insert call creates the event on the right calendar, with a structured description containing the call summary and lead data.
"You're booked for Thursday at 2pm. I've sent a confirmation to your email." Caller hangs up. The event is already in your calendar.
In your dashboard → Integrations → Google Calendar, click Connect. Sign in with the Google account that owns the calendars and grant calendar.events scope.
Choose any calendars visible to that account — including shared team calendars. You can pick separate read targets (for availability) and write targets (where new bookings land).
For each bookable thing (consultation, estimate, install, follow-up), set duration, buffer, lead time, and which calendar receives the booking. Add custom questions the agent should ask.
Call your agent's number, ask to book an appointment, and watch the event appear in Google Calendar before you hang up. If anything is off, tweak from the dashboard — no redeploy.
Building this on top of our API instead? See the REST API reference and TypeScript SDK for OAuth and tool-call handlers.
Any business where a missed call equals a missed appointment benefits from calendar-aware AI. A few examples:
New-patient consults and recurring cleanings booked into the right operatory calendar.
Read moreService calls scheduled into the on-call tech's calendar with travel buffer.
Read moreDiagnostic and service appointments routed by bay and mechanic.
Read moreProperty showings booked against the agent's real availability — even after hours.
Read moreWalkthroughs and recurring cleans booked with crew assignments.
Read moreSame-day pickup slots filled while competitors still have voicemail running.
Read moreSign up, connect Google Calendar, and have your AI agent booking real appointments by the end of the afternoon.