WhatsApp to Gmail and Google Calendar, admin handled
You know that feeling when a simple WhatsApp message turns into five tabs, two follow-ups, and one detail you hope you didn’t miss. It’s not hard work. It’s just constant switching, which is where mistakes sneak in.
Ops leads get dragged into this because “it’s quick.” Founders end up doing it at night. And client-facing teams feel it most when scheduling and email replies stack up. This WhatsApp admin automation turns chat messages into Gmail drafts and Google Calendar actions without you juggling tools.
You’ll see what the workflow does, what you need to run it, and how to adapt it so your inbox and calendar stay updated from one place: the chat thread.
How This Automation Works
The full n8n workflow, from trigger to final output:
n8n Workflow Template: WhatsApp to Gmail and Google Calendar, admin handled
flowchart LR
subgraph sg0["WhatsApp Flow"]
direction LR
n0@{ icon: "mdi:brain", form: "rounded", label: "Google Gemini Chat Model", pos: "b", h: 48 }
n1@{ icon: "mdi:memory", form: "rounded", label: "Simple Memory", pos: "b", h: 48 }
n2["<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"]
n3["<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 message"]
n4@{ icon: "mdi:wrench", form: "rounded", label: "email_agent", pos: "b", h: 48 }
n5@{ icon: "mdi:message-outline", form: "rounded", label: "Send Email", pos: "b", h: 48 }
n6@{ icon: "mdi:message-outline", form: "rounded", label: "Create Draft", pos: "b", h: 48 }
n7@{ icon: "mdi:message-outline", form: "rounded", label: "Email Reply", pos: "b", h: 48 }
n8@{ icon: "mdi:message-outline", form: "rounded", label: "Get Labels", pos: "b", h: 48 }
n9@{ icon: "mdi:message-outline", form: "rounded", label: "Label Emails", pos: "b", h: 48 }
n10@{ icon: "mdi:message-outline", form: "rounded", label: "Mark Unread", pos: "b", h: 48 }
n11@{ icon: "mdi:message-outline", form: "rounded", label: "Gmail", pos: "b", h: 48 }
n12@{ icon: "mdi:memory", form: "rounded", label: "Window Buffer Memory2", pos: "b", h: 48 }
n13@{ icon: "mdi:brain", form: "rounded", label: "Google Gemini Chat Model4", pos: "b", h: 48 }
n14@{ icon: "mdi:wrench", form: "rounded", label: "calendar_agent", pos: "b", h: 48 }
n15@{ icon: "mdi:location-exit", form: "rounded", label: "Get all event", pos: "b", h: 48 }
n16@{ icon: "mdi:location-exit", form: "rounded", label: "Delete event", pos: "b", h: 48 }
n17@{ icon: "mdi:location-exit", form: "rounded", label: "Get a single event", pos: "b", h: 48 }
n18@{ icon: "mdi:location-exit", form: "rounded", label: "Update event", pos: "b", h: 48 }
n19@{ icon: "mdi:location-exit", form: "rounded", label: "Availablity operation agent", pos: "b", h: 48 }
n20@{ icon: "mdi:location-exit", form: "rounded", label: "Create Event with attendee", pos: "b", h: 48 }
n21@{ icon: "mdi:location-exit", form: "rounded", label: "Create Event without attendee", pos: "b", h: 48 }
n22@{ icon: "mdi:brain", form: "rounded", label: "Google Gemini Chat Model5", pos: "b", h: 48 }
n23@{ icon: "mdi:robot", form: "rounded", label: "Personal Agent", pos: "b", h: 48 }
n11 -.-> n4
n8 -.-> n4
n5 -.-> n4
n7 -.-> n4
n10 -.-> n4
n4 -.-> n23
n6 -.-> n4
n16 -.-> n14
n9 -.-> n4
n18 -.-> n14
n15 -.-> n14
n1 -.-> n23
n23 --> n3
n14 -.-> n23
n2 --> n23
n17 -.-> n14
n12 -.-> n4
n0 -.-> n23
n13 -.-> n4
n22 -.-> n14
n20 -.-> n14
n19 -.-> n14
n21 -.-> n14
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 n2 trigger
class n23 ai
class n0,n13,n22 aiModel
class n4,n14 ai
class n1,n12 ai
classDef customIcon fill:none,stroke:none
class n2,n3 customIcon
The Problem: WhatsApp Requests Create Hidden Admin Debt
Most “quick” WhatsApp requests aren’t quick at all. A client messages “Can we do Thursday at 2?” and suddenly you’re checking availability, drafting a confirmation email, adding guests, labeling the thread, and trying to remember what the original request even said. Then someone replies with a new time, so you repeat it. The pain isn’t one big task. It’s the drip of tiny tasks that steals focus, creates delays, and makes you look disorganized when one step gets missed.
The friction compounds. Here’s where it usually breaks down.
- Messages get answered in WhatsApp, but the calendar never gets updated, so you end up with double-bookings or “phantom” holds.
- Email drafts don’t get created while the context is fresh, which means replies get slower and more generic.
- Labeling, marking unread, and threading replies turns into a messy inbox that’s hard to audit later.
- When the same question comes up again (“What did we agree on?”), you waste time searching across apps instead of just looking at one consistent record.
The Solution: A WhatsApp AI Assistant That Updates Gmail + Calendar
This workflow turns WhatsApp into a real assistant, not just a notification channel. A message hits your WhatsApp Business number and n8n hands it to a primary AI coordinator powered by Google Gemini. That “manager” reads the intent, then delegates the work to a specialist: an email tool for Gmail actions, a calendar tool for Google Calendar actions, or a general chat path for normal questions. The assistant can draft or send emails, reply inside threads, fetch and apply labels, and even mark messages unread for later review. On the calendar side, it can check availability, create events (with or without guests), modify existing events, or remove them when plans change. Finally, it sends a clean response back to WhatsApp so the conversation stays the control center.
The workflow starts with the incoming WhatsApp trigger. Then Gemini classifies what you meant and pulls in short-term memory so it doesn’t “forget” the context mid-conversation. The right tool executes the Gmail or Calendar action, and WhatsApp gets the confirmation message.
What You Get: Automation vs. Results
| What This Workflow Automates | Results You’ll Get |
|---|---|
|
|
Example: What This Looks Like
Say you handle 10 scheduling or “please email this” requests per week over WhatsApp. Manually, you might spend about 10 minutes per request checking Google Calendar, creating the event, and drafting the Gmail reply, which is roughly 1.5 to 2 hours weekly. With this workflow, you send one message in WhatsApp, wait a minute or two for processing, and you get a confirmation back in the same chat. Most teams end up using that saved time to actually prep for meetings instead of chasing logistics.
What You’ll Need
- n8n instance (try n8n Cloud free)
- Self-hosting option if you prefer (Hostinger works well)
- WhatsApp Business Cloud (Meta) to send and receive WhatsApp messages
- Google Workspace (Gmail + Google Calendar) to draft emails and manage events
- Google Gemini API Key (get it from Google AI Studio or your Google Cloud project)
Skill level: Intermediate. You will connect credentials, copy webhook URLs into Meta, and test a few real messages 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 message triggers the workflow. The WhatsApp Business Cloud trigger listens for new messages sent to your business number and passes the text into the automation.
The AI coordinator figures out what you mean. Google Gemini reads the message (plus a short memory window of recent context) and decides if this is an email task, a calendar task, or just a normal question.
The right tool does the work in Google. For email, the workflow can generate a draft, send a message, fetch threads, apply labels, or flag something unread. For calendar, it can check availability, create events with guests, update details, or remove an event when plans change.
A confirmation goes back to WhatsApp. You get a response like “Draft created” or “Event booked and guests invited,” which keeps everything anchored to the chat conversation.
You can easily modify the assistant’s commands and tone to match your team’s language based on your needs. See the full implementation guide below for customization options.
Step-by-Step Implementation Guide
Step 1: Configure the Incoming WhatsApp Trigger
This workflow starts when a WhatsApp message arrives and immediately routes the message to the AI coordinator.
- Add or open Incoming WhatsApp Trigger.
- Keep the default Updates setting so it listens for
messages. - Verify the execution flow: Incoming WhatsApp Trigger → Primary AI Coordinator.
Step 2: Connect Google Workspace & Gemini Credentials
This assistant uses Gemini for reasoning and Gmail/Google Calendar tools for actions. Connect credentials for each configured node.
- Credential Required: Connect your googlePalmApi credentials in Gemini Chat Engine and set Model Name to
models/gemini-2.5-pro. - Credential Required: Connect your googlePalmApi credentials in Gemini Mail Model and Gemini Calendar Model.
- Credential Required: Connect your gmailOAuth2 credentials to all Gmail action nodes (7 nodes): Dispatch Email Notice, Generate Email Draft, Reply to Email Thread, Retrieve Email Labels, Apply Email Labels, Flag Email Unread, and Fetch Email Messages.
- Credential Required: Connect your googleCalendarOAuth2Api credentials to all Calendar action nodes (7 nodes): Retrieve Calendar Events, Remove Calendar Event, Fetch Single Event, Modify Calendar Event, Check Calendar Availability, Create Event With Guests, and Create Event Solo.
- For Calendar nodes, set the Calendar selection to
[YOUR_EMAIL]where shown (e.g., in Retrieve Calendar Events).
Step 3: Set Up Primary AI Coordinator
The central AI agent processes WhatsApp messages, uses memory, and calls the email/calendar tools.
- Open Primary AI Coordinator and set Text to
={{ $json.text }}. - Ensure Prompt Type is
=defineand Has Output Parser is enabled. - Confirm Gemini Chat Engine is connected as the language model for Primary AI Coordinator (credentials are handled in Step 2).
- Connect memory by opening Basic Memory Buffer and setting Session Key to
[CONFIGURE_YOUR_TOKEN], Session ID Type tocustomKey, and Context Window Length to10.
Step 4: Configure Email and Calendar AI Tools
The AI coordinator delegates email and calendar actions to dedicated tool agents and their connected nodes.
- Open Email Assistant Tool and set Text to
={{ $fromAI('Prompt__User_Message_', ``, 'string') }}. - Verify Email Memory Window has Session Key set to
[YOUR_EMAIL]and Session ID Type set tocustomKey. - Confirm Gemini Mail Model is connected as the language model for Email Assistant Tool (credentials are handled in Step 2).
- Open Calendar Assistant Tool and set Text to
={{ $fromAI('Prompt__User_Message_', ``, 'string') }}. - Confirm Gemini Calendar Model is connected as the language model for Calendar Assistant Tool (credentials are handled in Step 2).
Step 4: Configure WhatsApp Reply Output
After the AI generates a response, it sends the reply back to the user on WhatsApp.
- Open Dispatch WhatsApp Reply and set Operation to
send. - Set Text Body to
={{ $json.output }}so it sends the AI output. - Replace Phone Number ID with
[YOUR_ID]and Recipient Phone Number with[YOUR_PHONE]. - Verify the flow: Primary AI Coordinator → Dispatch WhatsApp Reply.
[YOUR_PHONE] when moving to production so you can route replies per user.Step 5: Test and Activate Your Workflow
Run a full test to confirm the AI, Gmail, Calendar, and WhatsApp responses work end-to-end.
- Click Test workflow and send a WhatsApp message to the connected number.
- Confirm Incoming WhatsApp Trigger fires and Primary AI Coordinator returns a response payload with an
outputfield. - Verify that Dispatch WhatsApp Reply sends the response back to your phone.
- Test email tasks (e.g., “send an email to...”) and calendar tasks (e.g., “schedule a meeting...”) to ensure tool calls succeed.
- When everything works, toggle the workflow to Active for production use.
Common Gotchas
- WhatsApp Business Cloud credentials can expire or lack the right permissions. If things break, check your Meta App dashboard token, phone number ID, and webhook subscription status 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.
- Default prompts in AI nodes are generic. Add your brand voice early or you’ll be editing outputs forever.
Frequently Asked Questions
About 45 minutes if your Meta and Google accounts are ready.
No. You’ll mostly be pasting webhook URLs and selecting credentials in n8n. The “hard part” is usually getting Meta WhatsApp permissions approved, not writing 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 Google Gemini API usage costs, which depend on your model and message volume.
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 want to be intentional about it. A common tweak is to force Gmail actions to create drafts only (not send) by limiting what the Email Assistant Tool is allowed to do, then using WhatsApp to ask for a final “Send it” confirmation. You can also tighten the calendar behavior so it only creates events after the assistant has checked availability and repeated the details back to you. If you’re using labels, add your preferred label rules early so every thread stays organized from day one.
Usually it’s an access token issue or a webhook mismatch. Check that your Meta App webhook callback URL is the same one shown in the WhatsApp Trigger node, and that you subscribed to the messages event. Also confirm the phone number ID is correct and your token hasn’t expired.
On a typical n8n Cloud plan, it can handle hundreds to thousands of messages per month, and self-hosting scales based on your server. In practice, WhatsApp and Gemini rate limits matter more than n8n does.
Often, yes, because this workflow relies on an AI “router” plus tool-like actions (draft, label, check availability, update event) that get awkward in simple two-step builders. n8n is also easier to self-host, which matters when message volume grows and you don’t want to pay per task. Zapier and Make can still work if your needs are basic, like “when message contains a date, create event.” This one goes further by keeping context with memory and supporting real back-and-forth. Talk to an automation expert if you want help choosing the cleanest approach.
Once this is live, WhatsApp stops being a source of “extra admin” and starts acting like a control panel. The workflow handles the repetitive updates so you can stay focused on the 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.