🔓 Unlock all 10,000+ workflows & prompts free Join Newsletter →
✅ Full access unlocked — explore all 10,000 AI workflow and prompt templates Browse Templates →
Home n8n Workflow
January 21, 2026

Vapi + Google Calendar bookings with Gmail confirms

Lisa Granqvist Partner Workflow Automation Expert

Your phone rings, someone asks for “next Tuesday,” you put them on hold, check the calendar, come back, and they’re gone. Or worse, you write it down, promise an email confirmation, then forget until the end of the day.

This Vapi Calendar booking setup hits busy practice managers and service business owners hardest. Consultants and coaches feel it too, just with different labels on the appointment types. The outcome is simple: fewer missed bookings, fewer double-bookings, and confirmations that go out automatically.

This workflow turns a natural voice conversation into a real Google Calendar event, then sends a Gmail confirmation. You’ll see how it works, what you need, and where people usually get tripped up.

How This Automation Works

The full n8n workflow, from trigger to final output:

n8n Workflow Template: Vapi + Google Calendar bookings with Gmail confirms

The Problem: Appointment Booking Turns Into Back-and-Forth

Appointment scheduling looks easy until you’re doing it all day. People call when you’re in the middle of something, ask for availability in plain language, then change their mind twice. Meanwhile, your calendar is the source of truth, but it’s trapped behind a login and a human who has to interpret it. The cost isn’t only time. It’s interruptions, mistakes, and that nagging feeling that you’re always one slip away from a double-booking.

It adds up fast. Here’s where it breaks down in real businesses.

  • Calls get missed after hours, which means bookings that never happen.
  • Busy slots get read wrong, especially when timezones and lunch breaks are involved.
  • “I’ll send a confirmation email” becomes another task, and honestly it’s the one that slips.
  • Even one double-booked slot can cause refunds, awkward conversations, and a chaotic day.

The Solution: Voice Booking That Writes to Your Calendar

This n8n workflow gives your Vapi voice assistant two reliable “tools” it can call during a conversation: one to check availability and another to create the appointment. When a caller asks for open times on a specific date, Vapi hits an availability webhook. n8n pulls that day’s busy blocks from Google Calendar, cleans them up into readable time ranges, then asks an AI agent to identify realistic open windows based on your business hours. When the caller picks a slot and shares their details, Vapi calls the booking webhook. n8n creates the event in Google Calendar and immediately sends a professional confirmation email through Gmail, then returns a success message back to Vapi so the assistant can confirm it out loud.

The workflow starts with a Vapi-triggered webhook for either “check times” or “book it.” Google Calendar provides the schedule reality, the AI agent turns it into human-friendly options, and Gmail handles the written confirmation so customers aren’t guessing what they booked.

What You Get: Automation vs. Results

Example: What This Looks Like

Say you book 8 appointments a day. Manually, a “quick call” often turns into about 10 minutes: check the calendar, propose times, write the event, send the email. That’s roughly 80 minutes daily. With this workflow, the caller gets options via Vapi, and once they confirm, n8n creates the event and sends Gmail automatically. Your effort becomes a quick review of the calendar, maybe 10 minutes total.

What You’ll Need

  • n8n instance (try n8n Cloud free)
  • Self-hosting option if you prefer (Hostinger works well)
  • Vapi for the voice assistant and tool calling
  • Google Calendar to store availability and bookings
  • Gmail to send confirmation emails automatically
  • Google Gemini API key (get it from Google AI Studio)

Skill level: Intermediate. You’ll be comfortable connecting accounts and pasting webhook URLs into Vapi.

Don’t want to set this up yourself? Talk to an automation expert (free 15-minute consultation).

How It Works

Vapi triggers an “availability” webhook. When a caller asks for openings on a date, your assistant sends that date to n8n as a tool call.

Google Calendar is checked for busy blocks. n8n pulls the day’s occupied times, then formats them so they’re easy to reason about instead of a raw blob of timestamps.

