WhatsApp to Google Calendar, bookings from voice notes
Your day gets chopped up by tiny voice notes. “Can we do tomorrow at 3?” “Move it to Friday.” “Also send a confirmation.” Then you replay audio, guess the details, and still worry you booked the wrong thing. WhatsApp calendar booking automation fixes that mess.
Client-facing teams feel it first because they live in the inbox. A solo service business owner gets it too, because missed bookings cost real money. And if you run ops for a small team, the back-and-forth becomes a daily tax.
This workflow turns WhatsApp voice commands into Google Calendar events (plus email follow-ups) and sends a ready-to-use reply back to the same chat. You’ll see what it automates, what results to expect, and what you need to run it.
How This Automation Works
The full n8n workflow, from trigger to final output:
n8n Workflow Template: WhatsApp to Google Calendar, bookings from voice notes
flowchart LR
subgraph sg0["MCP Server – Calendar Flow"]
direction LR
n2@{ icon: "mdi:location-exit", form: "rounded", label: "Create Calendar Event", pos: "b", h: 48 }
n3@{ icon: "mdi:location-exit", form: "rounded", label: "Fetch Calendar Events", pos: "b", h: 48 }
n4@{ icon: "mdi:location-exit", form: "rounded", label: "Update Calendar Event", pos: "b", h: 48 }
n5@{ icon: "mdi:location-exit", form: "rounded", label: "Delete Calendar Event", pos: "b", h: 48 }
n7@{ icon: "mdi:play-circle", form: "rounded", label: "MCP Server – Calendar", pos: "b", h: 48 }
n2 -.-> n7
n5 -.-> n7
n3 -.-> n7
n4 -.-> n7
end
subgraph sg1["MCP Server – Knowledge Base Flow"]
direction LR
n0@{ icon: "mdi:cube-outline", form: "rounded", label: "Supabase Vector Store", pos: "b", h: 48 }
n1@{ icon: "mdi:vector-polygon", form: "rounded", label: "Embeddings OpenAI", pos: "b", h: 48 }
n9@{ icon: "mdi:play-circle", form: "rounded", label: "MCP Server – Knowledge Base", pos: "b", h: 48 }
n1 -.-> n0
n0 -.-> n9
end
subgraph sg2["Flow 3"]
direction LR
n10["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/webhook.dark.svg' width='40' height='40' /></div><br/>Incoming Webhook (VAPI)"]
n11["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/webhook.dark.svg' width='40' height='40' /></div><br/>Respond to Webhook (VAPI)"]
n10 --> n11
end
subgraph sg3["MCP Server – Gmail Flow"]
direction LR
n6@{ icon: "mdi:message-outline", form: "rounded", label: "Send Email Notification", pos: "b", h: 48 }
n8@{ icon: "mdi:play-circle", form: "rounded", label: "MCP Server – Gmail", pos: "b", h: 48 }
n6 -.-> n8
end
%% Styling
classDef trigger fill:#e8f5e9,stroke:#388e3c,stroke-width:2px
classDef ai fill:#e3f2fd,stroke:#1976d2,stroke-width:2px
classDef aiModel fill:#e8eaf6,stroke:#3f51b5,stroke-width:2px
classDef decision fill:#fff8e1,stroke:#f9a825,stroke-width:2px
classDef database fill:#fce4ec,stroke:#c2185b,stroke-width:2px
classDef api fill:#fff3e0,stroke:#e65100,stroke-width:2px
classDef code fill:#f3e5f5,stroke:#7b1fa2,stroke-width:2px
classDef disabled stroke-dasharray: 5 5,opacity: 0.5
class n7,n9,n8 trigger
class n0 ai
class n1 ai
class n10,n11 api
classDef customIcon fill:none,stroke:none
class n10,n11 customIcon
The Problem: Voice notes create booking chaos
Voice notes feel “quick” until you’re the one translating them into real work. You listen, rewind, and try to catch names, times, time zones, locations, and “actually make it 30 minutes not an hour.” Then you open Google Calendar, build the event, and realize you still need to confirm it in WhatsApp and maybe email the client too. Miss one detail and you’ve bought yourself another thread of apologies and rescheduling. It’s not hard work. It’s just constant work.
It adds up fast. Here’s where it breaks down when you keep it manual.
- You end up replaying the same audio twice because you don’t trust your first interpretation.
- Calendar events get created without the right title, location, or notes, so future-you has no context.
- Confirmations happen late (or not at all), which leads to no-shows and awkward “are we still on?” messages.
- As volume grows, only the most organized person can keep up, and that’s a fragile system.
The Solution: Voice-to-booking automation inside WhatsApp
This n8n workflow connects a WhatsApp Business number (via Twilio) to a voice assistant (VAPI) that can actually do things, not just chat. When someone sends a voice note like “Book a meeting tomorrow at 3,” VAPI transcribes and understands the intent, then sends a structured request into n8n through a webhook. From there, n8n routes the request to the right “module” (calendar, Gmail, or knowledge base), performs the action, and returns a clean response back through VAPI to WhatsApp. The end result is simple: bookings get created, updated, or deleted in Google Calendar, and confirmations can be sent by email without you touching three separate apps.
The workflow starts with an inbound webhook from VAPI. Next, n8n uses the MCP gateways to choose the right action, like creating a calendar event or sending a Gmail message. Finally, it returns a reply payload so the assistant can respond in WhatsApp with exactly what happened.
What You Get: Automation vs. Results
| What This Workflow Automates | Results You’ll Get |
|---|---|
|
|
Example: What This Looks Like
Say you get 10 WhatsApp voice notes a week that lead to bookings. Manually, it’s maybe 8 minutes to replay the audio, 5 minutes to create the event, and another 3 minutes to send a proper confirmation, so about 15 minutes each. That’s around 2.5 hours weekly. With this workflow, you forward the voice note, wait for the assistant to confirm details, and approve if needed; call it about 2 minutes of your attention per booking. You get roughly 2 hours back every week, and the confirmations go out on time.
What You’ll Need
- n8n instance (try n8n Cloud free)
- Self-hosting option if you prefer (Hostinger works well)
- Twilio WhatsApp to receive WhatsApp voice messages
- VAPI to transcribe voice and route intent
- Google Calendar for creating and managing bookings
- Gmail to send confirmations and reminders
- Supabase for the knowledge base vector store
- OpenAI API key (get it from your OpenAI API dashboard)
Skill level: Intermediate. You will connect a few accounts, add credentials in n8n, and test webhooks end-to-end.
Don’t want to set this up yourself? Talk to an automation expert (free 15-minute consultation).
How It Works
A WhatsApp voice note triggers everything. Your Twilio WhatsApp number receives the audio, and VAPI handles the voice infrastructure (capture, transcription, intent).
VAPI sends a structured request into n8n. The workflow starts at the “Inbound Webhook VAPI” node, so n8n receives the intent and any extracted details like date, time, attendee, and requested action.
n8n routes to the right module. If it’s a booking request, the Calendar gateway can create, retrieve, modify, or remove a Google Calendar event. If it’s follow-up, the Gmail gateway prepares and sends the email. If it’s a question (“what’s included?”), the knowledge hub queries Supabase using OpenAI embeddings.
A clear reply goes back to WhatsApp. The workflow packages the result and responds through the webhook response, which VAPI turns into a message in the same WhatsApp thread.
You can easily modify the assistant’s tone and the confirmation wording to match your brand. See the full implementation guide below for customization options.
Step-by-Step Implementation Guide
Step 1: Configure the Webhook Trigger
Set up the inbound webhook that receives VAPI calls and returns the SIP response.
- Add or open Inbound Webhook VAPI and set HTTP Method to
POST. - Set Path to
81e240fc-d3fb-4ccd-b91a-0aacbf2d8f2aand Response Mode toresponseNode. - Connect Inbound Webhook VAPI to Return Webhook Reply to follow the execution flow.
- In Return Webhook Reply, set Respond With to
textand Response Body to.sip:[email protected] - Under Response Headers, add Content-Type with value
application/xml.
Step 2: Configure MCP Gateways for Tool Invocation
These MCP triggers expose tools that the voice assistant can invoke for knowledge, calendar, and email actions.
- Open MCP Calendar Gateway and confirm Path is
1902a1d2-f8a8-4601-b20c-90e824fe478d. - Open MCP Gmail Gateway and confirm Path is
41a2ab5f-1a7d-440b-a1e3-1b2308dee744. - Open MCP Knowledge Hub and confirm Path is
3643c062-c554-43d8-84d1-692b886b780f.
Step 3: Set Up Knowledge Retrieval
Connect the vector store and embedding model for knowledge-based responses.
- In Supabase Vector Archive, set Mode to
retrieve-as-tooland confirm Tool Description isRetrieve this tool to get pricing Informatio or any other General Inquiry. - Ensure Table Name is set to
documents. - Credential Required: Connect your
supabaseApicredentials on the parent gateway MCP Knowledge Hub (the tool inherits usage through the gateway). - Verify OpenAI Embedding Engine is connected to Supabase Vector Archive as the embedding model.
- Credential Required: Connect your
openAiApicredentials on the parent gateway MCP Knowledge Hub (the tool inherits usage through the gateway).
documents, retrieval will fail silently. Align the table name in your Supabase project.Step 4: Configure Calendar Tools
Set up calendar creation, retrieval, modification, and deletion tools connected to the calendar gateway.
- In Generate Calendar Entry, set Start to
{{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Start', ``, 'string') }}and End to{{ /*n8n-auto-generated-fromAI-override*/ $fromAI('End', ``, 'string') }}. - Set Calendar to
[YOUR_EMAIL]in Generate Calendar Entry. - In Retrieve Calendar Items, set Operation to
getAll, Time Min to{{ /*n8n-auto-generated-fromAI-override*/ $fromAI('After', ``, 'string') }}, and Time Max to{{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Before', ``, 'string') }}. - In Modify Calendar Booking, set Operation to
updateand Event ID to{{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Event_ID', ``, 'string') }}. - In Remove Calendar Booking, set Operation to
deleteand Event ID to{{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Event_ID', ``, 'string') }}. - Credential Required: Connect your
googleCalendarOAuth2Apicredentials on the parent gateway MCP Calendar Gateway (the tools inherit usage through the gateway).
[YOUR_EMAIL] with the actual calendar owner email in each calendar tool, or events won’t be created or found.Step 5: Configure Email Tool Output
Enable outbound email alerts through Gmail when the assistant needs to send notifications.
- In Dispatch Email Alert, set Send To to
{{ /*n8n-auto-generated-fromAI-override*/ $fromAI('To', ``, 'string') }}, Subject to{{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Subject', ``, 'string') }}, and Message to{{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Message', ``, 'string') }}. - Set Email Type to
text. - Credential Required: Connect your
gmailOAuth2credentials on the parent gateway MCP Gmail Gateway (the tool inherits usage through the gateway).
Step 6: Test and Activate Your Workflow
Validate the webhook response and confirm the tool gateways are reachable before turning the workflow on.
- Click Execute Workflow and send a POST request to the Inbound Webhook VAPI URL to verify the XML response from Return Webhook Reply.
- Confirm a successful run returns the SIP XML and shows a completed execution path from Inbound Webhook VAPI to Return Webhook Reply.
- Test MCP endpoints for MCP Calendar Gateway, MCP Gmail Gateway, and MCP Knowledge Hub using your MCP client to ensure tool access.
- When tests pass, toggle the workflow to Active for production use.
Common Gotchas
- Twilio WhatsApp setup can fail silently if your Business number isn’t verified or the TwiML webhook URL is wrong. If messages aren’t reaching VAPI, check the Twilio console logs first.
- If you’re using Wait nodes or external rendering, processing times vary. Bump up the wait duration if downstream nodes fail on empty responses.
- OpenAI prompts and retrieval settings matter more than people expect. Default prompts in AI nodes are generic, so add your brand voice and “what to confirm back” rules early or you’ll be editing outputs forever.
Frequently Asked Questions
Plan on about 1–2 hours once Twilio and VAPI are ready.
No. You’ll mainly paste credentials, connect accounts, and test the webhook flow. The tricky part is configuration, not code.
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 OpenAI and Twilio usage, which is usually a small per-message cost.
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.
Yes, but you’ll add one extra action. Keep the calendar logic as-is, then extend the Gmail path (MCP Gmail Gateway / Dispatch Email Alert) with a Twilio “send message” step for SMS. Common customizations include asking a clarifying question when time is ambiguous, adding your business hours rules, and switching the knowledge base from Supabase to another vector store.
Most of the time it’s not “credentials,” it’s setup. Check that your WhatsApp Business number is verified, your TwiML app points to the correct VAPI endpoint, and that incoming webhooks are hitting n8n (look at the execution logs on the Inbound Webhook VAPI node). Also watch for rate limits if you test by spamming voice notes back-to-back.
A typical small business workload is fine on day one. On n8n Cloud Starter, you’re capped by monthly executions; on self-hosted, it mostly depends on your server size and how busy your Twilio/VAPI pipeline is. Practically, most teams start with a few hundred voice-driven actions a month and scale from there without changing the workflow logic.
Often, yes, because this isn’t a simple two-step Zap. You’ve got voice intent, branching actions (calendar vs email vs knowledge), and you may want self-hosting once volume grows. n8n handles complex routing without turning every condition into another paid step, and the webhook-first design fits VAPI nicely. Zapier or Make can still work if you only want “transcription goes to email” and nothing else. If you’re torn, Talk to an automation expert and sanity-check the simplest approach.
Once this is running, voice notes stop being little landmines in your day. Your calendar stays accurate, follow-ups go out faster, and you can finally trust what’s been booked.
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.