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

How to Send Google Calendar Event Notifications to Slack with N8n

Automatically post new calendar events to a Slack channel when they're added to your 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 that want customizable calendar notifications and don't need instant delivery.

Not ideal for

Teams needing real-time notifications or those uncomfortable with polling delays.

Sync type

polling

Use case type

notification

Real-World Example

πŸ’‘

A 12-person marketing agency uses this to notify #team-schedule whenever someone books client meetings in their shared Google Calendar. Before automation, the team lead manually announced meeting changes in daily standups, causing scheduling conflicts when people booked overlapping prep time. Now everyone sees new meetings within 5 minutes and can block related time immediately.

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 n8n

Copy the pre-built n8n blueprint and paste it straight into n8n. 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 access to the team calendar you want to monitor
Slack workspace admin access or pre-approved bot integration permissions
N8n instance running (cloud or self-hosted)
Target Slack channel created and accessible to the bot

Field Mapping

Map these fields between your apps.

FieldAPI Name
Required
Event Titlesummary
Start Timestart.dateTime
Event IDid
4 optional fieldsβ–Έ show
Event LinkhtmlLink
Descriptiondescription
Attendeesattendees
Locationlocation

Step-by-Step Setup

1

Workflows > + New > Blank Workflow

Create New Workflow

Start a blank workflow in N8n to connect Google Calendar to Slack. This sets up the foundation for your event notification system.

  1. 1Click the '+ New' button in the top left corner
  2. 2Select 'Blank Workflow' from the options
  3. 3Name your workflow 'Calendar to Slack Notifications'
βœ“ What you should see: You should see an empty canvas with a single 'Start' node in the center.
2

Canvas > + > Google Calendar > Trigger

Add Google Calendar Trigger

Set up the trigger node to monitor your Google Calendar for new events. This will fire whenever someone adds an event to the shared calendar.

  1. 1Click the '+' button next to the Start node
  2. 2Search for 'Google Calendar' in the node list
  3. 3Select 'Google Calendar Trigger' from the results
  4. 4Choose 'Event Created' as the trigger type
βœ“ What you should see: The Google Calendar Trigger node appears with a red connection warning until you authenticate.
⚠
Common mistake β€” Don't pick 'Event Updated' unless you want notifications for every edit β€” that includes attendee responses and description changes.
n8n
+
click +
search apps
Google Calendar
GO
Google Calendar
Add Google Calendar Trigger
Google Calendar
GO
module added
3

Node Settings > Credentials > Create New

Connect Google Account

Authenticate with your Google account to give N8n read access to calendar events. Use an account that has access to the shared team calendar.

  1. 1Click 'Create New' next to the Credential field
  2. 2Select 'Google Calendar OAuth2 API' from the dropdown
  3. 3Click 'Sign in with Google' and complete OAuth flow
  4. 4Select the calendar you want to monitor from the Calendar dropdown
βœ“ What you should see: Green 'Connected' badge appears next to the credential name and calendar dropdown populates with your calendars.
⚠
Common mistake β€” Make sure you select the shared team calendar, not your personal default calendar β€” they look similar in the dropdown.
n8n settings
Connection
Choose a connection…Add
click Add
Google Calendar
Log in to authorize
Authorize n8n
popup window
βœ“
Connected
green checkmark
4

Google Calendar Trigger > Options

Configure Polling Settings

Set how often N8n checks for new calendar events. More frequent polling catches events faster but uses more executions.

  1. 1Expand the 'Options' section in the trigger node
  2. 2Set 'Poll Times' to 'Every 5 Minutes'
  3. 3Enable 'Download Attachments' if you need file access
  4. 4Leave other options at default values
βœ“ What you should see: Polling interval shows '*/5 * * * *' in cron format and options are configured.
⚠
Common mistake β€” Setting to 'Every Minute' burns through executions fast β€” 1,440 per day just for polling, even with zero events.
5

Toolbar > Execute Workflow

Test Calendar Trigger

