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

How to Send Google Calendar Event Notifications to Slack with Power Automate

Automatically post a Slack message whenever a new meeting is added to your shared 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 need calendar transparency without manually checking schedules.

Not ideal for

Teams that need instant notifications — Power Automate polls every 3 minutes at best.

Sync type

scheduled

Use case type

notification

Real-World Example

💡

A 12-person marketing team uses this to post new campaign planning meetings from their shared Google Calendar to #marketing-ops in Slack. Before automation, team members missed 30% of ad-hoc meetings because they relied on email invites that got buried. Now everyone sees new meetings within 3 minutes.

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 account with edit access to the target shared calendar
Slack workspace membership with permission to post in target channel
Microsoft 365 account with Power Automate license (included in most Office plans)
Admin approval for Power Automate to access Google Calendar if organization requires it

Field Mapping

Map these fields between your apps.

FieldAPI Name
Required
Event Title
Start Time
Status
5 optional fields▸ show
End Time
Attendees
Location
Description
Organizer

Step-by-Step Setup

1

My flows > + New flow > Automated cloud flow

Create new automated flow

Go to make.powerautomate.com and sign in with your Microsoft account. Click 'My flows' in the left sidebar, then the blue '+ New flow' button. Select 'Automated cloud flow' from the dropdown. This creates a flow that runs when triggered by an event.

  1. 1Click 'My flows' in the left navigation
  2. 2Click the blue '+ New flow' button
  3. 3Select 'Automated cloud flow'
  4. 4Name your flow 'Calendar to Slack Notifications'
What you should see: You should see the flow builder with a trigger selection screen.
2

Trigger > Search connectors > Google Calendar

Set up Google Calendar trigger

In the trigger selector, search for 'Google Calendar' and select it. Choose 'When an event is added' from the available triggers. This polls your calendar every few minutes for new events. You'll need to authenticate with Google if this is your first time connecting.

  1. 1Type 'Google Calendar' in the connector search box
  2. 2Click on 'Google Calendar' connector
  3. 3Select 'When an event is added' trigger
  4. 4Click 'Sign in' to authenticate with Google
What you should see: You should see Google Calendar connected with a green checkmark and calendar selection dropdown.
Common mistake — Power Automate only sees calendars you own or have edit access to — shared view-only calendars won't appear in the list.
Power Automate
+
click +
search apps
Google Calendar
GO
Google Calendar
Set up Google Calendar trigger
Google Calendar
GO
module added
3

Google Calendar trigger > Calendar dropdown

Select target calendar

After authentication, you'll see a dropdown with your available calendars. Select the shared team calendar you want to monitor. If you don't see your target calendar, check that you have edit permissions on it in Google Calendar. The flow will only detect events created after you enable it.

  1. 1Click the 'Calendar' dropdown
  2. 2Select your shared team calendar
  3. 3Leave other settings at default
  4. 4Click 'New step' button
What you should see: The trigger shows your selected calendar name and a 'New step' button appears below.
Common mistake — The trigger won't fire for existing events — only new ones created after activation.
4

New step > Search actions > Condition

Add condition to filter events

Click 'New step' and search for 'Condition' in the actions. This prevents notifications for declined events or cancelled meetings. Set the condition to check if the event status equals 'confirmed'. This avoids spam from tentative or cancelled events that might clutter your Slack channel.

  1. 1Click 'New step'
  2. 2Search for 'Condition' in actions
  3. 3Click 'Condition' control
  4. 4Set left side to 'Status' from dynamic content
  5. 5Set condition to 'is equal to'
  6. 6Type 'confirmed' on the right side
What you should see: You should see a condition block with 'Yes' and 'No' branches below it.
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.
Google Calendar
GO
trigger
filter
Condition
matches criteria?
yes — passes through
no — skipped
Slack
SL
notified
5

Condition > Yes branch > Add an action > Slack

Add Slack action in Yes branch

In the 'Yes' branch of the condition, click 'Add an action' and search for Slack. Select 'Post message' action. You'll need to authenticate with Slack if it's your first time. Choose the Slack workspace and channel where you want notifications to appear.

  1. 1Click 'Add an action' in the Yes branch
  2. 2Search for 'Slack' and select it
  3. 3Choose 'Post message' action
  4. 4Sign in to your Slack workspace
  5. 5Select the target channel from dropdown
What you should see: Slack is connected and you see channel selection dropdown with your available channels.
Common mistake — You need to be a member of the target Slack channel — private channels you can't access won't appear in the list.
6

Slack Post message > Message field > Dynamic content

Configure Slack message format

Click in the 'Message' field and build your notification using dynamic content from Google Calendar. Include the event title, start time, and attendees for context. Use the lightning bolt icon to insert dynamic fields like 'Subject', 'Start time', and 'Attendees' from the calendar trigger.

  1. 1Click in the 'Message' text box
  2. 2Type 'New meeting: '
  3. 3Click the lightning bolt for dynamic content
  4. 4Select 'Subject' from Google Calendar section
  5. 5Add line break and type 'When: '
  6. 6Insert 'Start time' from dynamic content
  7. 7Add 'Attendees: ' and insert 'Attendees' field
