Beginner~12 min setupProductivity & CommunicationVerified April 2026
Google Calendar logo
Slack logo

How to Send Meeting Reminders from Google Calendar to Slack with Make

Automatically post Slack messages 15 minutes before each Google Calendar event with meeting details, links, 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 who want smart meeting reminders in Slack with attendee lists and meeting links formatted properly.

Not ideal for

Simple text-only reminders or teams that don't use Google Calendar as their primary scheduling tool.

Sync type

polling

Use case type

notification

Real-World Example

💡

A 25-person marketing agency uses this to remind #general about client calls and internal standups. Before automation, people missed 2-3 meetings per week because they relied on calendar notifications while heads-down in Slack. Now the bot posts meeting details directly in their main channel 15 minutes early, including the Zoom link and who's attending.

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 Make

Copy the pre-built Make blueprint and paste it straight into Make. 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 events you want reminders for
Slack workspace where you can add bots and send messages
Make account (free tier works for testing)
Admin access to add Make integration to your Slack workspace

Field Mapping

Map these fields between your apps.

FieldAPI Name
Required
Meeting Titlesummary
Meeting Start Timestart.dateTime
4 optional fields▸ show
Video Meeting LinkhangoutLink
Attendee Listattendees
Meeting Locationlocation
Event Descriptiondescription

Step-by-Step Setup

1

Dashboard > Create scenario > Add module

Create new scenario

Start a blank scenario in Make. This will house your entire meeting reminder workflow from trigger to Slack notification.

  1. 1Click 'Create a new scenario' from your Make dashboard
  2. 2Click the white circle with + to add your first module
  3. 3Type 'Google Calendar' in the search box
  4. 4Select 'Google Calendar' from the app list
What you should see: You should see a blank canvas with one empty module placeholder ready for configuration.
2

Scenario > Google Calendar > Watch Events

Set up Google Calendar trigger

Configure the Watch Events trigger to monitor your calendar. This polls Google Calendar every 15 minutes for new or updated events.

  1. 1Select 'Watch Events' from the Google Calendar trigger options
  2. 2Click 'Create a connection' and authenticate with your Google account
  3. 3Choose your primary calendar from the 'Calendar ID' dropdown
  4. 4Set 'Limit' to 50 to handle busy calendars
What you should see: The module shows a green 'Connected' status and displays your calendar name in the Calendar ID field.
Common mistake — Don't pick 'Watch Calendar List' - that monitors calendar creation, not events
Make
+
click +
search apps
Google Calendar
GO
Google Calendar
Set up Google Calendar trigger
Google Calendar
GO
module added
3

Scenario > Filter settings

Add time-based filter

Filter events to only trigger reminders for meetings starting within the next 15-20 minutes. This prevents spam from past or distant future events.

  1. 1Click the wrench icon between modules to add a filter
  2. 2Name the filter 'Meeting starting soon'
  3. 3Set condition to 'Start time' 'Is greater than' and use formula: now
  4. 4Add second condition 'Start time' 'Is less than' with formula: addMinutes(now; 20)
What you should see: Filter shows two green checkmarks indicating both time conditions are properly configured.
Common mistake — Use 20 minutes not 15 to account for Make's polling delays - you want to catch events before the 15-minute mark
Google Calendar
GO
trigger
filter
Condition
matches criteria?
yes — passes through
no — skipped
Slack
SL
notified
4

Scenario > Add module > Slack > Create Message

Add Slack connection

Set up the Slack module to send your reminder message. This connects to your workspace and prepares the message format.

  1. 1Click + to add a new module after the filter
  2. 2Search for and select 'Slack'
  3. 3Choose 'Create a Message' action
  4. 4Click 'Create a connection' and authorize Make to access your Slack workspace
What you should see: Slack module appears with a green connection badge and shows your workspace name.
5

Slack module > Channel settings

Configure target channel