Run a test to verify N8n can read events from your calendar. This ensures the connection works before building the Slack integration.

  1. 1Click 'Execute Workflow' in the top toolbar
  2. 2Wait 10-15 seconds for the test to complete
  3. 3Check that the Google Calendar node shows a green success indicator
  4. 4Review the output data to see event fields
βœ“ What you should see: Output panel shows recent calendar events with fields like summary, start time, and attendees.
⚠
Common mistake β€” If no data appears, create a test event in the calendar first β€” the trigger only shows existing events during manual testing.
n8n
β–Ά Run once
executed
βœ“
Google Calendar
βœ“
Slack
Slack
πŸ”” notification
received
6

Canvas > + > Slack > Send Message

Add Slack Node

Connect a Slack node to send messages to your team channel. This will receive the calendar event data and format it for Slack.

  1. 1Click the '+' button after the Google Calendar node
  2. 2Search for 'Slack' and select it
  3. 3Choose 'Send Message' as the operation
  4. 4Set Resource to 'Message'
βœ“ What you should see: Slack node appears connected to the calendar trigger with message configuration options visible.
7

Slack Node > Credentials > Create New

Authenticate Slack Connection

Connect your Slack workspace to allow N8n to post messages. You'll need admin permissions or pre-approval for bot integration.

  1. 1Click 'Create New' next to Credential
  2. 2Select 'Slack OAuth2 API' credential type
  3. 3Click 'Connect my account' and authorize in Slack
  4. 4Verify the connection shows your workspace name
βœ“ What you should see: Green connected status appears and Channel dropdown populates with your Slack channels.
⚠
Common mistake β€” The OAuth flow opens a popup β€” if blocked, manually navigate to the URL shown in the credential setup.
8

Slack Node > Channel and Text Configuration

Configure Slack Message

Set up the message format and target channel for calendar notifications. This determines how event details appear in Slack.

  1. 1Select your target channel from the Channel dropdown
  2. 2Click in the Text field and choose 'Expression' mode
  3. 3Enter message template using calendar event fields
  4. 4Enable 'Send as User' if you want personal attribution
βœ“ What you should see: Text field shows your message template with calendar field references in expression format.
⚠
Common mistake β€” Don't use 'Send as User' unless you have a paid Slack plan β€” free workspaces restrict this feature to workspace owners.
9

Slack Node > Text Field > Expression Editor

Map Event Data Fields

Build the actual message content using calendar event data. This step formats event details into readable Slack notifications.

  1. 1Use this expression for the message text: `New event: {{$json.summary}} on {{$json.start.dateTime | date('MMM d, h:mm a')}} - {{$json.htmlLink}}`
  2. 2Add event description with: `{{$json.description || 'No description'}}`
  3. 3Include attendee count: `{{$json.attendees ? $json.attendees.length : 0}} attendees`
βœ“ What you should see: Message preview shows formatted text with actual event data from your test run.
⚠
Common mistake β€” Calendar times come in UTC β€” add timezone conversion if your team works across multiple zones.
Google Calendar fields
summary
description
start.dateTime
end.dateTime
location
available as variables:
1.props.summary
1.props.description
1.props.start.dateTime
1.props.end.dateTime
1.props.location
10

Toolbar > Execute Workflow

Test Complete Workflow

Run the full workflow to verify calendar events trigger Slack notifications correctly. This validates the entire automation before activation.

  1. 1Click 'Execute Workflow' to test end-to-end
  2. 2Check that both nodes show green success status
  3. 3Verify the test message appeared in your Slack channel
  4. 4Review message formatting and content accuracy
βœ“ What you should see: Both nodes show green checkmarks and a formatted event notification appears in your Slack channel.
⚠
Common mistake β€” The test sends real messages to Slack β€” use a test channel first to avoid spamming your team.
11

Toolbar > Active Toggle > Save

Activate Workflow

Turn on the workflow to start monitoring calendar events continuously. Once active, it will check every 5 minutes and send notifications automatically.

  1. 1Click the toggle switch in the top right to 'Active'
  2. 2Verify the status changes from 'Inactive' to 'Active'
  3. 3Check that polling schedule shows next execution time
  4. 4Save the workflow with Ctrl+S or the Save button
