

How to Send Google Calendar Meeting Reminders to Slack with N8n
Automatically send Slack messages 15 minutes before Google Calendar events with meeting title, link, and attendees.
Steps and UI details are based on platform versions at time of writing — check each platform for the latest interface.
Best for
Teams that need custom reminder timing or process 1000+ calendar events monthly with complex notification logic.
Not ideal for
Small teams wanting zero-maintenance setup or those who need instant triggers when events are created.
Sync type
pollingUse case type
notificationReal-World Example
A 25-person software consultancy uses this to remind project teams about client calls 15 minutes early in their #meetings channel. Before automation, 30% of team members joined calls 2-3 minutes late because they forgot to check their calendars between deep work sessions. The Slack reminders include the client name, meeting agenda link, and dial-in details so everyone arrives prepared and on time.
What Will This Cost?
Drag the slider to your expected monthly volume.
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
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.
Field Mapping
Map these fields between your apps.
| Field | API Name | |
|---|---|---|
| Required | ||
| Meeting Title | summary | |
| Start Time | start.dateTime | |
| Event ID | id | |
4 optional fields▸ show
| Meeting Link | hangoutLink |
| Attendee Emails | attendees |
| Event Description | description |
| Meeting Location | location |
Step-by-Step Setup
Dashboard > New Workflow
Install and access N8n
Set up N8n either through self-hosting or N8n Cloud. You'll need admin access to create workflows and connect external services.
- 1Go to n8n.io and click 'Get Started'
- 2Choose between self-hosted or cloud version
- 3Complete registration and verify your email
- 4Log into your N8n dashboard
Workflow Editor > + > Google Calendar > Trigger
Add Google Calendar trigger node
Set up the trigger that monitors your calendar for upcoming events. This will fire 15 minutes before each meeting starts.
- 1Click the + button on the canvas
- 2Search for 'Google Calendar' and select it
- 3Choose 'Trigger' from the node type options
- 4Select 'Event Updated' from the operation dropdown
Node Settings > Credentials > New
Configure Google Calendar authentication
Connect N8n to your Google account with proper calendar permissions. You'll need OAuth2 credentials for API access.
- 1Click 'Create New Credential' in the Google Calendar node
- 2Select 'Google Calendar OAuth2 API'
- 3Enter your Google Client ID and Client Secret
- 4Click 'Connect my account' and authorize calendar access
Google Calendar Node > Parameters
Set calendar and time filter
Configure which calendar to monitor and set the 15-minute advance notification window. This prevents duplicate reminders.
- 1Select your target calendar from the 'Calendar' dropdown
- 2Set 'Watch Events' to 'Updates'
- 3In Additional Fields, add 'timeMin' with value '{{ $now.minus({minutes: 15}).toISO() }}'
- 4Add 'timeMax' with value '{{ $now.plus({minutes: 1}).toISO() }}'
Workflow Editor > + > IF
Add time-based condition node
Filter events to only process those starting in exactly 15 minutes. This prevents sending reminders for past or far-future events.
- 1Click the + button after the Google Calendar node
- 2Search for 'IF' and select the IF node
- 3Set condition to 'Date & Time'
- 4Configure: 'start.dateTime' is 'After' '{{ $now.plus({minutes: 14}) }}'
- 5Add second condition: 'start.dateTime' is 'Before' '{{ $now.plus({minutes: 16}) }}'
IF True Branch > + > Slack > Send Message
Add Slack node
Connect the Slack messaging node to send the reminder. This will post to a specific channel when the time condition is met.
- 1Click + after the IF node's 'true' output
- 2Search for 'Slack' and select it
- 3Choose 'Send Message' operation
- 4Set Authentication to 'OAuth2'
Slack Node > Credentials > New
Configure Slack authentication
Set up Slack app credentials to post messages. You'll need a Slack app with chat:write permissions in your workspace.
- 1Click 'Create New Credential' in the Slack node
- 2Select 'Slack OAuth2 API'
- 3Enter your Slack App's Client ID and Client Secret
- 4Add Bot Token Scope: 'chat:write'
- 5Authorize the connection to your Slack workspace
Slack Node > Parameters > Message
Configure message content and channel
Set up the reminder message format with meeting details. Include the title, start time, join link, and attendee list for easy access.
- 1Set Channel to your target Slack channel (e.g., #general)
- 2In Message field, enter: '🔔 Meeting in 15 minutes: {{ $node["Google Calendar"].json["summary"] }}'
- 3Add new line: 'Time: {{ $node["Google Calendar"].json["start"]["dateTime"] | formatDateTime("h:mm a") }}'
- 4Add: 'Join: {{ $node["Google Calendar"].json["hangoutLink"] || "No link provided" }}'
- 5Add: 'Attendees: {{ $node["Google Calendar"].json["attendees"].map(a => a.email).join(", ") }}'
Workflow Settings > Error Handling
Add error handling
Configure what happens when the workflow fails. Set up retry logic and error notifications to avoid missing reminders.
- 1Click on the workflow settings gear icon
- 2Go to 'Error Workflow' section
- 3Set 'On Error' to 'Continue'
- 4Add HTTP Request node after Slack for error logging
- 5Configure retry attempts: 3 tries with 2-minute delays
Workflow Editor > Execute Workflow
Test the workflow
Run a manual test with a real calendar event. Create a test meeting 16 minutes in the future to verify the timing logic works.
- 1Create a test calendar event starting in 16 minutes
- 2Click 'Execute Workflow' button in N8n
- 3Wait 1 minute and execute again
- 4Check Slack channel for the reminder message
- 5Verify all fields populate correctly (title, time, link, attendees)
Workflow Editor > Active Toggle
Activate workflow automation
Turn on the workflow to run automatically. Set the polling interval for checking calendar events and monitoring system status.
- 1Click the 'Inactive' toggle in the top right
- 2Confirm activation in the popup dialog
- 3Set polling interval to 'Every 5 minutes'
- 4Save the workflow with a descriptive name
Drop this into an n8n Code node.
JavaScript — Code Node// Format attendee list with RSVP status▸ Show code
// Format attendee list with RSVP status const attendees = $node["Google Calendar"].json["attendees"] || []; const formattedList = attendees
... expand to see full code
// Format attendee list with RSVP status
const attendees = $node["Google Calendar"].json["attendees"] || [];
const formattedList = attendees
.filter(a => a.responseStatus !== 'declined')
.map(a => {
const status = a.responseStatus === 'accepted' ? '✅' : '❓';
return `${status} ${a.email.split('@')[0]}`;
})
.join(', ');
return formattedList || 'No attendees listed';Scaling Beyond 200+ meetings/day+ Records
If your volume exceeds 200+ meetings/day records, apply these adjustments.
Implement batch processing
Group multiple calendar checks into single API calls using N8n's HTTP Request node with batch parameters. This reduces API calls from 200+ to 10-15 per polling cycle.
Add intelligent filtering
Use code nodes to filter out recurring standup meetings or events without attendees. This prevents reminder spam and reduces Slack message volume by 40-60% in most organizations.
Split workflows by calendar
Create separate workflows for different team calendars instead of monitoring all calendars in one workflow. This isolates failures and makes debugging easier when one team's calendar has issues.
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
Use N8n for this if you need custom reminder logic or handle more than 1000 calendar events per month. N8n's code nodes let you build complex time calculations and custom message formats that Zapier can't match. The polling trigger gives you precise control over when reminders fire. Skip N8n if you want zero maintenance - Zapier's Google Calendar integration handles OAuth refreshes automatically while N8n requires occasional credential updates.
This workflow burns about 2 executions per reminder (1 for calendar check, 1 for Slack message). At 100 meetings per month, that's 200 executions total. N8n cloud starts at $20/month for 5000 executions, so you've got plenty of headroom. Make would cost $10.59/month for the same volume on their Core plan. Zapier Professional runs $49/month. N8n costs twice as much as Make but includes unlimited workflow complexity.
Make's Google Calendar trigger fires instantly when events are created or updated, while N8n polls every few minutes. That's a real advantage for time-sensitive reminders. Zapier has better error handling with automatic retries and clear failure notifications in their dashboard. N8n's error messages require digging into execution logs. But N8n wins on customization - you can build complex conditional logic, format messages with code, and add features like attendee-specific reminders that neither competitor handles well.
You'll hit Google's API rate limits if you poll too aggressively - stick to 5-minute intervals maximum or Google blocks requests for an hour. The Calendar API sometimes returns events with inconsistent time zones, especially for recurring meetings. Add timezone conversion code or reminders for Pacific meetings will fire at wrong times for Eastern attendees. Slack's chat:write permission expires if your app isn't used for 30+ days, breaking the workflow silently until you reauthorize.
Ideas for what to build next
- →Add post-meeting follow-up automation — Create a second workflow that sends meeting recap templates to Slack 5 minutes after calls end, with action items and next steps prompts.
- →Build attendee-specific reminder routing — Send DMs to specific attendees based on their role or meeting importance instead of broadcasting to channels. Use attendee email domains to determine notification priority.
- →Connect meeting analytics tracking — Log reminder delivery success, meeting attendance rates, and on-time arrival stats to Google Sheets for team productivity reporting and calendar optimization insights.
Related guides
How to Share Notion Meeting Notes to Slack with Pipedream
~15 min setup
How to Share Notion Meeting Notes to Slack with Power Automate
~15 min setup
How to Share Notion Meeting Notes to Slack with n8n
~20 min setup
How to Send Notion Meeting Notes to Slack with Zapier
~8 min setup
How to Share Notion Meeting Notes to Slack with Make
~12 min setup
How to Create Notion Tasks from Slack with Pipedream
~15 min setup