Guide · Voice agents · 7 min read
n8n appointment booking for Vapi and Retell voice agents
A voice agent that sounds great still fails if it can't book the slot. This is how I give Vapi and Retell agents real booking through one n8n MCP server: five tools the agent can call mid-call, the input formats that prevent most bugs, and the edge cases to test before a client hears it. It follows my free template, Handle clinic appointments via MCP tools for Vapi and Retell voice agents.
By MD Faizan Uzzaman · Verified n8n Creator · Published 12 Oct 2026
How do you connect a Vapi or Retell voice agent to n8n for appointment booking?
Put an MCP Server Trigger in n8n and give the voice agent its MCP webhook URL. The trigger exposes booking tools (check a slot, book, find alternates, cancel, reschedule) that the agent can call during the call.
The agent handles the conversation. n8n handles the calendar. Keeping booking logic in n8n instead of the agent's prompt means the same back-end works for Vapi, Retell or any agent that can call MCP tools, and you can test it without making a call.
Which booking tools does the template expose?
Five: Check Slot Availability, Book Appointment, GET Alternate Slot, Cancel Appointment and Reschedule Appointment. Each one is its own sub-workflow, so you can point it at your own calendar or CRM.
| Tool | What the agent uses it for |
|---|---|
| Check Slot Availability | Is the requested date and time free? |
| Book Appointment | Book the slot once the caller's details are confirmed |
| GET Alternate Slot | Offer the nearest open times when the requested one is taken |
| Cancel Appointment | Cancel using the caller's phone number and appointment details |
| Reschedule Appointment | Move an existing appointment to a new open time |
How does a booking call flow through the tools?
The agent checks the requested slot first. If it's free and the caller has confirmed their details, it books. If not, it fetches alternates and offers them. Changes go through cancel or reschedule, matched by phone number.
- Caller asks for a time. The agent calls Check Slot Availability.
- Free and details confirmed: Book Appointment.
- Taken: GET Alternate Slot, then the agent offers those times.
- Existing booking: Cancel or Reschedule Appointment.
How do you set it up?
Import the template, publish the five sub-workflows and point them at your calendar, then give your voice agent the MCP webhook URL.
- Import the template into n8n (cloud or self-hosted with HTTPS).
- Import and publish the five appointment sub-workflows, and connect them to your scheduling system. The template doesn't include them; replace them with your own logic if you use a CRM.
- Copy the MCP Server Trigger's webhook URL into your Vapi or Retell agent as an MCP tool server.
- In the agent's prompt, tell it which tool to call at each step of the call.
What format should the voice agent send dates, times and phone numbers in?
Dates as YYYY-MM-DD, times as HH:mm in 24-hour format, and phone numbers in E.164 (for example +14155550123). Agreeing the format up front removes most booking bugs.
| Field | Format | Example |
|---|---|---|
| Date | YYYY-MM-DD | 2026-10-14 |
| Time | HH:mm, 24-hour | 15:00 |
| Phone | E.164 | +14155550123 |
How do you stop the agent from double-booking a slot?
Check the slot again inside the Book Appointment step, right before you create the event. Checking once, early in the call, isn't enough, because another caller can take the slot while this one is still talking.
The gap is timing. The agent checks availability, talks for a minute, then books. In that minute someone else can take the slot. If Book Appointment re-checks the calendar and refuses (or offers the next open slot) when the time is gone, the double booking can't happen. I go deeper on this in Vapi vs Retell for appointment booking.
Does it work with Google Calendar?
Yes. Google Calendar is the calendar I build the sub-workflows on. Always send a time zone with every booking, because Google Calendar needs an offset or a named time zone or the event lands at the wrong hour.
What should you test before a client hears it?
The cases that break booking flows, not the happy path.
| Test | What should happen |
|---|---|
| Second caller asks for a slot just booked | Booking refused, next open slot offered |
| Fully booked day | Alternates from the next open day |
| Caller in another time zone | Event lands at the correct local hour |
| Reschedule an existing booking | Old slot freed, new one booked |
| Vague time ("sometime next week") | Agent asks a narrowing question before checking |
These come from my 12-call booking check for agencies. If you'd rather have someone else try to break it, see the $75 check.
Do I need Vapi or Retell specifically?
No. Any voice agent that can call MCP tools works. I've built booking agents on both Vapi and Retell, and the n8n side stays the same for either.
For a real example of the back-end behind a live agent, see the HVAC booking build.