An AI agent turns schedule data into options. The agent uses your business hours rules to identify open windows, then returns natural-language availability that Vapi can read back on the call.

Vapi triggers a “booking” webhook. After the caller picks a time and provides details like name, email, and appointment type, n8n creates the Calendar event and sends the Gmail confirmation.

You can easily modify appointment duration to match your service length based on your needs. See the full implementation guide below for customization options.

Step-by-Step Implementation Guide

Step 1: Configure the Webhook Trigger

Set up the two inbound webhooks that power availability checks and appointment creation.

  1. Add and configure Incoming Availability Webhook with HTTP Method set to POST, Path set to availability-checker, and Response Mode set to responseNode.
  2. Add and configure Incoming Booking Webhook with HTTP Method set to POST, Path set to create-appointment, and Response Mode set to responseNode.
  3. Copy each webhook’s production URL for your voice system to call.

Step 2: Connect Google Calendar

Configure the calendar lookups and appointment creation used by both webhook paths.

  1. Open Fetch Calendar Busy Times and select your calendar in the Calendar field.
  2. Set Time Min to {{ $json.body.message.toolCalls[0].function.arguments.date.toDateTime().startOf('day') }} and Time Max to {{ $json.body.message.toolCalls[0].function.arguments.date.toDateTime().endOf('day') }}.
  3. Credential Required: Connect your Google Calendar credentials in Fetch Calendar Busy Times.
  4. Open Create Calendar Entry and select the same calendar in the Calendar field.
  5. Set Start to {{ $json.body.message.toolCalls[0].function.arguments["date and time"].toDateTime() }} and End to {{ $json.body.message.toolCalls[0].function.arguments["date and time"].toDateTime().plus(30, 'mins') }}.
  6. Set Summary to {{ $json.body.message.toolCalls[0].function.arguments["Appointment type"] }} Appointment for {{ $json.body.message.toolCalls[0].function.arguments.Name }} and Description to Appointment type: {{ $json.body.message.toolCalls[0].function.arguments["Appointment type"] }}
    Email: {{ $json.body.message.toolCalls[0].function.arguments.Email }}
    .
  7. Credential Required: Connect your Google Calendar credentials in Create Calendar Entry.

⚠️ Common Pitfall: Leaving the calendar selection blank in Fetch Calendar Busy Times or Create Calendar Entry will cause the workflow to fail at runtime.

Step 3: Set Up the Availability Processing and AI Analysis

Format busy slots and use the AI agent to generate human-friendly availability windows.

  1. In Format Occupied Times, keep the JavaScript as provided to convert the calendar busy array into a readable list.
  2. Open Availability Analysis Agent and set Text to These are the busy slots of the day: {{ $json.busySlots }}
    Here is the day for which the user is looking to book: {{ $('Incoming Availability Webhook').item.json.body.message.toolCalls[0].function.arguments.date }}
    .
  3. Confirm the system message under Options is the availability guidance for 9:00am–6:00pm.
  4. Ensure Gemini Chat Engine is connected as the language model for Availability Analysis Agent.
  5. Credential Required: Connect your Google Gemini credentials in Gemini Chat Engine (credentials should be added to the parent language model node, not the agent).

Step 4: Configure Booking Confirmation Actions

Send confirmation emails and respond to the booking webhook call.

  1. Open Dispatch Confirmation Email and set Send To to {{ $('Incoming Booking Webhook').item.json.body.message.toolCalls[0].function.arguments.Email }}.
  2. Set Subject to Appointment Confirmation.
  3. Set Message to the HTML template provided in the node, including the dynamic name, appointment type, and date/time expressions.
  4. Credential Required: Connect your Gmail credentials in Dispatch Confirmation Email.
  5. Open Send Booking Confirmation and keep the JSON response body so the calling system receives a confirmation message and tool call ID.

Step 5: Test and Activate Your Workflow

