Google Calendar + Slack: meeting briefs sent for you
You book the meeting, you prep the deck, you show up… and then you realize you forgot the one detail that actually matters to the client. That “quick” pre-meeting research turns into 20 open tabs and a last-minute scramble.
This Google Calendar Slack automation hits account managers hardest, but sales leads and founders running their own pipeline feel it too. The outcome is simple: a meeting brief shows up in Slack with client context from Notion and a few smart, personalized ideas you can actually use.
Below you’ll see how the workflow runs, what it automates end-to-end, and how to adapt it to your naming conventions and channels.
How This Automation Works
The full n8n workflow, from trigger to final output:
n8n Workflow Template: Google Calendar + Slack: meeting briefs sent for you
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/slack.svg' width='40' height='40' /></div><br/>Send Slack Notification"]
n1@{ icon: "mdi:robot", form: "rounded", label: "AI Gift Recommendation", 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/httprequest.dark.svg' width='40' height='40' /></div><br/>Search Nearby Cafes"]
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/httprequest.dark.svg' width='40' height='40' /></div><br/>Search Gift Shops"]
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/notion.dark.svg' width='40' height='40' /></div><br/>Get Customer Preferences fro.."]
n5["<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/>Extract Company Name"]
n6@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Filter Client Visit Events", pos: "b", h: 48 }
n7@{ icon: "mdi:swap-vertical", form: "rounded", label: "Workflow Configuration", pos: "b", h: 48 }
n8@{ icon: "mdi:play-circle", form: "rounded", label: "Google Calendar Trigger", pos: "b", h: 48 }
n3 --> n1
n2 --> n1
n5 --> n4
n1 --> n0
n7 --> n6
n8 --> n7
n6 --> n5
n4 --> n2
n4 --> n3
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 n8 trigger
class n1 ai
class n6 decision
class n4 database
class n2,n3 api
class n5 code
classDef customIcon fill:none,stroke:none
class n0,n2,n3,n4,n5 customIcon
The Problem: Meeting prep is scattered and easy to skip
Meeting prep rarely fails because you “don’t care.” It fails because it’s fragmented. The company name is in the calendar title, the relationship history is in your head, preferences are buried in Notion, and the “nice touch” ideas (gift shop, quiet cafe nearby) require a separate search you don’t have time for. So you wing it. That’s risky in a sales cycle, and honestly it’s exhausting when you’re doing it multiple times a week. One missed detail can turn a warm meeting into a forgettable one.
The friction compounds. Here’s where it breaks down in real life.
- You waste about 20 minutes per meeting switching between Calendar, Notion, and search tabs.
- Client preferences get used once, then forgotten, so personalization stays inconsistent.
- Last-minute prep means you default to generic ideas, which makes “thoughtful” feel performative.
- When meetings stack up, prep becomes the first thing you cut, even though it affects the outcome most.
The Solution: Calendar-triggered Slack briefs with Notion context
This workflow watches your Google Calendar for meeting-type events (based on keywords like “visit,” “client,” “meeting,” or “dinner”). When one matches, it pulls the company name out of the event title, then looks up that company in your Notion customer database to grab preferences and notes. From there, it searches nearby locations (gift shops and cafes) using the Google Places API, then asks an AI model to recommend the best options based on what that specific client likes. Finally, n8n posts a clean, readable meeting brief into Slack, so you see it where you already work. No extra dashboard. No “I’ll do it later.”
The workflow starts when a relevant calendar event is created or updated. It enriches the event with Notion context, then adds local recommendations using Places search and an AI decision layer. Slack gets the finished brief, ready to skim in under a minute.
What You Get: Automation vs. Results
| What This Workflow Automates | Results You’ll Get |
|---|---|
|
|
Example: What This Looks Like
Say you have 5 client meetings in a week. Manually, you might spend about 20 minutes per meeting jumping between Google Calendar, Notion, and a couple of location searches, which is roughly 2 hours total. With this workflow, the “work” is basically naming the event normally and letting it run; the brief lands in Slack automatically, typically within a minute or two of the event being created or updated. That’s about 2 hours back every week, plus fewer last-second scrambles.
What You’ll Need
- n8n instance (try n8n Cloud free)
- Self-hosting option if you prefer (Hostinger works well)
- Google Calendar to trigger from meeting events
- Notion for client preferences and notes
- Slack to deliver the meeting brief
- Google Places API key (get it from Google Cloud Console)
- OpenAI API key (get it from your OpenAI dashboard)
Skill level: Beginner. You will connect accounts, paste API keys, and tweak a few settings like keywords and Slack channel ID.
Don’t want to set this up yourself? Talk to an automation expert (free 15-minute consultation).
How It Works
A calendar event kicks it off. When a Google Calendar event is created or updated, the workflow checks the title for the meeting keywords you care about (for example “client” or “dinner”). If it’s not relevant, it stops quietly.
Client context gets pulled in. n8n parses the company name from the event title, then uses that value to find the matching record in Notion (your database should have “Company Name” and “Preferences” fields).
Nearby options are discovered and evaluated. Based on the meeting location, it queries Google Places for gift shops and quiet cafes, then an OpenAI model weighs those options against the Notion preferences to pick the best two or three.
Slack receives the brief. A formatted message is posted to your chosen Slack channel, so you can skim recommendations right before the meeting and look prepared without doing extra work.
You can easily modify the event keywords to match your calendar habits, or change the search radius to better fit dense cities vs. spread-out suburbs. See the full implementation guide below for customization options.
Step-by-Step Implementation Guide
Step 1: Configure the Google Calendar Trigger
This workflow starts when a calendar event is updated, then prepares meeting recommendations.
- Add the Calendar Event Trigger node and set Trigger On to
eventUpdated. - Select your calendar in Calendar using
[YOUR_ID](e.g.,Primary Calendar). - Credential Required: Connect your googleCalendarOAuth2Api credentials.
- Connect Calendar Event Trigger to Configure Workflow Settings.
Step 2: Connect Notion and Configure Meeting Filters
Prepare workflow settings, filter for relevant meetings, and look up client preferences in Notion.
- In Configure Workflow Settings, set googlePlacesApiKey to
[CONFIGURE_YOUR_API_KEY], searchRadius to1000, and minRating to4.5. - Connect Configure Workflow Settings to Filter Meeting Events and ensure conditions include keywords like
visit,meeting, andclientusing expressions such as{{ $('Calendar Event Trigger').item.json.summary }}. - Connect Filter Meeting Events to Parse Company Name and keep the provided JavaScript for extracting
extractedCompany. - In Retrieve Client Preferences, set Database to
[YOUR_ID]and apply the filter{{ $json.extractedCompany }}on Company Name|title. - Credential Required: Connect your notionApi credentials in Retrieve Client Preferences.
Retrieve Client Preferences outputs to both Lookup Nearby Cafes and Find Gift Shops in parallel.
Step 3: Configure Location Lookups for Cafes and Gift Shops
These two HTTP requests query Google Places using the event location and your API key.
- In Lookup Nearby Cafes, set URL to
=https://maps.googleapis.com/maps/api/place/nearbysearch/jsonand enable Send Query. - Set Query Parameters in Lookup Nearby Cafes:
- location to
{{ $json.location || '35.6812,139.7671' }} - radius to
{{ $('Configure Workflow Settings').first().json.searchRadius }} - type to
cafe - keyword to
quiet work cafe - key to
{{ $('Configure Workflow Settings').first().json.googlePlacesApiKey }}
- location to
- In Find Gift Shops, use the same URL and set parameters:
- location to
{{ $json.location || '35.6812,139.7671' }} - radius to
{{ $('Configure Workflow Settings').first().json.searchRadius }} - type to
bakery - keyword to
pastry sweets gift - key to
{{ $('Configure Workflow Settings').first().json.googlePlacesApiKey }}
- location to
location field, the workflow defaults to 35.6812,139.7671. Update this in your calendar events for more accurate results.Step 4: Set Up Generate AI Suggestions
This step summarizes client preferences and location results into a ready-to-post Slack message.
- Open Generate AI Suggestions and select Model as
gpt-4.1-mini. - Keep the prompt content that references:
{{ $('Parse Company Name').first().json.extractedCompany }}{{ $('Retrieve Client Preferences').item.json.properties['Preferences'].rich_text[0].plain_text }}{{ JSON.stringify($('Find Gift Shops').json) }}{{ JSON.stringify($('Lookup Nearby Cafes').json) }}
- Credential Required: Connect your openAiApi credentials in Generate AI Suggestions.
Step 5: Configure Output to Slack
Post the AI-generated recommendation directly into your Slack channel.
- In Post Slack Recommendation, set Text to
{{ $json.output[0].content[0].text }}. - Select the destination Channel using
[YOUR_ID]. - Credential Required: Connect your slackOAuth2Api credentials.
- Connect Generate AI Suggestions to Post Slack Recommendation.
{{ $json.output[0].content[0].text }} path matches the model response structure.Step 6: Test and Activate Your Workflow
Validate the full flow before turning on the automation.
- Click Execute Workflow and update a calendar event with a summary containing terms like
meetingorclient. - Verify Parse Company Name outputs
extractedCompanyand Retrieve Client Preferences returns a matching Notion record. - Confirm Lookup Nearby Cafes and Find Gift Shops return Google Places results.
- Check Slack for a formatted message from Post Slack Recommendation.
- Once confirmed, toggle the workflow to Active for continuous updates.
Common Gotchas
- Google Calendar access can be blocked by missing scopes or the wrong calendar selection. If triggers don’t fire, check the n8n credential permissions and confirm you picked the correct calendar in the trigger node.
- 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 15 minutes if your accounts and API keys are ready.
No. You’ll mostly connect tools and edit a few fields like keywords and channel ID.
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 usage and Google Places API usage, which depend on how many briefs you generate.
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. You can update the keyword conditions in the “Filter Meeting Events” step to match how you name events, then adjust the searchRadius value in the configuration settings (the default is 1000 meters). Most teams also change the Slack channel ID and tweak the AI prompt so the recommendations match their tone. If your event titles don’t include a clean company name, you can also adjust the “Parse Company Name” logic to fit your format.
Usually it’s an expired Slack token or missing bot permissions for the channel you’re posting into. Reconnect the Slack credential in n8n, confirm the bot is invited to the target channel, and then re-check the channel ID in the final Slack node.
A typical small team can run hundreds per month without thinking about it.
For this use case, n8n is a better fit when you want multi-step logic (filtering meetings, pulling from Notion, calling Google Places twice, then generating an AI message) without paying extra for each branch. It’s also easier to self-host, which matters if you want a lot of runs and predictable costs. Zapier or Make can still work, but the moment you add “lookup client notes + multiple HTTP requests + AI reasoning,” flows tend to get brittle. Also, debugging is nicer in n8n because you can inspect each step’s data. If you’re torn, Talk to an automation expert and pick the simplest thing you’ll actually maintain.
Set this up once, and your meeting prep stops living in your head. The workflow handles the repetitive digging so you can focus on the conversation.
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.