

How to Send Meeting Reminders with Power Automate
Send Slack messages 15 minutes before Google Calendar events with meeting title, link, and attendees to prevent tardiness.
Steps and UI details are based on platform versions at time of writing ā check each platform for the latest interface.
Best for
Microsoft 365 teams who want meeting alerts in Slack without third-party scheduling tools
Not ideal for
Teams using multiple calendar systems or needing sub-minute precision timing
Sync type
scheduledUse case type
notificationReal-World Example
A 25-person marketing team at a SaaS company uses this to send #general Slack alerts 15 minutes before important client calls and team standups. Before automation, 3-4 people joined late to every meeting because they stayed buried in Slack and forgot to check their calendar.
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 Power Automate
Copy the pre-built Power Automate blueprint and paste it straight into Power Automate. 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 Subject | ||
| Start Time | ||
| Event ID | ||
3 optional fieldsāø show
| Meeting URL | |
| Attendees | |
| Location |
Step-by-Step Setup
Create > Scheduled cloud flow
Create a scheduled cloud flow
Go to make.powerautomate.com and sign in with your Microsoft account. Click 'Create' in the left sidebar, then select 'Scheduled cloud flow'. Name it 'Meeting Reminders' and set it to run every 5 minutes. This frequency catches events 15 minutes before they start without missing any.
- 1Click 'Create' in the left navigation
- 2Select 'Scheduled cloud flow'
- 3Name: 'Meeting Reminders'
- 4Set repeat interval to 5 minutes
New step > Google Calendar > Get calendar view of events (V3)
Add Google Calendar connection
Click '+ New step' and search for 'Google Calendar'. Select 'Get calendar view of events (V3)'. You'll need to sign in to your Google account and grant calendar access. Choose the calendar you want to monitor - usually your primary calendar unless you have dedicated meeting calendars.
- 1Click '+ New step'
- 2Search 'Google Calendar' in the connector search
- 3Select 'Get calendar view of events (V3)'
- 4Sign in to Google and authorize access
Get calendar view of events > Parameters
Set time window for upcoming events
Configure the calendar query to find events starting in exactly 15 minutes. Set 'Start time' to addMinutes(utcNow(),15) and 'End time' to addMinutes(utcNow(),16). This 1-minute window captures events that start 15 minutes from now. Set 'Max results' to 50 to handle busy calendars.
- 1Click in 'Start time' field
- 2Enter expression: addMinutes(utcNow(),15)
- 3Click in 'End time' field
- 4Enter expression: addMinutes(utcNow(),16)
- 5Set 'Max results' to 50
New step > Control > Condition
Add condition to check for events
Add a 'Condition' action to check if any events were found. Power Automate will still run every 5 minutes even with no events, so this prevents empty Slack messages. Set the condition to check if the length of the calendar events array is greater than 0.
- 1Click '+ New step'
- 2Search for 'Condition' under Control
- 3Select 'Condition'
- 4Set left value to length(outputs('Get_calendar_view_of_events_(V3)')?['body/value'])
- 5Set condition to 'is greater than'
- 6Set right value to 0
Condition Yes branch > Apply to each
Add Apply to each loop
In the 'Yes' branch, add an 'Apply to each' control to process multiple events. Set the input to the calendar events array from the previous step. This handles cases where multiple meetings start at the same 15-minute mark.
- 1Click 'Add an action' in the Yes branch
- 2Search for 'Apply to each'
- 3Select 'Apply to each' under Control
- 4Set output from previous step as input
Apply to each > New step > Slack > Post message
Connect to Slack
Inside the Apply to each loop, add a new step and search for Slack. Select 'Post message' action. Sign in to your Slack workspace and authorize the connection. You'll need to be a Slack admin or have the workspace owner approve the Power Automate app.
- 1Click 'Add an action' inside Apply to each
- 2Search for 'Slack'
- 3Select 'Post message'
- 4Sign in to Slack and authorize
Post message > Message configuration
Configure the reminder message
Select your target Slack channel from the dropdown. Build the message using dynamic content from the calendar event. Include the meeting subject, start time, meeting URL if available, and attendee list. Format it clearly so people can quickly see what meeting is starting and who should attend.
- 1Select channel from dropdown
- 2Click in 'Message' field
- 3Add dynamic content for Subject, Start time
- 4Include Join URL and Attendees if present
- 5Format with line breaks and emojis
Apply to each > Compose > Post message
Add duplicate prevention
Add a 'Compose' action before the Slack message to create a unique identifier for each event. Use the event ID and start time to prevent duplicate notifications if the flow runs multiple times for the same event. Store this in a SharePoint list or variable for checking.
- 1Add 'Compose' action before Slack
- 2Set input to concat event ID and start time
- 3Add condition to check if this combo was processed
- 4Only send Slack message if not duplicate
Save > Test > Manually
Test with upcoming meeting
Create a test calendar event 20 minutes from now. Save and manually run your flow to test the logic. Check that it finds no events (since it looks for 15-minute window). Then wait until 15 minutes before your test meeting and let it run automatically.
- 1Click 'Save' in top right
- 2Click 'Test' button
- 3Select 'Manually' and click 'Test'
- 4Create a calendar event 20 minutes out
- 5Run the test and verify no message sent
Flow details > Turn on > Run history
Enable and monitor the flow
Turn on the flow and monitor it for the first few runs. Check the run history to see successful executions and any failures. Watch for calendar permissions issues or Slack rate limiting with busy schedules. Set up email notifications for flow failures so you know when reminders stop working.
- 1Click 'Turn on' to activate the flow
- 2Go to 'Run history' tab
- 3Monitor first few executions
- 4Set up failure notifications in Settings
Use Power Fx expressions to format attendee emails into readable names and handle missing meeting URLs gracefully. Add this in a Compose action before your Slack message.
JavaScript ā Code Step// Format attendees listāø Show code
// Format attendees list
if(empty(items('Apply_to_each')?['attendees']),
'No attendees listed',... expand to see full code
// Format attendees list
if(empty(items('Apply_to_each')?['attendees']),
'No attendees listed',
join(
select(
items('Apply_to_each')?['attendees'],
if(contains(item()?['displayName'], '@'),
first(split(item()?['displayName'], '@')),
item()?['displayName']
)
),
', '
)
)
// Handle meeting URLs with fallback
if(not(empty(items('Apply_to_each')?['hangoutLink'])),
concat('š„ ', items('Apply_to_each')?['hangoutLink']),
if(not(empty(items('Apply_to_each')?['location'])),
concat('š ', items('Apply_to_each')?['location']),
'š
Check calendar for details'
)
)Scaling Beyond 20+ meetings per day across team calendars+ Records
If your volume exceeds 20+ meetings per day across team calendars records, apply these adjustments.
Implement smart batching
Group multiple meeting reminders starting within the same 5-minute window into one Slack message. Prevents notification fatigue when people have back-to-back calls.
Add rate limiting protection
Track how many reminders you've sent per hour and pause the flow if it exceeds 50 messages. Prevents hitting Slack's message rate limits during conference-heavy days.
Use calendar filtering
Only process calendars from key team members or filter by meeting importance. Processing every employee's calendar creates unnecessary API calls and reminder noise.
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 Microsoft Power Automate for this if your team already lives in the Microsoft ecosystem and wants native integration with Outlook/Teams calendars alongside Google Calendar. The 5-minute scheduled trigger works well for meeting reminders where exact timing isn't critical. You get unlimited runs on most business plans, making it cost-effective for active teams. Skip Power Automate if you need sub-minute precision or complex calendar logic - Make handles conditional triggers better.
Real math: each flow run consumes 1 API call to Google Calendar plus 1 to Slack per meeting found. A team with 15 meetings/day runs 288 times daily (every 5 minutes) but only sends ~15 Slack messages. That's roughly 300 API calls/day, well within Power Automate's generous limits. Zapier would cost $20/month for the same volume while Power Automate includes this in most $5/user Office plans.
Make beats Power Automate on complex calendar filtering - it can check attendee domains, parse meeting descriptions, and handle multiple calendar sources in one scenario. Zapier has better Slack formatting options with their Formatter tool. n8n gives you precise timing control down to the minute instead of 5-minute intervals. But Power Automate wins on ease of use and Microsoft 365 integration. Non-technical teams can build and modify this flow without learning webhook concepts or complex expressions.
You'll hit Google Calendar's time zone complexity first - events stored in UTC but displayed in local time zones cause reminders to fire at wrong hours. The attendees array often lacks display names, showing email addresses instead of readable names in Slack. Power Automate's 5-minute minimum interval means you can't achieve perfect 15-minute timing - some reminders arrive 14-19 minutes early depending on when the flow runs. Slack's threading gets messy if you send reminders to busy channels with lots of concurrent conversations.
Ideas for what to build next
- āAdd snooze functionality ā Let people react with ā° emoji to get another reminder in 5 minutes if they're still busy.
- āFilter by calendar importance ā Only send reminders for meetings marked as 'Busy' or 'Important' to reduce notification noise.
- āInclude agenda from meeting notes ā Parse the event description to extract agenda items and include key points in the Slack reminder.
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