Skip to main content

Automated voice appointment booking with Vapi AI and Google Calendar

Workflow preview

Workflow preview
100%
Automated voice appointment booking with Vapi AI and Google Calendar preview
Open on n8n.io

Important notice

This workflow is provided as-is. Please review and test before using in production.

1. Workflow Overview

What this template does Connect a Vapi AI voice agent to Google Calendar to capture contact details and auto book appointments. The agent asks for name, address, service type, and a preferred time....

Best for

  • Support Chatbot automation workflows
  • AI Chatbot automation workflows
  • intermediate n8n builders looking for reusable templates

Tools used

n8n-nodes-base.set, n8n-nodes-base.webhook, n8n-nodes-base.switch, n8n-nodes-base.code, n8n-nodes-base.respondtowebhook, n8n-nodes-base.stickynote, n8n-nodes-base.googlecalendar

Source and attribution

This workflow is cataloged by N8N Workflows and links back to its original n8n.io source page by Francisco Rivera.

Original n8n.io source

1.1 Workflow description

Title
Automated voice appointment booking with Vapi AI and Google Calendar
Workflow name
Automated voice appointment booking with Vapi AI and Google Calendar

What this template does

Connect a Vapi AI voice agent to Google Calendar to capture contact details and auto-book appointments. The agent asks for name, address, service type, and a preferred time. The workflow checks availability and either proposes times or books the slot—no code needed.

How it works (node map)

  • Webhook: Production URL = VAPI Server URL — receives tool calls from Vapi and returns results.
  • 1. CONFIGURATION (EDIT ME) — your timezone, work hours, meeting length, buffers, and cadence.
  • Route by Tool Name — routes Vapi tool calls:
    • checkAvailability → calendar lookup path
    • bookAppointment → create event path
  • 2. Get Calendar Events (EDIT ME) — reads events for the requested day.
  • Calculate Potential Slots / Filter for Available Slots — builds conflict-free options with buffers.
  • Respond with Available Times — returns formatted slots to Vapi.
  • 3. Book Appointment in Calendar (EDIT ME) — creates the calendar event with details.
  • Booking Confirmation — returns success back to Vapi.

> Sticky notes in the canvas show exactly what to edit (required by n8n). No API keys are hardcoded; Google uses OAuth credentials.

Requirements

  • n8n (Cloud or self-hosted)
  • Google account with Calendar (OAuth credential in n8n)
  • Vapi account + one Assistant

Setup (5 minutes)

A) Vapi → n8n connection

  1. Open the Webhook node and copy the Production URL.
  2. In VapiAssistantMessaging, set Server URL = that Production URL.
  3. In Server Messages, enable only toolCalls.

B) Vapi tools (names must match exactly)

Create two Custom Tools in Vapi and attach them to the assistant:

Tool 1: checkAvailability

  • Arguments
    • initialSearchDateTime (string, ISO-8601 with timezone offset, e.g. 2025-09-09T09:00:00-05:00)

Tool 2: bookAppointment

  • Arguments
    • startDateTime (string, ISO-8601 with tz)
    • endDateTime (string, ISO-8601 with tz)
    • clientName (string)
    • propertyAddress (string)
    • serviceType (string)

> The Switch node routes based on message.toolCalls[0].function.name. If the names differ, nothing will run.

C) Configure availability

Open 1. CONFIGURATION (EDIT ME) and set:

  • timeZone (e.g. America/New_York)
  • workdayStartHour / workdayEndHour (24h integers)
  • meetingDurationMinutes (e.g. 30 or 60)
  • bufferBeforeMinutes / bufferAfterMinutes (e.g. 15)
  • bookingCadenceMinutes (e.g. 30)

D) Connect Google Calendar

  1. Open 2. Get Calendar Events (EDIT ME) → Credentials: select/create Google Calendar OAuth. Then choose the calendar to check availability.
  2. Open 3. Book Appointment in Calendar (EDIT ME) → use the same credential and same calendar to book.

E) Activate & test

  • Toggle the workflow Active.
  • Call your Vapi number (or start a session) and book a test slot.
  • Verify the event appears with description fields (client, address, service type, call id).

Customising

  • Change summary/description format in 3. Book Appointment.
  • Add SMS/Email confirmations, CRM sync, rescheduling, or analytics as follow-ups (see sticky note “I’m a note”).