Validate both webhook paths end-to-end, then activate the workflow for production.

  1. Use Execute Workflow and send a POST request to Incoming Availability Webhook with a sample tool call payload that includes a date.
  2. Confirm the execution path runs Fetch Calendar Busy TimesFormat Occupied TimesAvailability Analysis AgentReply Availability to Vapi, returning a readable availability string.
  3. Send a POST request to Incoming Booking Webhook with Name, Email, Appointment type, and date and time.
  4. Verify Create Calendar Entry creates the event, Dispatch Confirmation Email sends the email, and Send Booking Confirmation returns the success response.
  5. Toggle the workflow to Active once both paths succeed.

Tip: If testing with Vapi or another voice platform, make sure your webhook response body matches the expected tool call schema used in Reply Availability to Vapi and Send Booking Confirmation.

🔒

Unlock Full Step-by-Step Guide

Get the complete implementation guide + downloadable template

Common Gotchas

  • Google Calendar credentials can expire or need specific permissions. If things break, check the n8n credential connection test and the selected calendar in both Calendar nodes first.
  • If your AI availability reply feels “wrong,” it’s usually business hours text in the Availability Analysis Agent. Update the system message so it matches your actual hours, lunch breaks, and timezone.
  • Gmail can silently fail when the sending account has security restrictions. Confirm the Gmail node is using the right inbox and that your Google account allows API access for sending.

Frequently Asked Questions

How long does it take to set up this Vapi Calendar booking automation?

About an hour if your Google accounts are ready.

Do I need coding skills to automate Vapi Calendar booking?

No. You’ll connect accounts in n8n and paste two webhook URLs into Vapi.

Is n8n free to use for this Vapi Calendar booking workflow?

Yes. n8n has a free self-hosted option and a free trial on n8n Cloud. Cloud plans start at $20/month for higher volume. You’ll also need to factor in Google Gemini API usage costs, which depend on how many availability checks you run.

Where can I host n8n to run this automation?

Two options: n8n Cloud (managed, easiest setup) or self-hosting on a VPS. For self-hosting, Hostinger VPS is affordable and handles n8n well. Self-hosting gives you unlimited executions but requires basic server management.

Can I customize this Vapi Calendar booking workflow for different appointment lengths?

Yes. Change the default duration in the Google Calendar “Create Calendar Entry” node by updating the .plus(30, ‘mins’) expression. Common tweaks include setting different durations by appointment type, adding buffers between sessions, and adjusting the email wording so it matches each service.

Why is my Google Calendar connection failing in this workflow?

Usually it’s expired or mis-scoped credentials in n8n. Reconnect the Google Calendar credential, then confirm both Calendar nodes are pointed at the same calendar and timezone. If it only fails during busy periods, you may be hitting Google API rate limits, so reduce parallel calls or add small delays.

How many appointments can this Vapi Calendar booking automation handle?

A lot.

Is this Vapi Calendar booking automation better than using Zapier or Make?

For voice booking, n8n is often the better fit because you can run two webhooks, add branching logic, and keep the “availability analysis” in one place without paying extra for every path. It also gives you the self-hosted option, which matters when call volume spikes. Zapier and Make are great for quick, linear automations, but voice flows rarely stay linear for long. Another point people miss is debugging: n8n makes it easier to inspect the exact payload Vapi sent and the exact Calendar response you received. Talk to an automation expert if you want help picking the simplest setup that still works under pressure.

Once this is live, bookings stop being a daily interruption and start being a background process. Set it up once, then let your calendar and confirmations take care of themselves.

Need Help Setting This Up?

Our automation experts can build and customize this workflow for your specific needs. Free 15-minute consultation—no commitment required.

Lisa Granqvist

Workflow Automation Expert

Expert in workflow automation and no-code tools.

×

Use template

Get instant access to this n8n workflow Json file

💬
Get a free quote today!
Get a free quote today!

Tell us what you need and we'll get back to you within one working day.

Get a free quote today!
Get a free quote today!

Tell us what you need and we'll get back to you within one working day.

Launch login modal Launch register modal