What you should see: Your message shows blue dynamic content tags mixed with your static text.
Common mistake — Attendees field returns email addresses — not display names — so your message will show [email protected] instead of John Smith.
7

Message field > Start time > Expression tab

Format start time properly

The raw start time from Google Calendar includes timezone info and looks messy in Slack. Click on the 'Start time' dynamic content and wrap it in formatDateTime() expression. Use formatDateTime(triggerOutputs()?['body/start/dateTime'], 'MMM dd, yyyy h:mm tt') to get a clean format like 'Dec 15, 2023 2:30 PM'.

  1. 1Click on the Start time dynamic content in your message
  2. 2Click 'Expression' tab in dynamic content panel
  3. 3Type: formatDateTime(triggerOutputs()?['body/start/dateTime'], 'MMM dd, yyyy h:mm tt')
  4. 4Click OK to insert the expression
What you should see: The start time shows as a formatted expression instead of raw dynamic content.
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.
8

Message field > Add dynamic content > Location

Add location if available

Many meetings include location details that are useful for the team. Add a conditional section to include location only when it exists. Click below your current message content and add 'Location: ' followed by the 'Location' dynamic field. This prevents empty location lines for online meetings.

  1. 1Click after your attendees line in the message
  2. 2Press Enter for a new line
  3. 3Type 'Location: '
  4. 4Insert 'Location' from dynamic content
  5. 5Leave 'Message as user' unchecked
What you should see: Your message template now includes event title, formatted time, attendees, and location.
Common mistake — Location field will be empty for Google Meet or Zoom links — these appear in the description field instead.
9

Top toolbar > Save

Save and test the flow

Click 'Save' in the top right to save your flow. Power Automate will validate all connections and expressions. Once saved, the flow activates automatically and starts monitoring your calendar. Test it by creating a new event in your selected Google Calendar.

  1. 1Click 'Save' button in top right
  2. 2Wait for validation to complete
  3. 3Go to your Google Calendar
  4. 4Create a test event in the monitored calendar
  5. 5Wait 3-5 minutes for the flow to trigger
What you should see: Flow saves successfully and shows 'Your flow is ready to go' message with green checkmark.
Common mistake — The first run can take up to 15 minutes — subsequent runs happen every 3 minutes during business hours.
Power Automate
▶ Test flow
executed
Google Calendar
Slack
Slack
🔔 notification
received
10

My flows > Your flow name > Run history

Monitor flow runs

Go back to 'My flows' and click on your flow name to see the run history. Each run shows whether it succeeded, failed, or was skipped. Failed runs usually indicate permission issues with Google Calendar or Slack channel access. Click on individual runs to see detailed logs.

  1. 1Click 'My flows' in left navigation
  2. 2Click on your flow name
  3. 3Review the 'Run history' section
  4. 4Click on any failed runs to see error details
What you should see: You should see successful runs with green checkmarks when new events are created.

Use this expression in the Slack message field to create a cleaner attendee list that removes your own email and formats the remaining attendees nicely.

Copy this templatejoin(
▸ Show code
join(
  filter(
    split(triggerOutputs()?['body/attendees'], ';'),

... expand to see full code

join(
  filter(
    split(triggerOutputs()?['body/attendees'], ';'),
    lambda('item', 
      and(
        not(empty(item())),
        not(contains(item(), '[email protected]'))
      )
    )
  ),
  ', '
)

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 wants calendar notifications without learning another platform. The Google Calendar connector works reliably and the Slack integration handles threading well. The built-in expression functions make time formatting straightforward. Skip Power Automate if you need instant notifications — Zapier's webhook-based trigger is faster.

Cost

Real math: Power Automate polls cost 1 operation per check plus 1 per event found. At 20 new meetings per week, you're looking at roughly 500 operations monthly. That fits comfortably in the free 750 operation limit. Zapier charges per event at this volume but responds instantly. Make costs more per operation but includes more in the free tier.

Tradeoffs

Zapier wins on speed — their Google Calendar trigger uses webhooks for instant notifications versus Power Automate's 3-minute polling delay. Make offers better message formatting with their built-in Slack threading functions. N8n gives you complete control over duplicate detection if team members create overlapping events. But Power Automate integrates cleanly with your existing Microsoft ecosystem and the authentication flows are simpler for enterprise users.

You'll hit timezone confusion first — Google sends UTC timestamps but your team expects local time. The formatDateTime expressions get complex fast when you add timezone conversion. Power Automate also treats event updates as new events sometimes, creating duplicate notifications. The attendee field returns raw email addresses, not display names, so your notifications look technical rather than friendly.

Ideas for what to build next

  • Add digest notificationsCreate a second flow that sends daily summaries of upcoming meetings instead of individual notifications for each event.
  • Include meeting linksExtract Zoom or Teams links from event descriptions and include them in Slack notifications for one-click joining.
  • Set up cancellation alertsBuild a companion flow using 'When an event is deleted' trigger to notify the team when meetings are cancelled.

Related guides

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