Troubleshooting

  • No response back to Vapi → confirm Vapi is set to send toolCalls only and the Server URL matches the Production URL.
  • Switch doesn’t route → tool names must be exactly checkAvailability and bookAppointment.
  • No times returned → ensure timezone + work hours + cadence generate at least one future slot; confirm Google credential and calendar selection.
  • Event not created → use the same Google credential & calendar in both nodes; check OAuth scopes/consent.

Security & privacy

  • Google uses OAuth; credentials live in n8n.
  • No API keys hardcoded.
  • Webhook receives only the fields needed to check times or book.

1.2 Logical Blocks

This catalog entry is organized from the workflow JSON. The node-level section below shows the executable blocks available for review before importing the template.

2. Block-by-Block Analysis

Block 1 - 1. CONFIGURATION (EDIT ME)

Type / Role
n8n-nodes-base.set - set
Config choices
Version 3.4

Block 2 - Webhook: Production URL = VAPI Server URL

Type / Role
n8n-nodes-base.webhook - webhook
Config choices
Version 2

Block 3 - Route by Tool Name

Type / Role
n8n-nodes-base.switch - switch
Config choices
Version 3.2

Block 4 - Calculate Potential Slots (do not change)

Type / Role
n8n-nodes-base.code - code
Config choices
Version 2

Block 5 - Filter for Available Slots (do not change)

Type / Role
n8n-nodes-base.code - code
Config choices
Version 2

Block 6 - Respond with Available Times (do not change)

Type / Role
n8n-nodes-base.respondToWebhook - respondToWebhook
Config choices
Version 1.4

Block 7 - I'm a note

Type / Role
n8n-nodes-base.stickyNote - stickyNote
Config choices
Version 1

Block 8 - Sticky Note

Type / Role
n8n-nodes-base.stickyNote - stickyNote
Config choices
Version 1

Block 9 - Sticky Note1

Type / Role
n8n-nodes-base.stickyNote - stickyNote
Config choices
Version 1

Block 10 - 3. Book Appointment in Calendar (EDIT ME)

Type / Role
n8n-nodes-base.googleCalendar - googleCalendar
Config choices
Version 1.3

Block 11 - 2. Get Calendar Events (EDIT ME)

Type / Role
n8n-nodes-base.googleCalendar - googleCalendar
Config choices
Version 1.3

Block 12 - Booking Confirmation (do not change)

Type / Role
n8n-nodes-base.respondToWebhook - respondToWebhook
Config choices
Version 1.4

Block 13 - Sticky Note2

Type / Role
n8n-nodes-base.stickyNote - stickyNote
Config choices
Version 1

3. Summary Table

Workflow Automated voice appointment booking with Vapi AI and Google Calendar
Complexity intermediate
Nodes 13
Categories Support Chatbot, AI Chatbot
Author Francisco Rivera
Published 26 Sept 2025

4. Reproducing the Workflow from Scratch

  1. 1. Download the workflow JSON

    Use the JSON export at /data/workflows/8972/8972.json as the source template for this automation.

  2. 2. Import the template into n8n

    Open n8n, import the downloaded JSON, and review each node before activating the workflow.

  3. 3. Configure credentials and variables

    Replace placeholder credentials, API keys, webhook URLs, account IDs, and environment-specific values with your own settings.

  4. 4. Test with sample data

    Run the workflow manually or in a staging workspace, inspect node output, and confirm downstream systems receive the expected data.

  5. 5. Activate and monitor

    Enable the workflow only after testing, then monitor executions, errors, and rate limits during the first production runs.

5. General Notes & Resources

Review imported nodes carefully before activation. This catalog entry is intended to help you inspect the workflow structure, understand required services, and find related templates faster.

Node names, credentials, schedules, webhook paths, and external service limits may need adjustment for your workspace.

Frequently asked questions

What does Automated voice appointment booking with Vapi AI and Google Calendar do?

What this template does Connect a Vapi AI voice agent to Google Calendar to capture contact details and auto book appointments. The agent asks for name, address, service type, and a preferred time....

What do I need before importing this workflow?

Review the workflow JSON, configure any required credentials in n8n, and test the automation in a safe workspace before using it in production.

Can I customize this workflow?

Yes. Use the block-by-block analysis and the downloadable JSON to inspect each node, then adjust credentials, prompts, schedules, filters, or destinations for your Support Chatbot, AI Chatbot use case.