Google Calendar to Slack, a daily schedule briefing
Your day starts with good intentions. Then it turns into tab hopping, half-read invites, and that “wait, was that moved?” feeling right before a meeting.
This calendar Slack briefing automation is a relief for team leads trying to keep mornings calm, and it helps marketers and ops folks who live in Slack but still miss calendar changes. You get one clean message at 6am with today’s schedule, so you stop hunting and start working.
Below you’ll see the workflow, what it automates, what results to expect, and what you need to run it without turning your morning into a mini IT project.
How This Automation Works
The full n8n workflow, from trigger to final output:
n8n Workflow Template: Google Calendar to Slack, a daily schedule briefing
flowchart LR
subgraph sg0["Flow 1"]
direction LR
n0@{ icon: "mdi:location-exit", form: "rounded", label: "Retrieve Calendar Events", pos: "b", h: 48 }
n1@{ icon: "mdi:code-braces", form: "rounded", label: "Compute Today Values", pos: "b", h: 48 }
n2@{ icon: "mdi:cog", form: "rounded", label: "Format Event Date", pos: "b", h: 48 }
n3@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Compare Event Day", pos: "b", h: 48 }
n4@{ icon: "mdi:cog", form: "rounded", label: "Format Today Date", pos: "b", h: 48 }
n5@{ icon: "mdi:swap-vertical", form: "rounded", label: "Map Event Fields", pos: "b", h: 48 }
n6["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/merge.svg' width='40' height='40' /></div><br/>Combine Dates"]
n7@{ icon: "mdi:swap-vertical", form: "rounded", label: "Prepare Message Items", pos: "b", h: 48 }
n8@{ icon: "mdi:cog", form: "rounded", label: "Format Event Time", pos: "b", h: 48 }
n9@{ icon: "mdi:code-braces", form: "rounded", label: "Build Slack Summary", pos: "b", h: 48 }
n10["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/slack.svg' width='40' height='40' /></div><br/>Post Slack Alert"]
n11@{ icon: "mdi:cog", form: "rounded", label: "Scheduled Morning Trigger", pos: "b", h: 48 }
n3 --> n7
n5 --> n6
n11 --> n0
n11 --> n1
n7 --> n8
n6 --> n3
n1 --> n4
n9 --> n10
n2 --> n5
n4 --> n6
n8 --> n9
n0 --> n2
end
%% Styling
classDef trigger fill:#e8f5e9,stroke:#388e3c,stroke-width:2px
classDef ai fill:#e3f2fd,stroke:#1976d2,stroke-width:2px
classDef aiModel fill:#e8eaf6,stroke:#3f51b5,stroke-width:2px
classDef decision fill:#fff8e1,stroke:#f9a825,stroke-width:2px
classDef database fill:#fce4ec,stroke:#c2185b,stroke-width:2px
classDef api fill:#fff3e0,stroke:#e65100,stroke-width:2px
classDef code fill:#f3e5f5,stroke:#7b1fa2,stroke-width:2px
classDef disabled stroke-dasharray: 5 5,opacity: 0.5
class n3 decision
class n1,n9 code
classDef customIcon fill:none,stroke:none
class n6,n10 customIcon
The Problem: Mornings Get Messy When Your Schedule Lives in 10 Places
Most missed meetings aren’t caused by laziness. They happen because the calendar is “over there,” while your team’s real work happens in Slack. You glance at Google Calendar once, then you’re buried in messages, tasks, and client pings. Meanwhile, invites shift, Zoom links change, and that one internal check-in you actually needed to attend gets lost in the noise. The cost is subtle but constant: a few minutes here, a late join there, an awkward “sorry, I didn’t see the update,” and a day that starts behind.
It adds up fast. Here’s where it breaks down in real teams.
- You check your calendar, then don’t check it again until it’s already too late.
- Rescheduled events get missed because Slack is open and Calendar isn’t.
- People ask “What’s on today?” in channels, and someone has to reply manually.
- Your day starts reactive because you didn’t see the shape of your schedule early.
The Solution: A Daily Google Calendar Summary Posted to Slack
This n8n workflow runs automatically every morning at 6am. It pulls your events from Google Calendar, figures out which ones belong to “today,” and then formats them into a simple briefing that is easy to scan in Slack. Behind the scenes, it cleans up date and time fields, maps the event details you actually care about, and builds a single message that reads like a human wrote it. Finally, it posts that summary into your chosen Slack channel (or as a DM), so your schedule shows up where your attention already is.
The workflow starts with a scheduled trigger. It retrieves calendar events, filters them to today’s date, formats times consistently, and then publishes one Slack message with the day’s agenda. No copying. No morning scramble.
What You Get: Automation vs. Results
| What This Workflow Automates | Results You’ll Get |
|---|---|
|
|
Example: What This Looks Like
Say you have 8 meetings on a typical day. Manually, you might check Google Calendar first thing (5 minutes), re-check after a few Slack interruptions (another 5), and then search for details or links at least once (maybe 5 more). That’s about 15 minutes, and it happens almost without noticing. With this workflow, you spend roughly 0 minutes hunting: the 6am Slack message shows the full agenda, and you only open Calendar when you need to change something.
What You’ll Need
- n8n instance (try n8n Cloud free)
- Self-hosting option if you prefer (Hostinger works well)
- Google Calendar for retrieving your day’s events
- Slack to deliver the morning briefing message
- Google OAuth credentials (create in Google Cloud Console)
Skill level: Beginner. You’ll connect accounts, pick a calendar, and choose where in Slack the briefing should land.
Don’t want to set this up yourself? Talk to an automation expert (free 15-minute consultation).
How It Works
A scheduled morning trigger runs at 6am. Cron starts the workflow automatically, so it happens before you’re even properly online.
Today’s date is calculated and standardized. A Function node computes “today,” then Date/Time formatting makes sure comparisons are consistent (important if you’ve ever had timezone weirdness).
Your Google Calendar events are pulled and cleaned up. The workflow retrieves events, formats event dates, maps the fields you need (title, start time, and other details), and merges them with the “today” value to filter out anything not happening today.
A single Slack summary message is built and posted. Event times are formatted for readability, a summary is assembled, and Slack receives one briefing instead of a pile of notifications.
You can easily modify the delivery destination (DM vs. channel) and the message format to match how your team likes to work. See the full implementation guide below for customization options.
Step-by-Step Implementation Guide
Step 1: Configure the Scheduled Morning Trigger
This workflow starts on a daily schedule and immediately branches into two parallel paths.
- Add the Scheduled Morning Trigger node as your trigger.
- Set Trigger Times to run at
hour: 6. - Confirm that Scheduled Morning Trigger outputs to both Retrieve Calendar Events and Compute Today Values in parallel.
Step 2: Connect Google Calendar and Normalize Event Dates
Pull all calendar events and standardize the event date format for comparisons later in the flow.
- Open Retrieve Calendar Events and set Calendar to
[YOUR_EMAIL], Operation togetAll, and Return All totrue. - Credential Required: Connect your googleCalendarOAuth2Api credentials in Retrieve Calendar Events.
- In Format Event Date, set Value to
={{$json["start"]["dateTime"]}}, To Format toDD/MM/YYYY, and Data Property Name toEvent Start Date Only. - Ensure Format Event Date uses the To Timezone option
Asia/Qatar.
Step 3: Compute Today’s Date and Compare Against Events
This branch calculates today’s date, formats it, and merges it with event data to filter only today’s events.
- In Compute Today Values, keep the provided Function Code to set
date_todayandday_today. - In Format Today Date, set Value to
={{$json["date_today"]}}, To Format toDD/MM/YYYY, and Data Property Name toToday's Date. - Ensure Format Today Date uses To Timezone set to
Asia/Qatar. - Use Combine Dates with Mode set to
multiplexto merge event data and today’s date. - In Compare Event Day, configure the string comparison: Value 1
= {{$json["Event Date"]}}and Value 2= {{$json["Today's Date"]}}.
=. Make sure this doesn’t overwrite the date coming from Format Today Date when the items are merged.Step 4: Map Event Fields and Build the Slack Summary
Prepare the event fields for display, format times, and generate the Slack message content.
- In Map Event Fields, set fields with expressions: Event Name
={{$json["summary"]}}, Event Date={{$json["Event Start Date Only"]}}, Gcal URL={{$json["htmlLink"]}}, Location={{$json["location"]}}, and Start Time={{$json["start"]["dateTime"]}}. - In Prepare Message Items, set Name to
={{$json["Event Name"]}}, Time to={{$json["Start Time"]}}, and URL to={{$json["Gcal URL"]}}. - In Format Event Time, set Value to
={{$json["Time"]}}, To Format toHH:mm, and Data Property Name toTimewith To TimezoneAsia/Qatar. - Keep the Build Slack Summary Function Code as provided to assemble the final message text.
Step 5: Configure the Slack Output
Send the compiled summary to your Slack channel.
- In Post Slack Alert, set Text to
={{$json["message"]}}. - Set Channel to
virtual-assistant. - Credential Required: Connect your slackApi credentials in Post Slack Alert.
Step 6: Test and Activate Your Workflow
Run a full test to confirm today’s events are summarized and posted to Slack.
- Click Execute Workflow to run the flow manually.
- Verify that Compare Event Day only passes events matching today’s date.
- Confirm that Post Slack Alert posts a message formatted like: event name, time, and URL.
- When satisfied, toggle the workflow to Active to run daily at the scheduled time.
Common Gotchas
- Google Calendar credentials can expire or need specific permissions. If things break, check the Google account connection in n8n’s Credentials screen first.
- If you tweak the workflow to include waits (or your calendar has lots of events), processing times vary. Bump up the wait duration if downstream nodes fail on empty responses.
- AI summaries can drift into generic wording if you don’t guide them. Add a short “house style” line to the message-building prompt early so you aren’t rewriting the briefing every day.
Frequently Asked Questions
About 20 minutes if your Google and Slack accounts are ready.
No. You’ll mostly be connecting accounts and choosing which calendar and Slack channel to use.
Yes. n8n has a free self-hosted option and a free trial on n8n Cloud. Cloud plans start at $20/month for higher volume. You’ll also need to factor in OpenAI usage if you keep the AI steps enabled (usually just pennies a day for a short summary).
Two options: n8n Cloud (managed, easiest setup) or self-hosting on a VPS. For self-hosting, Hostinger VPS is affordable and handles n8n well. Self-hosting gives you unlimited executions but requires basic server management.
Yes, and it’s straightforward. Change the Scheduled Morning Trigger (Cron) to your preferred time, then adjust the Post Slack Alert node to send to a different channel or as a DM. Common customizations include grouping events by “morning/afternoon,” showing locations/Zoom links, or excluding certain calendars like personal blocks.
Usually it’s expired OAuth access or the wrong Google account connected. Reconnect the Google Calendar credential in n8n, then confirm the calendar you’re querying is shared with that account. Also check that the Google Calendar node has permission to read events and that you didn’t hit a Google API quota with unusually high volume.
For most small teams, “a lot more than you’ll ever schedule in a day.” On n8n Cloud, it depends on your monthly execution limits, and if you self-host it mainly depends on your server. Practically, dozens of events in a single day is fine, but if you’re pulling across many calendars you may want to filter earlier to keep the message readable.
Sometimes. If you want one daily message with filtering, formatting, and a bit of logic (like “today only” checks), n8n tends to be easier to grow with because you can branch and transform data without paying extra for every little step. Zapier or Make can absolutely do a version of this, but the workflow often becomes a chain of small modules that’s harder to maintain. n8n also gives you a self-host option, which matters once you start running lots of automations. If you’re unsure, Talk to an automation expert and we’ll point you to the simplest option for your setup.
Once this is live, your day starts with clarity instead of scavenger hunts. The workflow handles the repetitive stuff so you can move faster (and show up on time).
Need Help Setting This Up?
Our automation experts can build and customize this workflow for your specific needs. Free 15-minute consultation—no commitment required.