A voice agent that books clinic appointments without double-booking anyone.
Booking one appointment by phone takes a receptionist seven steps. This agent does all seven, and knows what to do when the request doesn't fit.
An AI voice agent built with ElevenLabs answers a clinic's booking calls and passes the caller's details to an n8n workflow. The workflow checks the request against clinic hours, weekends, past dates and missing details, checks Google Calendar, then books the slot, offers the nearest free one, or offers another day or a callback. It re-checks the slot before confirming so two callers can't take the same time, logs the patient in Google Sheets and sends a confirmation from Gmail.
- Role
- Design and build
- Built with
- ElevenLabs · n8n
- Connected to
- Calendar · Sheets · Gmail
- First shared
- August 2026
The problem
When a patient calls to book, a receptionist normally works through every step by hand:
- Answer the call
- Collect the patient's details
- Check the calendar
- Confirm availability
- Book the appointment
- Record the details
- Send a confirmation
None of it is hard. All of it is repetitive, and it happens while other patients wait at the desk.
How it works
- The voice agent answersElevenLabs handles the conversation and collects the name, contact details and requested time.
- The details go to n8nThe logic lives in one workflow you can read and change.
- The request is checkedClinic hours, weekends and past dates, and anything missing.
- The calendar is checkedGoogle Calendar is the source of truth for what's free.
- The booking is confirmedCalendar updated, patient logged in Google Sheets, confirmation sent from Gmail, and the status goes back to the voice agent.
Every situation
| Situation | What the agent does |
|---|---|
| Slot available | Books the appointment. |
| Slot unavailable | Finds the nearest free slot and offers it. |
| No suitable slot | Offers another day or a callback. |
| Slot taken mid-call | Blocks the duplicate and offers another time. |
| Closed or past date | Explains why and asks for a different time. |
| Missing details | Asks for what's missing first. |
What I learned
The interesting part wasn't connecting the tools. It was building the logic and guardrails around them. You have to decide what happens when details are incomplete, the clinic is closed, or two callers want the same slot at the same moment. That's where automation stops being a demo and becomes a business system.