Google Calendar to Gmail, meeting briefs ready to skim
You join a call and realize you barely know who’s on it. So you start “tab hunting”: LinkedIn, company site, old email threads, maybe a quick Google search, all while the meeting timer ticks.
This calendar email brief problem hits account managers first. But founders running back-to-back calls and marketing leads doing partner chats feel it too. You will walk into meetings with a skim-ready briefing in your inbox, built automatically from the attendee list.
This workflow watches your Google Calendar, researches each attendee and their company, then emails a clean meeting brief via Gmail. You’ll see what it does, what you need, and where teams usually trip up.
How This Automation Works
The full n8n workflow, from trigger to final output:
n8n Workflow Template: Google Calendar to Gmail, meeting briefs ready to skim
flowchart LR
subgraph sg0["Google Calendar Flow"]
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/httprequest.dark.svg' width='40' height='40' /></div><br/>Research Company"]
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/httprequest.dark.svg' width='40' height='40' /></div><br/>Research Person"]
n2@{ icon: "mdi:play-circle", form: "rounded", label: "Google Calendar Trigger", pos: "b", h: 48 }
n3@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Filter Out Myself", pos: "b", h: 48 }
n4@{ icon: "mdi:swap-vertical", form: "rounded", label: "Split Out Attendees", pos: "b", h: 48 }
n5@{ icon: "mdi:swap-vertical", form: "rounded", label: "For Each Attendee", pos: "b", h: 48 }
n6@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Is Company Email?", pos: "b", h: 48 }
n7@{ icon: "mdi:cog", form: "rounded", label: "Combine All Research", pos: "b", h: 48 }
n8@{ icon: "mdi:swap-vertical", form: "rounded", label: "Collect Fields", pos: "b", h: 48 }
n9["<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/markdown.dark.svg' width='40' height='40' /></div><br/>Write HTML"]
n10@{ icon: "mdi:swap-vertical", form: "rounded", label: "Edit Fields", pos: "b", h: 48 }
n11@{ icon: "mdi:message-outline", form: "rounded", label: "Send Report", pos: "b", h: 48 }
n12@{ icon: "mdi:swap-vertical", form: "rounded", label: "Person Prompt", pos: "b", h: 48 }
n13@{ icon: "mdi:swap-vertical", form: "rounded", label: "Company Prompt", pos: "b", h: 48 }
n9 --> n11
n10 --> n4
n12 --> n1
n8 --> n5
n13 --> n0
n1 --> n8
n0 --> n12
n3 --> n5
n5 --> n7
n5 --> n6
n6 --> n13
n6 --> n12
n4 --> n3
n7 --> n9
n2 --> n10
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 n3,n6 decision
class n0,n1 api
classDef customIcon fill:none,stroke:none
class n0,n1,n9 customIcon
The Problem: Meeting prep gets squeezed out
Meeting prep is one of those tasks that feels “optional” until it isn’t. You mean to look people up, but the day gets busy and the invite starts in five minutes. Then you’re scanning names mid-call, missing context, and asking questions you could have answered yourself. It’s not just awkward. It affects discovery, negotiation, and trust. And when you do try to prep, it’s repetitive: the same searches, the same “what does this company do?” notes, the same copy-paste into a doc you never open again.
The friction compounds. Here’s where it breaks down.
- You spend about 10 minutes per attendee doing quick research, then still forget half of it.
- Someone forwards you a calendar invite and you have zero context on who’s actually showing up.
- Names don’t always match emails, so you second-guess whether you found the right person.
- Prep lives in scattered tabs or a scratch doc, which means it never becomes a repeatable habit.
The Solution: Auto-send a meeting brief from each new event
This workflow turns every newly scheduled Google Calendar event into a simple briefing email you can skim right before the call. When a new event appears, it pulls the attendee list, removes you from that list, and then loops through each person one at a time. For each attendee, it checks if the email looks like a work email (so the workflow can make smarter assumptions about company context). Then it uses web search via the OpenAI Responses API to research the attendee’s company and the person themselves, and it assembles everything into a neat summary. Finally, n8n renders the briefing as HTML and sends it to the email address you choose using Gmail.
It starts with a calendar trigger. The middle is a research-and-assemble loop for each attendee (company first, then person). The end result is a single “meeting brief” email that lands in your inbox before you join.
What You Get: Automation vs. Results
| What This Workflow Automates | Results You’ll Get |
|---|---|
|
|
Example: What This Looks Like
Say you have 4 external calls this week, and each one averages 3 attendees. If you do manual prep at roughly 10 minutes per attendee, that’s about 2 hours of searching and note-taking. With this workflow, you spend maybe 2 minutes setting the “send to” email and your personal context once, then each new event generates a brief automatically while you keep working. The research may take a few minutes in the background, but your hands are off the keyboard.
What You’ll Need
- n8n instance (try n8n Cloud free)
- Self-hosting option if you prefer (Hostinger works well)
- Google Calendar for detecting new scheduled events.
- Gmail to send the meeting briefing email.
- OpenAI API key (get it from your OpenAI account dashboard).
Skill level: Intermediate. You’ll connect accounts, add an API key header, and edit a couple fields like the destination email.
Don’t want to set this up yourself? Talk to an automation expert (free 15-minute consultation).
How It Works
A new calendar event triggers the workflow. When an event is added in Google Calendar, n8n grabs the invite details and the attendee emails right away.
The attendee list gets cleaned up. The workflow expands the attendee array, filters out your own address, and prepares a list it can loop over without mixing people together.
Research happens per attendee. n8n processes attendees in batches, checks if the address looks like a work email, then builds two search queries: one for the company and one for the person. Those queries run through HTTP Request nodes that use OpenAI’s web search capability, and the workflow captures the useful bits into consistent fields.
A single email is assembled and sent. After the loop, results get aggregated into one combined brief, rendered into a readable HTML summary, then sent via Gmail to the address you set in the “Configure Inputs” step.
You can easily modify who receives the email and what “context about yourself” is included based on your needs. See the full implementation guide below for customization options.
Step-by-Step Implementation Guide
Step 1: Configure the Google Calendar Trigger
Set up the trigger so the workflow starts when a new calendar event is created.
- Add the Calendar Event Watcher node as the trigger.
- Set Trigger On to
eventCreated. - Set Poll Times to
everyMinute. - Select the Calendar ID to match your calendar (update the placeholder
[YOUR_EMAIL]). - Credential Required: Connect your googleCalendarOAuth2Api credentials.
Step 2: Connect Google Calendar and Initialize Inputs
Prepare the context and attendee list that the workflow will use for research prompts and delivery.
- In Configure Inputs, set context to
I am working in web development, based in Singapore/Australia, and I work with startups(edit as needed). - Set email to
[YOUR_EMAIL]so the briefing is sent to you. - Set attendees to
{{ $json.attendees }}to pass in the event attendee list. - Keep the Flowpast Branding node for reference; it’s a static note and does not affect execution.
[YOUR_EMAIL] is not updated in Configure Inputs, the workflow will send the briefing to the placeholder address.Step 3: Set Up Attendee Processing
Split the attendees into individual items, exclude yourself, and prepare for iteration and conditional routing.
- In Expand Attendee List, set Field To Split Out to
=attendees. - In Exclude Self Attendee, keep the condition
{{ $json.self }}set to false to remove your own address. - Use Iterate Attendees to batch process each attendee (leave defaults unless you want to limit batch size).
- Note that Iterate Attendees outputs to both Aggregate Findings and Check Work Email in parallel, enabling accumulation while research runs.
Step 4: Set Up Research Queries and Routing
Build prompts for company and person research, then route based on whether the email appears to be a personal address.
- In Check Work Email, keep the condition that checks
{{ $('Iterate Attendees').item.json.email }}with notRegex against personal email domains. - In Build Company Query, set prompt to the full expression that builds a company lookup using
{{ $('Iterate Attendees').item.json.email.split("@")[1] }}and{{ $('Configure Inputs').item.json.context }}. - In Company Research Request, set URL to
https://api.openai.com/v1/responses, Request Method toPOST, and Body Parameters JSON to{{ JSON.stringify({ model: "gpt-4o", tools: [{ type: "web_search_preview" }], input: $json.prompt }) }}. - Credential Required: Connect your httpHeaderAuth credentials in Company Research Request.
- In Build Person Query, set prompt to the full expression that includes
{{ $('Iterate Attendees').item.json.email }}and your context from{{ $('Configure Inputs').item.json.email }}. - In Person Research Request, mirror the same OpenAI request settings and body JSON as the company request.
- Credential Required: Connect your httpHeaderAuth credentials in Person Research Request.
Step 5: Configure Output Assembly and Email Delivery
Combine research output, render the briefing in HTML, and email it to the configured recipient.
- In Assemble Output Fields, map person to
{{ $json.output[1].content[0].text }}, company to the conditional expression referencing Company Research Request, and email to{{ $('Iterate Attendees').item.json.email }}. - In Aggregate Findings, set Aggregate to
aggregateAllItemDatato collect all attendee results. - In Render HTML Summary, set Mode to
markdownToHtmland use the provided markdown expression for the briefing. - In Email Briefing, set Send To to
{{ $('Configure Inputs').item.json.email }}, Message to{{ $json.data }}, and Subject toMeeting Briefing: {{ $('Calendar Event Watcher').item.json.summary }} ({{ new Date($('Calendar Event Watcher').item.json.start.dateTime).format("dd/MM/yyyy") }}). - Credential Required: Connect your gmailOAuth2 credentials in Email Briefing.
output[1].content[0].text.Step 6: Test and Activate Your Workflow
Run a manual test to confirm the workflow generates and emails the briefing, then activate it for ongoing use.
- Click Execute Workflow and create a new calendar event with at least one attendee.
- Confirm that Calendar Event Watcher triggers and that Render HTML Summary produces HTML output.
- Check your inbox to verify that Email Briefing sends a message with the expected subject and content.
- Activate the workflow using the Active toggle once the test succeeds.
Common Gotchas
- Google Calendar credentials can expire or need specific permissions. If things break, check the n8n credential connection test and your Google account access settings 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 you already have your accounts ready.
No. You’ll connect Google and OpenAI credentials, then edit a couple fields like the recipient email.
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, which are usually a few cents per briefing depending on how many attendees you research.
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 swap the final “Email Briefing” Gmail send step for a Slack message action. Most people also tweak the “Render HTML Summary” output to a shorter plain-text format, so it reads well in a channel. Common changes include sending the brief to the event organizer, only briefing external attendees, or adding a section with talking points based on the meeting title.
Usually it’s an expired OAuth connection or a permission scope issue. Reconnect the Google Calendar credential in n8n, then confirm the trigger can still “see” newly created events on the right calendar. If it only fails sometimes, check whether the event data is missing attendee emails (some invites only include names), because the loop needs email addresses to research people reliably.
A lot, as long as your OpenAI usage and n8n execution limits match your volume.
It depends on how polished you want the brief to be. n8n is strong when you need looping over attendees, conditional logic (like “work email vs personal”), and a multi-step research process without paying extra for each branch. It’s also nice that you can self-host for unlimited executions, which matters if you run lots of meetings. Zapier or Make can be quicker for a basic “event → email” flow, but they get awkward once you add per-attendee research and aggregation. Talk to an automation expert if you want help choosing the cleanest setup.
Once this is running, meeting prep stops being a daily decision. The workflow handles the repetitive digging so you can show up focused and present.
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.