🔓 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

WhatsApp to Google Calendar, scheduling done for you

Lisa Granqvist Partner Workflow Automation Expert

Your calendar breaks the moment scheduling lives in chat. A client sends a voice note, someone screenshots it “for later,” and the event either gets created wrong or not at all. That’s how double bookings happen.

This WhatsApp calendar automation hits office managers first, honestly. But agency owners juggling client calls and solo operators booking appointments feel it too. The outcome is simple: messages turn into clean Google Calendar events and updates without you copying anything.

You’ll see what the workflow does, what you need to run it, and the key spots you can tweak so it matches how your team schedules in real life.

How This Automation Works

The full n8n workflow, from trigger to final output:

n8n Workflow Template: WhatsApp to Google Calendar, scheduling done for you

The Problem: Scheduling Requests Don’t Arrive “Calendar-Ready”

Most scheduling requests arrive messy. A WhatsApp text might say “tomorrow afternoon,” a voice note adds the address, and the document attachment has the agenda. Then you (or someone on your team) has to interpret it, translate it into a calendar event, and reply back with confirmation. The risk isn’t just time. It’s the mental load of holding details in your head while trying not to miss something small, like the correct timezone or which client it belongs to.

It adds up fast. The friction compounds when the request comes in different formats and your “process” is basically copying and pasting between apps.

  • Each WhatsApp message becomes a mini project because you have to read, interpret, and re-type the same information into Google Calendar.
  • Voice notes and images slow everything down since someone must transcribe or “guess” details from media.
  • Small errors create real damage, like duplicate events, wrong meeting links, or showing up at the wrong time.
  • Even when you do it right, you still owe the sender a confirmation message, which is another manual step.

The Solution: Convert WhatsApp Messages Into Google Calendar Actions

This workflow listens for incoming WhatsApp messages through the Evolution API, then turns whatever the person sent (text, image, audio, or a document) into structured information the system can act on. If it’s an image, it extracts the meaning. If it’s a voice note, it transcribes it. If it’s a document, it summarizes it into usable event details. From there, an AI Agent decides what the user is trying to do, like create a new event, retrieve upcoming events, modify an existing booking, or delete one. Finally, it executes that action through Google Calendar tools and replies back in WhatsApp with a clear result.

The workflow starts when a WhatsApp message hits your webhook. Then Gemini turns media into text, the AI Agent interprets the request using short-term memory, and MCP tools trigger the right Google Calendar action. The last step sends a confirmation back to the user so nobody is left guessing.

What You Get: Automation vs. Results

Example: What This Looks Like

Say you handle 10 scheduling requests a week through WhatsApp. Manually, it’s often about 10 minutes each: listen to a voice note, confirm the date, create the event, then message back. That’s roughly 100 minutes, plus the interruptions. With this workflow, sending the message is the only “work” (about a minute), and the processing runs in the background for a couple minutes. You still review edge cases, but you’re no longer retyping calendars all week.

What You’ll Need

  • n8n instance (try n8n Cloud free)
  • Self-hosting option if you prefer (Hostinger works well)
  • Evolution API account to receive WhatsApp messages and media
  • Google Calendar to create and update real events
  • Gemini API key (get it from Google AI Studio)

Skill level: Intermediate. You’ll connect credentials, paste webhook URLs, and test a few message types.

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

How It Works

WhatsApp message arrives through a webhook. Evolution API calls your n8n webhook as soon as someone sends a text, voice note, image, or document.

The workflow identifies what was sent. A message-type switch routes the request so an audio note goes to transcription, an image goes to analysis, and a document goes to summarization. Unsupported media gets a polite “not supported” reply instead of silently failing.

Media becomes clean text the agent can understand. The workflow fetches the Base64 for the file, converts it into a binary attachment, and uses Gemini to extract or generate the text instructions (like dates, times, titles, and descriptions).

The AI Agent chooses the correct calendar action. With short-term memory (last eight messages), it figures out if the user wants to create, retrieve, update, or delete an event, then uses MCP tools to call Google Calendar.

