Zoom to Google Docs, meeting notes your team uses
Meeting ends, and then the slow drip starts. Someone promises notes. Someone else asks in Slack. Two days later, you’re piecing together decisions from half-remembered comments and a messy transcript.
This is where Zoom meeting notes fall apart for marketing leads running weekly syncs, ops managers juggling handoffs, and founders trying to keep momentum. You want decisions, action items, and owners shared fast, without one more “who’s writing this up?” message.
This n8n workflow grabs the Zoom transcript when the meeting ends, turns it into usable notes with AI, saves everything in Google Docs, and posts a Slack recap with the link. You’ll see exactly what it automates, what results to expect, and what you need to run it reliably.
How This Automation Works
The full n8n workflow, from trigger to final output:
n8n Workflow Template: Zoom to Google Docs, meeting notes your team uses
flowchart LR
subgraph sg0["Flow 1"]
direction LR
n0["<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/>Zoom Meeting Webhook"]
n1["<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/code.svg' width='40' height='40' /></div><br/>Normalize Data"]
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/openAi.dark.svg' width='40' height='40' /></div><br/>Generate AI Notes"]
n3@{ icon: "mdi:cog", form: "rounded", label: "Save to Google Docs", pos: "b", h: 48 }
n4["<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/slack.svg' width='40' height='40' /></div><br/>Post to Slack"]
n1 --> n2
n2 --> n3
n3 --> n4
n0 --> n1
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 n0 api
class n1 code
classDef customIcon fill:none,stroke:none
class n0,n1,n2,n4 customIcon
The Problem: Meeting Notes Don’t Ship (or Don’t Get Read)
Most teams aren’t struggling to have meetings. They’re struggling to turn meetings into decisions people can act on. The transcript lives somewhere, maybe in Zoom, maybe in someone’s downloads folder, and it’s honestly not readable unless you were in the call. Then you’ve got the recap problem: someone has to write it, format it, share it, answer follow-up questions, and then re-share it when people inevitably miss the first message. Multiply that by a few meetings a week and you’re burning hours on admin work that does nothing for pipeline, delivery, or customer outcomes.
It adds up fast. Here’s where it usually breaks down.
- Notes get delayed, so action items start late and deadlines slip.
- Everyone interprets the “decision” differently because there’s no single written source of truth.
- Transcripts are long and noisy, which means nobody reads them unless there’s a problem.
- Slack gets flooded with “any updates?” messages, and the original context gets buried.
The Solution: Zoom Transcript → Google Doc Notes → Slack Recap
This workflow listens for Zoom events that happen when a meeting is finished (like meeting.ended or recording.completed). As soon as Zoom sends the payload, n8n cleans it up, pulls out the details you actually care about (topic, host, duration, transcript), and hands the transcript to GPT-4 for a proper summary. Not a fluffy paragraph. You get structured notes: key decisions, action items with owners, and next steps. Then it stores the formatted notes plus a transcript archive in Google Docs, so the record is easy to find later. Finally, it posts a clear recap in Slack with a direct link to the doc, so the whole team sees it in the channel you choose (like #team-meetings).
The workflow starts when Zoom tells you the meeting is over. From there, AI turns the raw transcript into a decision-focused summary. Google Docs becomes the permanent archive, and Slack becomes the distribution layer so nobody has to chase the link.
What You Get: Automation vs. Results
| What This Workflow Automates | Results You’ll Get |
|---|---|
|
|
Example: What This Looks Like
Say your team runs 6 Zoom meetings a week and you want a consistent recap shared after each one. Manually, a transcript skim plus a decent write-up is usually about 30 minutes per meeting, then another 5 minutes to format and post a link, so you’re looking at roughly 3.5 hours weekly. With this workflow, the “work” is basically zero after setup: Zoom triggers it, AI summarizes, Google Docs saves, Slack posts. Most teams see the recap land in the channel within about 5 minutes of the meeting ending, which means you get those 3+ hours back and the update loop closes the same day.
What You’ll Need
- n8n instance (try n8n Cloud free)
- Self-hosting option if you prefer (Hostinger works well)
- Zoom to send meeting end events.
- Google Docs to store the notes and transcript.
- Slack to publish the recap and doc link.
- OpenAI API key (get it from the OpenAI dashboard).
Skill level: Intermediate. You’ll connect a few accounts, paste a webhook URL into Zoom, and test with a real meeting payload.
Don’t want to set this up yourself? Talk to an automation expert (free 15-minute consultation).
How It Works
Zoom ends the meeting and calls your webhook. Zoom fires an event like meeting.ended (or recording.completed if you prefer waiting for recordings), and n8n receives the payload instantly.
The workflow cleans up the payload. A small code step standardizes fields like meeting topic, host, duration, and transcript so the AI step gets consistent inputs instead of “sometimes it’s here, sometimes it’s there.”
AI produces notes your team can act on. The OpenAI (GPT-4) step summarizes the transcript into a structured output: executive summary, decisions, action items with owners, and next steps. This is the part that turns “meeting happened” into “work starts now.”
Google Docs stores the source of truth and Slack shares it. n8n creates a Google Doc in your Drive, then posts a Slack message with the key details and a link so the recap shows up where people already communicate.
You can easily modify the Slack channel and the note format 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 entry point that Zoom will call when a meeting ends.
- Add the Incoming Zoom Webhook node as your trigger.
- Set HTTP Method to
POST. - Set Path to
zoom-meeting-ended. - Copy the production webhook URL and add it to your Zoom Webhook configuration for meeting ended events.
Step 2: Connect and Normalize the Incoming Data
Normalize the Zoom payload into a consistent structure for downstream processing.
- Add the Standardize Payload node after Incoming Zoom Webhook.
- Paste the provided JavaScript into Code so it maps fields like meeting ID, topic, host, and timestamps.
- Confirm the output includes
meeting_id,topic,host,duration, andtimestampas defined in the script.
Step 3: Set Up Produce AI Summary
Generate a concise meeting summary with AI after the payload is standardized.
- Add the Produce AI Summary node connected to Standardize Payload.
- Set Resource to
chatand Operation tocreate. - Credential Required: Connect your OpenAI API credentials.
{{$json.topic}} and {{$json.transcript}} for richer outputs.Step 4: Configure Output Nodes
Archive notes in Google Docs and notify your Slack channel.
- Add the Archive in Google Docs node after Produce AI Summary.
- Set Title to
Meeting Notes - {{ $json.topic }} - {{ $json.timestamp }}. - Credential Required: Connect your Google Docs OAuth2 credentials.
- Add the Slack Notes Alert node after Archive in Google Docs.
- Set Channel to
[YOUR_ID]. - Set Text to
📝 *New Meeting Notes Available*\n*Topic:* {{ $('Standardize Payload').item.json.topic }}\n*Host:* {{ $('Standardize Payload').item.json.host }}\n*Duration:* {{ $('Standardize Payload').item.json.duration }} mins\n\n👉 Read full notes here: {{ $('Archive in Google Docs').item.json.webViewLink }}. - Credential Required: Connect your Slack OAuth2 credentials.
webViewLink field before Slack executes.Step 5: Test and Activate Your Workflow
Validate each node and then enable the automation for real meeting events.
- Click Test workflow and send a sample Zoom webhook event to Incoming Zoom Webhook.
- Verify Standardize Payload outputs normalized fields and Produce AI Summary returns an AI-generated response.
- Confirm a new Google Doc is created by Archive in Google Docs with the expected title format.
- Check that Slack Notes Alert posts a message with a valid document link.
- Toggle the workflow to Active to process real Zoom meetings.
Common Gotchas
- Zoom webhooks won’t fire if your Zoom App event subscription isn’t active or the secret/token is wrong. If Slack stops getting recaps, check the Zoom Developer Console event 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.
- Default prompts in AI nodes are generic. Add your brand voice early or you’ll be editing outputs forever.
Frequently Asked Questions
About 30 minutes if your Zoom, Google, and Slack accounts are ready.
No. You’ll mostly connect accounts and paste the webhook URL into your Zoom App settings.
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 API costs (often a few cents per meeting, depending on transcript length).
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, and you should. Update the prompt inside the “Produce AI Summary” step to match your template (for example: “Risks,” “Customer asks,” or “Blockers”). You can also adjust the Google Docs formatting in “Archive in Google Docs” so every doc starts with the same headings. Common tweaks include changing the Slack message layout, adding tags like project name, and routing recaps to different channels based on the meeting topic.
Usually it’s a Zoom webhook subscription issue, not n8n. Confirm the event you enabled (like meeting.ended) matches what you’re testing, and check that the webhook URL in Zoom is exactly the one from the n8n “Incoming Zoom Webhook” node. If it suddenly stopped working, regenerate credentials or re-activate the event subscription in the Zoom Developer Console. Also check if your Zoom account admin changed app permissions, because that can silently break deliveries.
On n8n Cloud Starter, you can typically run thousands of executions per month, and each meeting is usually one execution. If you self-host, there’s no execution limit (it mostly depends on your server). Practically, the main limiter is transcript size and OpenAI throughput, so very long meetings can take a bit longer to summarize.
Often, yes. n8n is better when you want more control over the data cleanup (the “Standardize Payload” logic), consistent formatting, and the option to self-host without paying per task. Zapier and Make can work if you only need a simple “Zoom ends → send message” flow, but they get pricey when you add AI steps and branching. If you’re unsure, Talk to an automation expert and you’ll get a straight answer based on volume and complexity.
Once this is live, meeting notes stop being a weekly bottleneck and start being a reliable system. The workflow handles the repeatable part, so your team can focus on doing the work that was agreed to.
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.