Intermediate~20 min setupProductivity & CommunicationVerified April 2026
Google Calendar logo
Slack logo

How to Send Meeting Notes Reminders from Google Calendar to Slack with N8n

Automatically DM meeting organizers in Slack 15 minutes after their meetings end to remind them to share notes.

Steps and UI details are based on platform versions at time of writing β€” check each platform for the latest interface.

Best for

Teams with custom reminder logic who want to modify message content based on meeting metadata

Not ideal for

Simple setups that need instant triggers or teams without technical resources to manage N8n

Sync type

polling

Use case type

notification

Real-World Example

πŸ’‘

A 25-person product team at a B2B SaaS company uses this to remind PM and engineering leads to post meeting notes in their #product-sync channel. Before automation, 40% of design review and sprint planning notes never got shared, causing duplicate discussions the following week. Now every meeting organizer gets pinged 15 minutes after their session ends, increasing note-sharing to 85%.

What Will This Cost?

Drag the slider to your expected monthly volume.

/mo
505005K50K

Each platform counts differently β€” Zapier: 1 task per trigger. Make: 1 operation per module per record. n8n: 1 execution per run.

Prices shown for annual billing. Based on published pricing as of April 2026.

Estimated ROI

1000

min saved/mo

$583

labor value/mo

Free

no platform cost

Based on ~2 min manual effort per operation at $35/hr fully loaded labor cost.

Implementation

Skip the setup

Import this workflow directly into n8n

Copy the pre-built n8n blueprint and paste it straight into n8n. All modules, filters, and field mappings are already configured β€” you just need to connect your accounts.

Before You Start

Make sure you have everything ready.

Google Calendar account with meeting organizer permissions
Slack workspace admin access to create bot apps
N8n cloud account or self-hosted instance running
Meetings scheduled with attendees in your Google Calendar

Field Mapping

Map these fields between your apps.

FieldAPI Name
Required
Meeting Titlesummary
Organizer Emailorganizer.email
Meeting End Timeend.dateTime
Attendees Listattendees
2 optional fieldsβ–Έ show
Meeting Descriptiondescription
Calendar IDcalendar

Step-by-Step Setup

1

Dashboard > New workflow

Create New Workflow

Start a fresh N8n workflow to build your meeting reminder automation. This workflow will watch for calendar events and trigger Slack reminders.

  1. 1Click 'New workflow' from the N8n dashboard
  2. 2Name your workflow 'Meeting Notes Reminder'
  3. 3Click 'Save' to create the empty workflow
βœ“ What you should see: You should see a blank workflow canvas with just the default trigger node.
2

Workflow > Add Node > Google Calendar > Event Ended

Add Google Calendar Trigger

Configure N8n to monitor your Google Calendar for ending meetings. The trigger will fire when meetings conclude based on their end times.

  1. 1Click the '+' button to add a new node
  2. 2Search for 'Google Calendar' and select it
  3. 3Choose 'Event Ended' as the trigger type
  4. 4Set the polling interval to 1 minute
βœ“ What you should see: The Google Calendar node appears on your canvas with configuration options visible.
⚠
Common mistake β€” Don't use 'Event Updated' trigger - it fires on every meeting edit and will spam your workflow.
n8n
+
click +
search apps
Google Calendar
GO
Google Calendar
Add Google Calendar Trigger
Google Calendar
GO
module added
3

Google Calendar Node > Credential > Create New

Connect Google Calendar Account

Authenticate N8n with your Google account to access calendar data. This creates the OAuth connection needed to read meeting information.

  1. 1Click 'Create New' next to Credential for Google Calendar API
  2. 2Sign in with your Google account
  3. 3Grant N8n permission to read your calendar
  4. 4Click 'Save' to store the credential
βœ“ What you should see: You should see 'Connected' status with your Google email address displayed.
⚠
Common mistake β€” Make sure you use the same Google account that owns the calendars with meetings you want to monitor.
n8n settings
Connection
Choose a connection…Add
click Add
Google Calendar
Log in to authorize
Authorize n8n
popup window
βœ“
Connected
green checkmark
4

Workflow > Add Node > If

Filter for Meetings with Attendees

Add a filter to only process meetings that have attendees, since solo calendar blocks don't need note reminders. This prevents unnecessary Slack messages.

  1. 1Add an 'If' node after the Google Calendar trigger
  2. 2Set condition to 'attendees' > 'is not empty'
  3. 3Connect the 'true' path to continue the workflow
  4. 4Leave the 'false' path unconnected