A WhatsApp confirmation is sent back. The final response goes out via Evolution API, so the sender sees what was booked (or changed) without waiting on a human.

You can easily modify the agent instructions to match your booking rules 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 inbound webhook that starts the workflow and delivers incoming messages into the router.

  1. Add and configure Incoming Webhook Trigger.
  2. Set Path to Calendar and HTTP Method to POST.
  3. Copy the production webhook URL for use in your messaging platform.

Step 2: Route Message Types and Map Text

Route each incoming message type through the correct parsing path and map text for the AI agent.

  1. In Detect Message Format, verify the four rules evaluate {{ $json.body.data.messageType }} against conversation, imageMessage, audioMessage, and documentMessage.
  2. Confirm the fallback output is named Message not supported and connects to Unsupported Message Reply.
  3. In Map Text Fields, set text to {{ $json.body.data.message.conversation }} so conversation messages go directly to the agent.

Execution Flow: Incoming Webhook TriggerDetect Message FormatMap Text FieldsOrchestration Agent.

Step 3: Configure Media Retrieval and Conversion

Set up base64 retrieval and binary conversion for audio, images, and documents so they can be processed by Gemini.

  1. Configure Fetch Audio Base64, Retrieve Image Base64, and Fetch Document Base64 with Operation set to get-media-base64 and Message ID to {{ $json.body.data.key.id }}.
  2. In Convert Audio Binary, set Operation to toBinary, Source Property to data.base64, and Binary Property Name to data_1.
  3. In Convert Image Binary and Convert Document Binary, set Operation to toBinary and Source Property to data.base64.

Execution Flow: Detect Message FormatRetrieve Image Base64Convert Image BinaryImage Analysis and Detect Message FormatFetch Audio Base64Convert Audio BinaryAudio Transcription.

Execution Flow: Detect Message FormatFetch Document Base64Convert Document BinaryDocument Summary.

Credential Required: Connect your Evolution API credentials for all Evolution API nodes (5 nodes handle inbound and outbound media/messages).

Step 4: Set Up Gemini Processing and Mapping

Configure Gemini to transcribe audio, analyze images, and summarize documents, then map the resulting text for the agent.

  1. In Audio Transcription, set Resource to audio, Input Type to binary, and Binary Property Name to data_1.
  2. In Image Analysis, keep the long analysis prompt in Text and set Resource to image with Input Type binary.
  3. In Document Summary, set Text to What is this document about? Please provide a summary of the subject matter. Be as brief as possible. and Resource to document.
  4. Map AI outputs in Audio Text Mapping and Document Text Mapping with text set to {{ $json.content.parts[0].text }}.
  5. In Image Text Mapping, set Imagem_description to {{ $json.content.parts[0].text }} and image_caption to {{ $('Detect Message Format').item.json.body.data.message.imageMessage.caption }}.

Credential Required: Connect your Google Gemini credentials in Audio Transcription, Image Analysis, and Document Summary.

Step 5: Configure the AI Orchestration and Memory

Set up the agent that decides how to respond and uses memory and tools for calendar actions.

  1. In Gemini Chat Model, keep default settings to serve as the language model for Orchestration Agent.
  2. In Short-Term Memory, set Session Key to {{ $('Incoming Webhook Trigger').item.json.body.data.key.remoteJid }}, Session ID Type to customKey, and Context Window Length to 8.
  3. In Orchestration Agent, set Text to {{ $json.text }} and keep the defined system message instructions.
  4. Attach Calendar MCP Tool as an AI tool in Orchestration Agent with Endpoint URL https://hexagom-n8n.cloudfy.cloud/mcp/calendar.

Credential Required: Connect your Google Gemini credentials in Gemini Chat Model.

Short-Term Memory and Calendar MCP Tool are AI sub-nodes; they are configured through Orchestration Agent, so ensure the parent node is properly set up.

Step 6: Configure Calendar MCP Server and Google Calendar Tools

