

How to Send Out-of-Office Alerts to Slack with Power Automate
Automatically post to #team-updates in Slack when someone adds an all-day 'OOO' or 'Vacation' event to Google Calendar.
Steps and UI details are based on platform versions at time of writing — check each platform for the latest interface.
Best for
Teams using Microsoft 365 who want automatic OOO notifications without manual Slack posting
Not ideal for
Teams needing instant notifications since Power Automate polls Google Calendar every 3 minutes
Sync type
scheduledUse case type
notificationReal-World Example
A 25-person marketing team uses this to notify #team-updates whenever someone adds 'OOO', 'Vacation', or 'PTO' as an all-day Google Calendar event. Before automation, people forgot to announce time off 40% of the time, causing scheduling conflicts and missed meetings.
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 | ||
| Event Organizer | ||
| Event Summary | ||
| Start Date | ||
| End Date | ||
| All Day Flag | ||
1 optional field▸ show
| Event ID |
Step-by-Step Setup
My flows > + New flow > Automated cloud flow
Create automated flow in Power Automate
Go to make.powerautomate.com and sign in with your Microsoft account. Click 'My flows' in the left sidebar, then '+ New flow' at the top. Select 'Automated cloud flow' from the dropdown menu. Name your flow 'OOO Calendar Alerts' and leave the trigger selection for the next step.
- 1Click 'My flows' in the left navigation
- 2Click '+ New flow' button
- 3Select 'Automated cloud flow'
- 4Enter 'OOO Calendar Alerts' as the flow name
- 5Click 'Skip' on trigger selection
Flow designer > Search connectors > Google Calendar
Add Google Calendar trigger
Search for 'Google Calendar' in the connector search box and select it. Choose 'When an event is added, updated or deleted' as your trigger. This polls your calendar every 3 minutes for changes. You'll need to sign in to your Google account and grant calendar access permissions.
- 1Type 'Google Calendar' in the search box
- 2Click on the Google Calendar connector
- 3Select 'When an event is added, updated or deleted'
- 4Click 'Sign in' and authenticate your Google account
- 5Grant calendar read permissions
Google Calendar trigger > Parameters
Configure calendar monitoring
Set the Calendar Id to your primary calendar or the specific calendar where OOO events are created. Leave the time range fields blank to monitor all events. Set the polling frequency - the default 3 minutes works well for most teams without hitting API limits.
- 1Click the Calendar Id dropdown
- 2Select your primary calendar or team calendar
- 3Leave 'Time range start' and 'Time range end' empty
- 4Keep default polling interval at 180 seconds
Flow designer > + New step > Control > Condition
Add condition to filter OOO events
Click '+ New step' and search for 'Condition' under Control actions. You need to filter for all-day events that contain OOO keywords in the title. The condition will check if the event summary contains 'OOO' or 'Vacation' and if it's an all-day event.
- 1Click '+ New step' below the Google Calendar trigger
- 2Search for 'Condition' and select it
- 3Click in the left condition box
- 4Select 'Summary' from dynamic content
- 5Set the operator to 'contains'
Condition > Add condition > Advanced mode
Set OOO keyword conditions
In the condition value field, type 'OOO' to match that exact text. Click 'Add' to create additional conditions and add 'OR' logic for other variations like 'Vacation', 'PTO', 'Out of office'. Each condition should check if the Summary contains these keywords.
- 1Type 'OOO' in the condition value field
- 2Click 'Add' next to the condition
- 3Select 'Add row' and choose 'Or'
- 4Add conditions for 'Vacation', 'PTO', 'Out of office'
- 5Click 'Edit in advanced mode' for complex OR logic
Condition > Add condition > And
Filter for all-day events only
Add another condition within the existing condition group to ensure you only catch all-day events. Check if 'Start time' equals 'End time' for all-day events, or look for events where 'All day' is true. This prevents partial-day appointments from triggering notifications.
- 1Click 'Add' in the condition block
- 2Select 'Add row' and choose 'And'
- 3Choose 'All day' from dynamic content
- 4Set operator to 'is equal to'
- 5Type 'true' in the value field
Condition > If yes > Add an action > Slack > Post message
Add Slack action for notifications
In the 'If yes' branch of your condition, click 'Add an action' and search for 'Slack'. Select 'Post message' action and authenticate with your Slack workspace. You'll need permissions to post to the target channel where OOO notifications should appear.
- 1Click 'Add an action' under 'If yes'
- 2Search for 'Slack' and select the connector
- 3Choose 'Post message' action
- 4Click 'Sign in' for Slack authentication
- 5Authorize Power Automate to access your workspace
Slack Post message > Parameters
Configure Slack message details
Set the Channel to '#team-updates' or your preferred notification channel. Create a message template using dynamic content from the calendar event. Include the person's name, dates, and event title to provide complete OOO context.
- 1Type '#team-updates' in the Channel field
- 2Click in the Message field
- 3Add dynamic content: Organizer, Summary, Start time, End time
- 4Format the message with clear OOO information
- 5Set Bot name to 'OOO Bot' for easy identification
Add an action > Data Operation > Compose
Add duplicate prevention
Power Automate's polling can trigger multiple times for the same event if it gets updated. Add a 'Compose' action to create a unique identifier using the event ID and modification timestamp. Store this in a SharePoint list or use 'Do until' loop to prevent duplicate notifications.
- 1Click 'Add an action' before the Slack step
- 2Search for 'Compose' under Data Operation
- 3Combine Event Id and Updated dynamic content
- 4Add condition to check if this combination was seen before
- 5Use SharePoint list to store processed event IDs
Flow designer > Save > Test
Test and enable the flow
Click 'Save' to store your flow configuration. Create a test all-day event in Google Calendar with 'OOO' in the title to verify the workflow. Check that the Slack message appears in your target channel within 3-5 minutes. Enable the flow if testing succeeds.
- 1Click 'Save' in the top right
- 2Select 'Test' next to the Save button
- 3Choose 'I'll perform the trigger action'
- 4Create test OOO event in Google Calendar
- 5Wait 3-5 minutes and check Slack channel
Use Power Automate expressions to format dates and handle edge cases like single-day vs multi-day time off. Paste this in the Message field of your Slack action to create smart formatting.
JavaScript — Code Stepconcat('🏖️ ', ▸ Show code
concat('🏖️ ',
split(triggerOutputs()?['body/organizer'], '@')[0],
' will be out of office ',... expand to see full code
concat('🏖️ ',
split(triggerOutputs()?['body/organizer'], '@')[0],
' will be out of office ',
if(equals(formatDateTime(triggerOutputs()?['body/start'], 'yyyy-MM-dd'),
formatDateTime(triggerOutputs()?['body/end'], 'yyyy-MM-dd')),
concat('on ', formatDateTime(triggerOutputs()?['body/start'], 'MMM dd')),
concat('from ', formatDateTime(triggerOutputs()?['body/start'], 'MMM dd'),
' - ', formatDateTime(triggerOutputs()?['body/end'], 'MMM dd'))
),
' (', triggerOutputs()?['body/summary'], ')'
)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 Power Automate for this if your team already lives in Microsoft 365 and you want OOO tracking without buying another tool. The Google Calendar connector handles authentication smoothly and the 3-minute polling frequency works fine for advance time-off planning. Skip it if you need instant notifications - Zapier's webhooks fire within seconds while Power Automate takes 3-6 minutes.
Costs run about $12/month on the cheapest paid plan if you go over 750 flow runs monthly. With 25 team members taking time off twice per month, you'll hit maybe 50-75 runs total. Most teams stay well under the free tier limits. Make costs nothing until 1,000 operations monthly, making it cheaper for high-OOO teams.
Make's Google Calendar webhook triggers instantly instead of polling every 3 minutes, and Zapier's formatter handles date parsing better than Power Automate's expressions. N8n lets you build complex approval flows where managers must confirm time off before Slack posts. Pipedream gives you full JavaScript for custom message formatting. Power Automate wins if you already have SharePoint for duplicate tracking and your IT department prefers Microsoft-only integrations.
You'll discover that Google's 'All day' field sometimes returns the string 'true' instead of boolean true, breaking your conditions. Modified calendar events trigger the flow again, flooding Slack with duplicate messages unless you add prevention logic. The Google Calendar API occasionally has 10-15 minute delays syncing new events during high usage periods, making your 3-minute polling irrelevant.
Ideas for what to build next
- →Add return notifications — Create a second flow that posts when someone's OOO period ends to welcome them back.
- →Include backup coverage — Modify the message template to tag the person covering their responsibilities during time off.
- →Multi-calendar monitoring — Extend the flow to watch multiple team calendars or department calendars for comprehensive coverage.
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