βœ“ What you should see: The If node shows two output paths with the 'true' branch ready for the next node.
⚠
Common mistake β€” Check that the field name is exactly 'attendees' - Google Calendar API uses this specific field name.
Google Calendar
GO
trigger
filter
Condition
matches criteria?
yes β€” passes through
no β€” skipped
Slack
SL
notified
5

Workflow > Add Node > Wait

Add Wait Timer

Insert a 15-minute delay after the meeting ends before sending the reminder. This gives the organizer time to wrap up before getting prompted.

  1. 1Add a 'Wait' node after the If condition
  2. 2Set wait type to 'For Duration'
  3. 3Enter '15' for amount and select 'minutes'
  4. 4Click 'Execute Node' to test the configuration
βœ“ What you should see: The Wait node displays '15 minutes' as the configured delay period.
⚠
Common mistake β€” Don't set this higher than 30 minutes or you'll exceed N8n's default execution timeout on cloud plans.
6

Workflow > Add Node > Set

Extract Meeting Organizer

Pull the organizer's email from the calendar event to identify who should receive the Slack reminder. This email will be used to find their Slack user ID.

  1. 1Add a 'Set' node after the Wait timer
  2. 2Create a new field called 'organizerEmail'
  3. 3Set the value to '{{ $node["Google Calendar"].json["organizer"]["email"] }}'
  4. 4Add another field 'meetingTitle' with value '{{ $node["Google Calendar"].json["summary"] }}'
βœ“ What you should see: The Set node shows two new fields: organizerEmail and meetingTitle with the extracted values.
⚠
Common mistake β€” Use the exact JSON path syntax - N8n's expression editor is case-sensitive and won't autocomplete nested objects.
7

Workflow > Add Node > Slack > User > Get By Email

Find Slack User by Email

Look up the organizer's Slack user ID using their email address from the calendar event. Slack DMs require user IDs, not email addresses.

  1. 1Add a 'Slack' node after the Set node
  2. 2Choose 'User' resource and 'Get By Email' operation
  3. 3Set email field to '{{ $node["Set"].json["organizerEmail"] }}'
  4. 4Click 'Test step' to verify the user lookup works
βœ“ What you should see: The test should return the user's Slack profile including their user ID (starts with 'U').
⚠
Common mistake β€” This will fail if the organizer's Google account email doesn't match their Slack email - you'll need manual mapping for those cases.
8

Slack Node > Credential > Create New

Connect Slack Workspace

Authenticate N8n with your Slack workspace to enable sending direct messages. This OAuth connection allows the bot to message users on your behalf.

  1. 1Click 'Create New' next to Slack API credentials
  2. 2Choose 'OAuth2' authentication method
  3. 3Follow the Slack authorization flow
  4. 4Grant permissions for chat:write and users:read.email
βœ“ What you should see: You should see 'Connected' status with your Slack workspace name displayed.
⚠
Common mistake β€” Make sure your Slack app has both chat:write and users:read.email scopes - missing scopes will cause authentication errors.
9

Workflow > Add Node > Slack > Message > Post

Send Direct Message Reminder

Configure the actual Slack DM with the meeting notes reminder. This message will be sent directly to the meeting organizer's Slack account.

  1. 1Add another 'Slack' node for sending the message
  2. 2Choose 'Message' resource and 'Post' operation
  3. 3Set channel to '{{ $node["Slack"].json["user"]["id"] }}'
  4. 4Write your reminder text: 'Hi! Your meeting "{{ $node["Set"].json["meetingTitle"] }}" ended 15 minutes ago. Don\'t forget to share the meeting notes! πŸ“'
βœ“ What you should see: The message configuration shows the dynamic meeting title and user ID populated from previous nodes.
⚠
Common mistake β€” Use the user ID from the previous Slack node, not the email - Slack's API requires user IDs for DMs.
message template
πŸ”” New Record: {{summary}} {{description}}
start.dateTime: {{start.dateTime}}
end.dateTime: {{end.dateTime}}
#sales
πŸ”” New Record: Jane Smith
Company: Acme Corp
10

Workflow > Execute Workflow

Test Complete Workflow

Run the entire workflow with a real calendar event to verify all nodes execute properly. This end-to-end test catches any configuration issues.

  1. 1Click 'Execute Workflow' button
  2. 2Check each node shows green success status
  3. 3Verify the Slack message was delivered to the correct user
  4. 4Review the execution log for any errors or warnings