Expose calendar tools through the MCP server so the agent can create, retrieve, modify, and delete events.

  1. In MCP Calendar Server, set Path to calendar.
  2. In Create Calendar Event, set Start to {{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Start', ``, 'string') }} and End to {{ /*n8n-auto-generated-fromAI-override*/ $fromAI('End', ``, 'string') }}.
  3. In Create Calendar Event, set Calendar to {{ '[YOUR_EMAIL]' }}, and map Summary and Description using the provided $fromAI expressions.
  4. In Retrieve Calendar Events, 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') }}.
  5. In Remove Calendar Event and Modify Calendar Event, set Event ID to {{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Event_ID', ``, 'string') }} and set Calendar to {{ '[YOUR_EMAIL]' }}.

Credential Required: Connect your Google Calendar credentials for Create Calendar Event, Retrieve Calendar Events, Remove Calendar Event, and Modify Calendar Event.

Step 7: Configure Response Dispatch

Send the agent’s response back to the original sender.

  1. In Dispatch Response, set Remote Jid to {{ $('Incoming Webhook Trigger').item.json.body.data.key.remoteJid }}.
  2. Set Message Text to {{ $json.output }}.

Credential Required: Connect your Evolution API credentials in Dispatch Response and Unsupported Message Reply.

Step 8: Test and Activate Your Workflow

Validate end-to-end behavior and activate for production.

  1. Use Execute Workflow and send test POST requests to Incoming Webhook Trigger for conversation, image, audio, and document messages.
  2. Confirm successful execution: text routes through Map Text Fields, media routes through the conversion and Gemini nodes, and responses are delivered by Dispatch Response.
  3. Verify calendar actions through Create Calendar Event, Retrieve Calendar Events, Modify Calendar Event, and Remove Calendar Event when the agent decides tools are required.
  4. When ready, toggle the workflow to Active so the webhook runs in production.
🔒

Unlock Full Step-by-Step Guide

Get the complete implementation guide + downloadable template

Common Gotchas

  • Google Calendar OAuth credentials can expire or need specific permissions. If things break, check n8n’s Credentials screen and the connected Google account access 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.
  • Evolution API instance settings matter more than you think. If replies stop sending, confirm the instance name is filled in across Evolution API nodes and that the webhook URL is still active in the Evolution panel.

Frequently Asked Questions

How long does it take to set up this WhatsApp calendar automation automation?

About an hour if your accounts and APIs are ready.

Do I need coding skills to automate WhatsApp calendar automation?

No. You will mostly paste credentials and map a few fields. The “hard part” is testing different message types so you trust the outputs.

Is n8n free to use for this WhatsApp calendar automation 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 Gemini API usage and any WhatsApp/Evolution API plan costs.

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 WhatsApp calendar automation workflow for multiple calendars (personal + team)?

Yes, but you’ll want to be explicit in the agent prompt about which calendar to use, and connect the right Google Calendar credentials. Many teams route “client bookings” to one calendar and internal tasks to another, then adjust the Create/Modify tool calls accordingly. If you add extra MCP tools, the overall structure stays the same.

Why is my Evolution API connection failing in this workflow?

Usually it’s an instance mismatch or a webhook configuration issue. Double-check the instance name in every Evolution API node, then confirm the webhook URL is correctly pasted in the Evolution API panel for that same instance. If it used to work and suddenly doesn’t, rotate credentials and verify the provider isn’t blocking requests from your server.

How many messages can this WhatsApp calendar automation automation handle?

If you self-host, there’s no hard execution cap, so it mostly depends on your server and API limits.

Is this WhatsApp calendar automation automation better than using Zapier or Make?

Often, yes, because this workflow needs branching by message type, file handling, and an agent that can choose between create/update/delete actions. n8n is comfortable with that kind of logic, and you can self-host when volume grows. Zapier or Make can still work if your use case is simpler, like “every WhatsApp text creates a calendar event,” but they get awkward once you introduce voice notes, images, or documents. Cost is the other factor. High message volume can get pricey on per-task pricing. Talk to an automation expert if you want a quick recommendation for your exact setup.

Your WhatsApp inbox can be where requests start, not where scheduling goes to die. Set this up once, let it run, and keep your Google Calendar trustworthy again.

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