Guides

Guide · n8n template · 5 min read

Book Google Calendar appointments in n8n, with availability checks

The booking step is the one that has to be boring and correct. This sub-workflow takes the caller's details, checks the slot is still free and only then creates the Google Calendar event. It returns a simple booked true or false, so the voice agent always knows what to tell the caller.

Free template: Book calendar appointments with availability checks in Google Calendar

By MD Faizan Uzzaman · Verified n8n Creator · Published 12 Oct 2026

How do you book a Google Calendar appointment in n8n without double-booking?

Check the slot inside the booking workflow, right before creating the event, rather than once earlier in the conversation. This template calls a Check Slot Availability workflow first and only books when the slot is free.

  1. Another n8n workflow calls it with name, phone, service type, preferred date and preferred time.
  2. It calls a separate Check Slot Availability workflow to confirm the slot is free.
  3. If it's free, it builds ISO start and end timestamps for a 30-minute appointment.
  4. It creates the Google Calendar event, with the summary and description filled from the caller's details.
  5. It returns booked: true with the formatted date and time, or booked: false with an error code if the slot or the calendar call fails.

What inputs does it expect?

Five fields from the calling workflow (usually your voice agent's MCP or webhook layer).

FieldFormat
nameCaller's name
phoneCaller's phone number
service_typeWhat they're booking
preferred_dateISO date (YYYY-MM-DD)
preferred_timeHH:mm (24-hour)

How do you set it up?

You need Google Calendar OAuth2 connected in n8n. Then:

  1. Import the template into n8n.
  2. Create or pick a Check Slot Availability workflow that returns an available boolean, and update the workflow ID it calls.
  3. Add a Google Calendar OAuth2 credential and set the target calendar in the event step.
  4. Make sure the calling workflow sends all five fields, and change the default 30-minute duration if you need to.

What should you test before it goes live?

The edge cases, not just the happy path.

TestWhat should happen
Slot already takenbooked: false, no event created
Free slotbooked: true, event created with the caller's details
Two callers book the same slotOnly the first gets booked: true, because availability is checked inside the booking step
Caller in a different time zoneEvent lands at the right local hour (always send a time zone)

What does it return?

booked: true with the formatted date and time on success, or booked: false with an error code when the slot is taken or the calendar call fails.

Can I use a different calendar or CRM?

Yes. Replace the Google Calendar node with your own calendar or CRM step.

Does it work with voice agents?

Yes. It's built to be called from a Vapi or Retell setup, such as my MCP booking template.

Related

About the author

I'm Faizan, a Verified n8n Creator. I build n8n automations and the booking back-ends behind voice agents. This template is free on n8n.io.

Want this set up for your business or your clients?

I build and test these workflows for small businesses and voice AI agencies, paid through Upwork escrow.