WhatsApp + Google Calendar: book meetings by chat
Your calendar and inbox don’t fall apart because you can’t schedule. They fall apart because scheduling is scattered across chats, email threads, and “quick” calendar checks that never stay quick. That’s why WhatsApp calendar automation is such a relief when your day is already packed.
Client-facing teams feel it first. Then it hits agency owners and ops leads who end up playing human router between meetings, follow-ups, and reschedules. This workflow turns WhatsApp into the place where meetings get booked, availability gets checked, and Gmail follow-ups get sent, without the copy-paste.
You’ll see what it does, how it works, what you need to run it, and the small setup details that usually trip people up.
How This Automation Works
See how this solves the problem:
n8n Workflow Template: WhatsApp + Google Calendar: book meetings by chat
flowchart LR
subgraph sg0["WhatsApp Flow"]
direction LR
n0@{ icon: "mdi:robot", form: "rounded", label: "AI Agent", pos: "b", h: 48 }
n1@{ icon: "mdi:brain", form: "rounded", label: "Google Gemini Chat Model", pos: "b", h: 48 }
n2@{ icon: "mdi:memory", form: "rounded", label: "Simple Memory", pos: "b", h: 48 }
n3@{ icon: "mdi:message-outline", form: "rounded", label: "Send a message in Gmail", pos: "b", h: 48 }
n4@{ icon: "mdi:message-outline", form: "rounded", label: "Get many messages in Gmail", pos: "b", h: 48 }
n5@{ icon: "mdi:location-exit", form: "rounded", label: "Get many events in Google Ca..", pos: "b", h: 48 }
n6@{ icon: "mdi:cog", form: "rounded", label: "Date & Time", pos: "b", h: 48 }
n7@{ icon: "mdi:location-exit", form: "rounded", label: "Get availability in a calend..", pos: "b", h: 48 }
n8@{ icon: "mdi:location-exit", form: "rounded", label: "Create an event in Google Ca..", pos: "b", h: 48 }
n9@{ icon: "mdi:location-exit", form: "rounded", label: "Update an event in Google Ca..", pos: "b", h: 48 }
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/whatsapp.svg' width='40' height='40' /></div><br/>WhatsApp Trigger"]
n11@{ icon: "mdi:swap-vertical", form: "rounded", label: "Extract User Context", pos: "b", h: 48 }
n12["<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/whatsapp.svg' width='40' height='40' /></div><br/>Send WhatsApp Response"]
n0 --> n12
n6 -.-> n0
n2 -.-> n0
n10 --> n11
n11 --> n0
n3 -.-> n0
n1 -.-> n0
n4 -.-> n0
n8 -.-> n0
n5 -.-> n0
n9 -.-> n0
n7 -.-> n0
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 n10 trigger
class n0 ai
class n1 aiModel
class n2 ai
classDef customIcon fill:none,stroke:none
class n10,n12 customIcon
The Challenge: Scheduling Without Losing the Thread
Booking a meeting sounds simple until it’s happening inside a WhatsApp chat while you’re also juggling Gmail threads and a calendar that changes hourly. You ask a few questions, someone replies late, the time you suggested is gone, and now you’re back to “How about Thursday?” Meanwhile, you still have to create the event, add a Meet link, and send a confirmation message that actually matches what got booked. It’s not hard work. It’s brittle work, which means small mistakes become real headaches.
It adds up fast. Here’s where it breaks down.
- You check availability in Google Calendar, then return to WhatsApp and realize the conversation already moved on.
- Reschedules turn into mini projects because the event update, the Meet link, and the follow-up email don’t stay in sync.
- Natural language like “next Monday afternoon” creates errors when someone has to interpret time zones and formats manually.
- Inbox follow-ups get forgotten because the “I’ll email you the details” moment gets buried in chat.
The Fix: An AI Assistant That Schedules From WhatsApp
This workflow listens for incoming WhatsApp messages, understands what the person is asking, and then takes the right action in Google Calendar or Gmail. If someone says, “Book 30 minutes tomorrow at 5,” the assistant converts that into a proper date/time, checks your calendar availability, and creates the meeting when the slot works. If they ask what’s on your calendar, it retrieves events and replies in plain English. If they say “Email Alex confirming the meeting,” it can send that email through Gmail without you leaving the chat. Context is remembered per phone number, so you can say “make it 30 minutes instead” and it knows what “it” refers to.
The workflow starts with a WhatsApp trigger, then an AI agent (using OpenAI GPT or Google Gemini) chooses the right tool for the request. Google Calendar nodes handle listing, creating, updating, and availability checks. Gmail nodes send messages or summarize recent threads. Finally, the workflow replies via WhatsApp with a clear confirmation.
What Changes: Before vs. After
| What This Eliminates | Impact You’ll See |
|---|---|
|
|
Real-World Impact
Say you schedule 10 meetings a week from WhatsApp. Manually, each one often takes about 10 minutes: check Google Calendar, create the event, add conferencing, return to chat, then send an email recap. That’s roughly 100 minutes weekly, plus the rework when something is booked wrong. With this workflow, you message once in WhatsApp and wait for the confirmation; figure about 1 minute of your time per booking, so you claw back around 1.5 hours a week and cut the “oops, wrong time” moments dramatically.
Requirements
- n8n instance (try n8n Cloud free)
- Self-hosting option if you prefer (Hostinger works well)
- WhatsApp Business Cloud to receive and reply to messages.
- Google Calendar to check availability and create events.
- Gmail to send confirmations and read/summarize threads.
- OpenAI API key or Google Gemini API key (get it from your OpenAI or Google AI Studio account).
Skill level: Intermediate. You won’t code, but you will connect OAuth credentials and configure WhatsApp webhooks.
Need help implementing this? Talk to an automation expert (free 15-minute consultation).
The Workflow Flow
A WhatsApp message kicks it off. When someone sends a message to your WhatsApp Business number, the workflow captures it instantly, along with the sender’s phone number.
Context gets cleaned up and remembered. A short parsing step organizes the message and basic metadata, then Simple Memory stores conversational context per user so follow-up messages still make sense.
The AI agent chooses the right “tool.” Using OpenAI GPT or Google Gemini, the assistant decides if this is a scheduling request, an availability check, an “update the meeting” request, or an email task. Natural language time gets converted into a proper date/time so Google Calendar actions don’t misfire.
Google Calendar and Gmail do the work, then WhatsApp confirms it. Calendar nodes list events, check availability, create meetings (with Google Meet links), or modify existing ones. Gmail nodes can send a recap email or summarize recent threads. The final message goes back to the same WhatsApp chat so the user sees a clear “booked” or “here are your free times” response.
You can easily modify the assistant’s “personality” to match your brand voice based on your needs. See the full implementation guide below for customization options.
Step-by-Step Implementation Guide
Step 1: Configure the WhatsApp Trigger
Set up the WhatsApp webhook trigger so the workflow can receive incoming messages and pass them into the automation.
- Add and open WhatsApp Incoming Trigger.
- Keep Updates set to
messages. - Copy the webhook URL generated by WhatsApp Incoming Trigger and register it in your WhatsApp Business settings.
Step 2: Parse Incoming Message Context
Extract the message text and sender information so the AI agent can respond and send replies to the correct number.
- Open Parse WhatsApp Context and set Include Other Fields to
true. - Confirm the assignments map fields correctly:
- Set chatInput to
{{ $json.entry[0].changes[0].value.messages[0].text.body }}. - Set sessionId to
{{ $json.entry[0].changes[0].value.messages[0].from }}. - Set userPhone to
{{ $json.entry[0].changes[0].value.messages[0].from }}. - Connect WhatsApp Incoming Trigger → Parse WhatsApp Context.
Step 3: Set Up the AI Assistant and Memory
Configure the AI agent to interpret user requests, reference memory, and call connected tools for email and calendar actions.
- Open Intelligent Assistant and review the System Message to match your operating rules and tool protocol.
- Connect Parse WhatsApp Context → Intelligent Assistant to pass the parsed message into the agent.
- Open Conversation Memory and set Context Window Length to
10. - Ensure Conversation Memory is connected as an ai_memory tool to Intelligent Assistant.
- Open Gemini Chat Engine and connect it as the ai_languageModel for Intelligent Assistant.
- Credential Required: Connect your
googlePalmApicredentials in Gemini Chat Engine.
Step 4: Configure AI Tools for Gmail, Calendar, and Time
These tool nodes provide the AI agent with the ability to check emails, send messages, and manage calendar events.
- Open Time Conversion and set Output Field Name to
{{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Output_Field_Name', ``, 'string') }}, with Timezone set to{{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Timezone', ``, 'string') }}. - Open Dispatch Gmail Email and confirm:
- Send To →
{{ /*n8n-auto-generated-fromAI-override*/ $fromAI('To', ``, 'string') }}, Subject →{{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Subject', ``, 'string') }}, Message →{{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Message', ``, 'string') }}. - Credential Required: Connect your
gmailOAuth2credentials for Dispatch Gmail Email. - Open Retrieve Gmail Threads and keep Operation set to
getAll, with Limit and Simple using the provided AI expressions. - Credential Required: Connect your
gmailOAuth2credentials for Retrieve Gmail Threads. - Open Fetch Calendar Events and 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') }}. - Credential Required: Connect your
googleCalendarOAuth2Apicredentials for Fetch Calendar Events, Create Calendar Meeting, Modify Calendar Entry, and Check Calendar Availability. - Open Create Calendar Meeting and set Start to
{{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Start', ``, 'string') }}and End to{{ /*n8n-auto-generated-fromAI-override*/ $fromAI('End', ``, 'string') }}, and confirm the attendee field uses{{ /*n8n-auto-generated-fromAI-override*/ $fromAI('attendees0_Attendees', `you add attendees here, add there email here`, 'string') }}. - Open Modify Calendar Entry and keep Operation set to
updatewith Event ID set to{{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Event_ID', ``, 'string') }}. - Open Check Calendar Availability and set Time Min to
{{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Start_Time', ``, 'string') }}and Time Max to{{ /*n8n-auto-generated-fromAI-override*/ $fromAI('End_Time', ``, 'string') }}.
Step 5: Configure the WhatsApp Reply Action
Return the AI’s final response to the user via WhatsApp.
- Open Send WhatsApp Reply and set Operation to
send. - Set Text Body to
{{ $json.output }}so the AI response is returned to the user. - Set Recipient Phone Number to
{{ $('Parse WhatsApp Context').item.json.userPhone }}. - Connect Intelligent Assistant → Send WhatsApp Reply.
Step 6: Test and Activate Your Workflow
Run a complete test to verify WhatsApp input, AI processing, and outgoing messages, then activate the workflow.
- Click Execute Workflow and send a test message to your WhatsApp Business number.
- Verify that Parse WhatsApp Context produces
chatInputanduserPhone, and that Intelligent Assistant returns anoutput. - Confirm that Send WhatsApp Reply delivers the response back to the sender.
- If testing Gmail or Calendar actions, verify the email sends or calendar updates in the target accounts.
- Toggle the workflow to Active to enable production use.
Watch Out For
- WhatsApp Business Cloud configuration is picky, and webhook URLs must match exactly. If replies stop, check your Meta Developer webhook setup and token validity 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.
- Google Calendar and Gmail OAuth scopes matter. If the assistant can “read” but can’t “create,” review the connected Google credentials inside n8n and re-auth with the correct permissions.
Common Questions
About 60–90 minutes once your WhatsApp and Google credentials are ready.
Yes, but you’ll want someone comfortable with connecting OAuth and copying webhook URLs. No coding is required inside n8n.
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 or Gemini API usage, which is usually small per message unless you’re summarizing lots of email text.
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.
Start with the AI Agent instructions and the memory settings, because that’s what controls how “human” the chat feels. You can swap the Gemini Chat Engine for an OpenAI Chat Model (or the other way around) without changing the calendar and Gmail actions. Common tweaks include setting rules for working hours, adding a default meeting length, and changing the confirmation message format so it matches your brand tone.
Most of the time it’s a webhook or token issue in Meta Developer settings, not n8n. Confirm the webhook URL, verify token, and that the WhatsApp app is subscribed to message events. If incoming messages arrive but replies fail, check the WhatsApp Business Cloud credentials inside n8n and make sure your phone number is approved for the environment you’re using. Rate limits can also show up when you test too aggressively in a short window, honestly.
On most n8n Cloud plans, the limit is based on monthly executions, so capacity depends on how many chat messages you process. If you self-host, there’s no execution cap; your server resources become the limiter.
Often, yes, because this isn’t a simple “message in, event out” zap. You need memory, branching logic, and tool selection based on intent, and those flows get expensive or awkward in Zapier/Make. n8n also gives you a clean path to self-host for unlimited runs, which matters when WhatsApp becomes your default interface. Zapier or Make can still win for very basic two-step automations and quick prototypes. Talk to an automation expert if you want a sanity check before you commit.
Once this is running, your chat becomes the front door and your calendar stays accurate. The workflow handles the busywork so you can get back to real work.
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.