βœ“ What you should see: Workflow status shows 'Active' with a green indicator and next execution timestamp.
⚠
Common mistake β€” Active workflows consume executions even when no events occur β€” budget for 288 polling executions per day at 5-minute intervals.

Drop this into an n8n Code node.

Copy this template{{ new Date($json.start.dateTime || $json.start.date).toLocaleString('en-US', { timeZone: 'America/New_York', weekday: 'short', month: 'short', day: 'numeric', hour: 'numeric', minute: '2-digit' }) }}
β–Έ Show code
{{ new Date($json.start.dateTime || $json.start.date).toLocaleString('en-US', { timeZone: 'America/New_York', weekday: 'short', month: 'short', day: 'numeric', hour: 'numeric', minute: '2-digit' }) }}

... expand to see full code

{{ new Date($json.start.dateTime || $json.start.date).toLocaleString('en-US', { timeZone: 'America/New_York', weekday: 'short', month: 'short', day: 'numeric', hour: 'numeric', minute: '2-digit' }) }}

Scaling Beyond 50+ events/day+ Records

If your volume exceeds 50+ events/day records, apply these adjustments.

1

Switch to Webhook Triggers

Google Calendar supports push notifications via webhooks if your N8n instance has a public URL. This eliminates polling overhead and delivers instant notifications, reducing monthly executions by 90%.

2

Add Event Filtering

Use N8n's IF node to filter events before sending to Slack. Skip events with certain keywords, specific attendee counts, or recurring meeting patterns to reduce notification noise and execution usage.

3

Implement Rate Limiting

Add a delay node between calendar trigger and Slack message during bulk imports. Google Calendar API allows 1,000 requests/100 seconds β€” rapid event creation can hit this limit and fail silently.

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 N8n for this if you want full control over message formatting and don't mind managing your own instance. The expression engine lets you build complex message templates with conditional logic β€” much more flexible than Zapier's fixed field mapping. You can also add filtering logic to skip certain event types or attendee counts. Skip N8n if you need instant notifications β€” polling delays mean 2-5 minute lag times, while Make's webhook triggers fire immediately.

Cost

This workflow burns roughly 300 executions per day with 5-minute polling (288 for polling + ~12 for actual events). At 9,000 executions monthly, you'll need N8n's Starter plan at $20/month after the 5,000 execution free tier. Zapier charges $30/month for their Professional plan to handle the same volume. Make's free tier covers 1,000 operations monthly β€” this workflow would cost $10/month on their Core plan. N8n wins on price if you're already running an instance for other workflows.

Tradeoffs

Make handles this use case better with real webhook triggers from Google Calendar β€” no polling delays and zero wasted executions. Their Google Calendar integration also parses recurring events more reliably than N8n's current implementation. Zapier's pre-built message templates look cleaner out of the box without expression writing. But N8n gives you unlimited customization once you learn the expression syntax β€” you can add timezone conversion, attendee filtering, or conditional formatting that the other platforms can't match without complex multi-step workflows.

Google Calendar's API has quirks you'll discover after setup. All-day events return dates in 'YYYY-MM-DD' format while timed events use full ISO timestamps β€” your message templates need to handle both. Recurring events sometimes trigger notifications for each occurrence during the initial sync, flooding your Slack channel. The polling trigger occasionally misses events created and deleted between poll cycles, especially during bulk imports. Set up error handling to catch malformed calendar data β€” some third-party calendar integrations create events with missing required fields that break the Slack formatting.

Ideas for what to build next

  • β†’
    Add Meeting Reminder Notifications β€” Set up a second workflow with a scheduled trigger to send Slack reminders 15 minutes before events start, pulling from the same Google Calendar.
  • β†’
    Create Event Summary Reports β€” Build a weekly digest that counts events by type or attendee and posts a summary to Slack every Friday, helping track team meeting load.
  • β†’
    Integrate with Time Tracking β€” Connect calendar events to time tracking tools like Toggl or Harvest to automatically start timers when meetings begin, using event start times as triggers.

Related guides

Was this guide helpful?
← Google Calendar + Slack overviewn8n profile β†’