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

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

scheduled

Use case type

notification

Real-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.

/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 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.

Google Workspace account with calendar access and permission to grant third-party app access
Slack workspace membership with permission to add bots and post messages to team channels
Microsoft 365 account with Power Automate license (included in most Office plans)
Admin rights to the Google Calendar being monitored for OOO events

Field Mapping

Map these fields between your apps.

FieldAPI Name
Required
Event Organizer
Event Summary
Start Date
End Date
All Day Flag
1 optional field▸ show
Event ID

Step-by-Step Setup

1

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.

  1. 1Click 'My flows' in the left navigation
  2. 2Click '+ New flow' button
  3. 3Select 'Automated cloud flow'
  4. 4Enter 'OOO Calendar Alerts' as the flow name
  5. 5Click 'Skip' on trigger selection
What you should see: You should see a blank flow designer with 'Choose your flow's trigger' at the top.
2

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.

  1. 1Type 'Google Calendar' in the search box
  2. 2Click on the Google Calendar connector
  3. 3Select 'When an event is added, updated or deleted'
  4. 4Click 'Sign in' and authenticate your Google account
  5. 5Grant calendar read permissions
What you should see: The trigger shows 'Connected' status with your Google account email displayed.
Common mistake — Power Automate only sees calendars you own or have full access to - shared calendars with limited permissions won't work.
Power Automate
+
click +
search apps
Google Calendar
GO
Google Calendar
Add Google Calendar trigger
Google Calendar
GO
module added
3

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.

  1. 1Click the Calendar Id dropdown
  2. 2Select your primary calendar or team calendar
  3. 3Leave 'Time range start' and 'Time range end' empty
  4. 4Keep default polling interval at 180 seconds
What you should see: Calendar Id shows your selected calendar name, and polling interval displays '180'.
Common mistake — Don't set polling below 60 seconds or Google will throttle your requests after about 100 calls.
4

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.

  1. 1Click '+ New step' below the Google Calendar trigger
  2. 2Search for 'Condition' and select it
  3. 3Click in the left condition box
  4. 4Select 'Summary' from dynamic content
  5. 5Set the operator to 'contains'
What you should see: A condition block appears with Summary selected on the left side and 'contains' as the operator.
Common mistake — Case sensitivity matters - 'OOO' won't match 'ooo' unless you convert to lowercase first.
Google Calendar
GO
trigger
filter
Condition
matches criteria?
yes — passes through
no — skipped
Slack
SL
notified
5

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.

  1. 1Type 'OOO' in the condition value field
  2. 2Click 'Add' next to the condition
  3. 3Select 'Add row' and choose 'Or'
  4. 4Add conditions for 'Vacation', 'PTO', 'Out of office'
  5. 5Click 'Edit in advanced mode' for complex OR logic
What you should see: Advanced mode shows an OR expression checking Summary for multiple OOO-related terms.
Common mistake — Filters are the most common place setups break. Double-check the field name and value exactly match what your app sends — a single capital letter difference will block everything.
6

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.

  1. 1Click 'Add' in the condition block
  2. 2Select 'Add row' and choose 'And'
  3. 3Choose 'All day' from dynamic content
  4. 4Set operator to 'is equal to'
  5. 5Type 'true' in the value field
What you should see: Condition now checks both Summary keywords AND All day equals true.
Common mistake — Google Calendar's 'All day' field sometimes returns string 'true' instead of boolean - test with your actual calendar data.
7

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.

  1. 1Click 'Add an action' under 'If yes'
  2. 2Search for 'Slack' and select the connector
  3. 3Choose 'Post message' action
  4. 4Click 'Sign in' for Slack authentication
  5. 5Authorize Power Automate to access your workspace
What you should see: Slack Post message action appears with your workspace name and connection status.
Common mistake — You need to be a workspace admin or have the bot permission scope to post messages to channels.
8

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.

  1. 1Type '#team-updates' in the Channel field
  2. 2Click in the Message field
  3. 3Add dynamic content: Organizer, Summary, Start time, End time
  4. 4Format the message with clear OOO information
  5. 5Set Bot name to 'OOO Bot' for easy identification
What you should see: Message preview shows dynamic fields that will populate with actual calendar data.
Common mistake — Map fields using the variable picker — don't type field names manually. Hand-typed variable names often have invisible spacing errors that produce blank output.
9

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.

  1. 1Click 'Add an action' before the Slack step
  2. 2Search for 'Compose' under Data Operation
  3. 3Combine Event Id and Updated dynamic content
  4. 4Add condition to check if this combination was seen before
  5. 5Use SharePoint list to store processed event IDs
What you should see: Compose action shows concatenated Event Id and Updated timestamp as unique key.
Common mistake — Without duplicate prevention, modified OOO events will post multiple Slack messages confusing your team.
10

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.

  1. 1Click 'Save' in the top right
  2. 2Select 'Test' next to the Save button
  3. 3Choose 'I'll perform the trigger action'
  4. 4Create test OOO event in Google Calendar
  5. 5Wait 3-5 minutes and check Slack channel
What you should see: Test shows successful run with green checkmarks, and Slack message appears in the target channel.
Common mistake — First-time Google Calendar sync can take up to 15 minutes - be patient with initial testing.

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'], ')'
)
Power Automate
▶ Test flow
executed
Google Calendar
Slack
Slack
🔔 notification
received

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 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.

Cost

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.

Tradeoffs

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 notificationsCreate a second flow that posts when someone's OOO period ends to welcome them back.
  • Include backup coverageModify the message template to tag the person covering their responsibilities during time off.
  • Multi-calendar monitoringExtend the flow to watch multiple team calendars or department calendars for comprehensive coverage.

Related guides

Was this guide helpful?
Google Calendar + Slack overviewPower Automate profile →