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.
- Another n8n workflow calls it with name, phone, service type, preferred date and preferred time.
- It calls a separate Check Slot Availability workflow to confirm the slot is free.
- If it's free, it builds ISO start and end timestamps for a 30-minute appointment.
- It creates the Google Calendar event, with the summary and description filled from the caller's details.
- 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).
| Field | Format |
|---|---|
| name | Caller's name |
| phone | Caller's phone number |
| service_type | What they're booking |
| preferred_date | ISO date (YYYY-MM-DD) |
| preferred_time | HH:mm (24-hour) |
How do you set it up?
You need Google Calendar OAuth2 connected in n8n. Then:
- Import the template into n8n.
- Create or pick a Check Slot Availability workflow that returns an available boolean, and update the workflow ID it calls.
- Add a Google Calendar OAuth2 credential and set the target calendar in the event step.
- 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.
| Test | What should happen |
|---|---|
| Slot already taken | booked: false, no event created |
| Free slot | booked: true, event created with the caller's details |
| Two callers book the same slot | Only the first gets booked: true, because availability is checked inside the booking step |
| Caller in a different time zone | Event 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