Select which Slack channel receives the meeting reminders. Most teams use a general channel or dedicated meetings channel.

  1. 1Click the 'Channel' dropdown in the Slack module
  2. 2Select your target channel from the list (e.g., #general or #meetings)
  3. 3Leave 'As User' set to 'False' to send as the Make bot
  4. 4Set 'Parse' to 'Full' to enable link formatting
What you should see: Channel field shows your selected channel name with a # prefix.
Common mistake — Private channels won't appear unless you've added the Make bot to them first
6

Slack module > Text field > Mapping panel

Build reminder message template

Create the message content with meeting details. This pulls data from Google Calendar and formats it for Slack.

  1. 1Click in the 'Text' field of the Slack module
  2. 2Type: '🔔 Meeting starting in 15 minutes:'
  3. 3Add new line and type: '*' then map 'Summary' field from Google Calendar
  4. 4Add another line with: 'Join: ' and map 'Hangout Link' field
  5. 5Add final line: 'Attendees: ' and map 'Attendees: Email' field
What you should see: Message preview shows placeholder text with Google Calendar field mappings in curly braces.
Common mistake — Don't use 'HTML Link' field - it contains raw HTML that won't render in Slack
Message template
📬 New entry: {{1.name}}
Email: {{1.email}}
Details: {{1.description}}
message template
🔔 New Record: {{summary}} {{description}}
start.dateTime: {{start.dateTime}}
end.dateTime: {{end.dateTime}}
#sales
🔔 New Record: Jane Smith
Company: Acme Corp
7

Slack module > Text field > Functions

Format attendee list

Clean up the attendees field to show names instead of email addresses. This makes the reminder more readable.

  1. 1Click the function button (fx) next to the attendees mapping
  2. 2Replace the attendees mapping with: join(map(1.attendees; 'displayName'); ', ')
  3. 3Add fallback text: if(length(1.attendees) > 0; join(map(1.attendees; 'displayName'); ', '); 'No attendees listed')
  4. 4Click 'OK' to save the formula
What you should see: Attendees field shows the formula instead of raw field mapping.
Common mistake — Test this with events that have no attendees - the formula prevents empty attendee lines
8

Slack module > Text field > Edit join line

Add meeting link handling

Format the meeting link properly for Slack. Handle cases where events have no video link.

  1. 1Edit the 'Join: ' line in your message template
  2. 2Replace hangout link mapping with: if(length(1.hangoutLink) > 0; 1.hangoutLink; 'No video link')
  3. 3Add location as backup: if(length(1.hangoutLink) > 0; 1.hangoutLink; if(length(1.location) > 0; 1.location; 'Location TBD'))
  4. 4Test the formula by clicking the function preview
What you should see: Link section shows the conditional formula that handles missing video links gracefully.
Common mistake — Some calendar events use 'conferenceData' instead of 'hangoutLink' - check your test data first
9

Scenario > Module options > Error handling

Set up error handling

Configure what happens when the scenario fails. This prevents stuck executions and gives you visibility into issues.

  1. 1Right-click on the Slack module
  2. 2Select 'Add error handler'
  3. 3Choose 'Break' directive from the error handler options
  4. 4Enable 'Store incomplete executions' in scenario settings
What you should see: Small error handler icon appears on the Slack module with a red arrow.
10

Scenario > Run once > Execution history

Test with real data

Run a test execution using an actual calendar event. This validates your field mappings and message formatting.

  1. 1Click 'Run once' at the bottom of the scenario
  2. 2Create a test calendar event starting 16 minutes from now
  3. 3Wait 2-3 minutes for Make to detect the event
  4. 4Check the execution log for successful Slack message delivery
What you should see: Execution log shows green checkmarks for both modules and your test message appears in Slack.
Common mistake — Make polls every 15 minutes - your test event needs to fall within the next polling window
Make
▶ Run once
executed
Google Calendar
Slack
Slack
🔔 notification
received
11

Scenario > Scheduling > Auto-execution

Schedule the scenario

Turn on automatic execution so your reminders run continuously. Set the frequency to check for upcoming meetings.

  1. 1Click the clock icon at the bottom left of the scenario
  2. 2Set scheduling to 'Every 5 minutes' for more responsive reminders
  3. 3Toggle the scenario to 'ON' using the switch in the bottom bar
  4. 4Click 'Save' to commit all changes
What you should see: Scenario shows 'ON' status with green indicator and 'Every 5 minutes' schedule.
Common mistake — Every 5 minutes uses more operations but catches meetings that start between 15-minute polls

Drop this into a Make custom function.

JavaScript — Custom Function{{if(length(1.attendees) > 1; ':busts_in_silhouette: ' + join(map(1.attendees; 'displayName'); ', '); if(length(1.attendees) = 1; ':bust_in_silhouette: ' + 1.attendees[1].displayName; ':calendar: Meeting set'))}}
▸ Show code
{{if(length(1.attendees) > 1; ':busts_in_silhouette: ' + join(map(1.attendees; 'displayName'); ', '); if(length(1.attendees) = 1; ':bust_in_silhouette: ' + 1.attendees[1].displayName; ':calendar: Meeting set'))}}

... expand to see full code

{{if(length(1.attendees) > 1; ':busts_in_silhouette: ' + join(map(1.attendees; 'displayName'); ', '); if(length(1.attendees) = 1; ':bust_in_silhouette: ' + 1.attendees[1].displayName; ':calendar: Meeting set'))}}

Scaling Beyond 50+ meetings per day+ Records

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

1

Split by calendar

Create separate scenarios for different team calendars instead of monitoring one shared calendar. This prevents hitting Google Calendar's API rate limits and makes debugging easier.

2

Use webhook triggers

Switch to Google Calendar's push notifications instead of polling. This requires webhook endpoint setup but eliminates polling operations and makes reminders more timely.

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 Make for this workflow

Use Make for this if your team already lives in Slack and has a mix of Google Meet, Zoom, and in-person meetings in Google Calendar. Make handles the conditional logic for different meeting types better than Zapier's rigid trigger-action format, and you can easily add branches for different channels or team members. The visual scenario builder makes it obvious when something breaks. Skip Make if you only need basic text reminders without attendee lists or smart link handling - Zapier's simpler for that.

Cost

This workflow uses 2 operations per execution (Google Calendar check + Slack message). At 20 meetings per day, that's 1,200 operations monthly if you poll every 5 minutes. That fits Make's free tier of 1,000 operations, but you'll need the Core plan at $9/month for busy teams. Zapier charges $20/month for the same volume since it counts each poll separately. N8N is free but requires server management.

Tradeoffs

Zapier's Google Calendar trigger is more reliable - it uses webhooks instead of polling, so reminders fire exactly 15 minutes before regardless of when you set them up. N8N has better text formatting functions built-in, so you spend less time writing conditional formulas for attendee lists and meeting links. But Make's router system lets you easily split this into multiple workflows later - send different reminder styles to different channels, or add email reminders for external attendees.

Google Calendar's API returns inconsistent data structures depending on how events were created - mobile app vs web vs meeting room booking systems all format attendees differently. You'll spend time tweaking your attendee formula after going live. The hangoutLink field only appears for Google Meet - Zoom links live in the description field and need text parsing. All-day events will spam your channel unless you filter them out, and recurring meetings sometimes trigger multiple reminders if the series gets updated.

Ideas for what to build next

  • Add post-meeting follow-upCreate a second scenario that sends a Slack message after meetings end, asking for quick feedback or next steps.
  • Route reminders by meeting typeUse Make's router to send client meeting reminders to #sales channel and internal meetings to #general based on attendee domains.
  • Create meeting attendance trackingLog all meeting reminders to a Google Sheet with timestamps and attendee counts for team productivity analysis.

Related guides

Was this guide helpful?
Google Calendar + Slack overviewMake profile →