Guides

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.

ToolWhat the agent uses it for
Check Slot AvailabilityIs the requested date and time free?
Book AppointmentBook the slot once the caller's details are confirmed
GET Alternate SlotOffer the nearest open times when the requested one is taken
Cancel AppointmentCancel using the caller's phone number and appointment details
Reschedule AppointmentMove 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.

  1. Caller asks for a time. The agent calls Check Slot Availability.
  2. Free and details confirmed: Book Appointment.
  3. Taken: GET Alternate Slot, then the agent offers those times.
  4. 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.

  1. Import the template into n8n (cloud or self-hosted with HTTPS).
  2. 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.
  3. Copy the MCP Server Trigger's webhook URL into your Vapi or Retell agent as an MCP tool server.
  4. 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.

FieldFormatExample
DateYYYY-MM-DD2026-10-14
TimeHH:mm, 24-hour15:00
PhoneE.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.

TestWhat should happen
Second caller asks for a slot just bookedBooking refused, next open slot offered
Fully booked dayAlternates from the next open day
Caller in another time zoneEvent lands at the correct local hour
Reschedule an existing bookingOld 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.

About the author

I'm Faizan, a Verified n8n Creator. I build the n8n booking back-ends behind Vapi and Retell voice agents. The template in this guide is free on n8n.io.

Building booking agents for clients?

I call your agent 12 times with the cases above and send a report in your branding within 48 hours, or build the whole booking back-end for you.

See the agency offer