βœ“ What you should see: All nodes show green checkmarks and the test Slack message appears in the organizer's DMs.
⚠
Common mistake β€” Test with a real meeting that just ended - using fake data won't validate the Google Calendar trigger properly.
n8n
β–Ά Run once
executed
βœ“
Google Calendar
βœ“
Slack
Slack
πŸ”” notification
received
11

Workflow > Activate Toggle

Activate Workflow

Turn on the workflow to start monitoring your calendar automatically. Once active, it will check for ended meetings every minute and send reminders.

  1. 1Click the 'Inactive' toggle in the top right
  2. 2Confirm the workflow status changes to 'Active'
  3. 3Set up error notifications to your email in workflow settings
  4. 4Save the workflow one final time
βœ“ What you should see: The workflow status shows 'Active' with a green indicator and next execution time displayed.
⚠
Common mistake β€” Don't activate until you've tested successfully - a broken active workflow will consume execution quota with every failed run.

Drop this into an n8n Code node.

JavaScript β€” Code Node// Skip reminders for recurring standup meetings
β–Έ Show code
// Skip reminders for recurring standup meetings
if (items[0].json.summary.toLowerCase().includes('standup') || 
    items[0].json.summary.toLowerCase().includes('daily')) {

... expand to see full code

// Skip reminders for recurring standup meetings
if (items[0].json.summary.toLowerCase().includes('standup') || 
    items[0].json.summary.toLowerCase().includes('daily')) {
  return [];
}
return items;

Scaling Beyond 50+ meetings/day+ Records

If your volume exceeds 50+ meetings/day records, apply these adjustments.

1

Batch User Lookups

Cache Slack user IDs in N8n's database to avoid repeated API calls for the same organizers. Add a lookup table that maps emails to user IDs and only query Slack API for new people.

2

Stagger Wait Times

Add random delays (13-17 minutes) instead of exactly 15 minutes to spread out Slack API calls. Multiple meetings ending simultaneously will hit rate limits if they all send reminders at the same time.

Going live

Production Checklist

Before you turn this on for real, confirm each item.

Troubleshooting

Common errors and how to fix them.

Frequently Asked Questions

Common questions about this workflow.

Analysis

VerdictWhy n8n for this workflow

Use N8n for this if you want full control over the message logic and don't mind hosting infrastructure. N8n's code nodes let you customize the reminder text based on meeting duration, attendee count, or calendar categories. You can also add complex logic like skipping reminders for recurring standup meetings or adjusting timing based on meeting length. Skip N8n if you need this running immediately - Zapier's Google Calendar trigger fires within 30 seconds while N8n polls every minute minimum.

Cost

This workflow uses 5 operations per meeting: Calendar check, user lookup, wait timer, message send, plus the filter check. At 20 meetings per day, that's 3,000 operations monthly. N8n's Starter plan at $20/month includes 5,000 operations, so you're covered. Make would cost $9/month for the same volume with 1,000 operations included, but you'd hit the limit at 30+ daily meetings. Zapier starts at $20/month but only includes 750 operations - you'd need the $49 plan for this volume.

Tradeoffs

Make handles the Google Calendar integration better with instant webhook triggers instead of polling - your reminders fire exactly 15 minutes after meeting end, not 15 minutes plus up to 1 minute delay. Zapier's Slack integration is more polished with better error handling when users aren't found by email. But N8n wins on customization - you can add code nodes to parse meeting transcripts, skip reminders for certain meeting types, or integrate with note-taking tools like Notion or Obsidian in the same workflow.

Google Calendar's API occasionally returns meetings without proper end times for recurring events, breaking your workflow logic. The Slack user lookup fails about 20% of the time because people use different emails for Google and Slack accounts - you'll need a manual mapping table for frequent organizers. N8n's wait timer doesn't pause during weekends, so Friday meetings that end at 5 PM will try to send Slack reminders at 5:15 PM when people have left for the weekend.

Ideas for what to build next

  • β†’
    Add Meeting Notes Template β€” Create a follow-up message with a structured template for notes that includes action items, decisions, and next steps formatting.
  • β†’
    Track Response Rates β€” Build a dashboard in N8n that logs which organizers actually share notes after receiving reminders, helping identify who needs additional follow-up.
  • β†’
    Integrate Note Storage β€” Connect to Notion, Confluence, or Google Docs to automatically create note templates and include the document link in your Slack reminder message.

Related guides

Was this guide helpful?
← Google Calendar + Slack overviewn8n profile β†’