Slack + Google Calendar: one daily morning briefing
Your morning starts with good intentions. Then it turns into five tabs, two apps, a news scroll, and that quiet worry you missed something important on your calendar.
Marketing managers feel it when the day gets reactive by 9:15. Founders do too, because context switching is expensive. And if you run client work, you already know a Slack calendar briefing is the difference between “on it” and “catching up.”
This n8n workflow sends one clean message to Slack every morning at 7 AM: today’s Google Calendar events, Tokyo weather, and the top headlines. You’ll see what it does, what you need, and how to make it yours.
How This Automation Works
The full n8n workflow, from trigger to final output:
n8n Workflow Template: Slack + Google Calendar: one daily morning briefing
flowchart LR
subgraph sg0["Daily Morning Flow"]
direction LR
n0@{ icon: "mdi:play-circle", form: "rounded", label: "Daily Morning Trigger", pos: "b", h: 48 }
n1@{ icon: "mdi:swap-vertical", form: "rounded", label: "Workflow Configuration", pos: "b", h: 48 }
n2@{ icon: "mdi:location-exit", form: "rounded", label: "Get Today's Calendar Events", pos: "b", h: 48 }
n3["<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/httprequest.dark.svg' width='40' height='40' /></div><br/>Get Weather Forecast"]
n4@{ icon: "mdi:cog", form: "rounded", label: "Get Top News from RSS", pos: "b", h: 48 }
n5@{ icon: "mdi:swap-vertical", form: "rounded", label: "Format Briefing Message", 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/slack.svg' width='40' height='40' /></div><br/>Post to Slack"]
n7["<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/>Wait for All Data"]
n7 --> n5
n3 --> n7
n0 --> n1
n4 --> n7
n1 --> n2
n1 --> n3
n1 --> n4
n5 --> n6
n2 --> n7
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 n0 trigger
class n3 api
classDef customIcon fill:none,stroke:none
class n3,n6,n7 customIcon
The Problem: Mornings Get Lost to Tab Hopping
Most mornings don’t fail because you’re unmotivated. They fail because the “get oriented” routine is scattered across tools that don’t talk to each other. Calendar in one place, weather somewhere else, headlines in a feed that’s designed to keep you reading, and Slack waiting for your first update. You bounce between screens, copy details into messages, then realize you forgot the 9 AM call moved. That mental load is real. It drains focus before the day even begins.
It adds up fast. Here’s where it breaks down in day-to-day work.
- You check Google Calendar, then retype the key events into Slack so your team is aligned.
- You open news “just for headlines” and lose about 15 minutes without noticing.
- Weather is a separate check, which matters more than people admit if you commute or travel.
- Small calendar changes get missed, which leads to late joins, double-bookings, or awkward reschedules.
The Solution: One Daily Briefing Message in Slack
This workflow runs automatically every morning at 7 AM and creates a single, readable briefing message for Slack. It starts by pulling your events for the day from Google Calendar, so the schedule is always current. In parallel, it fetches the latest weather for Tokyo using a simple HTTP request (no login required), and it grabs the top headlines from a Google News RSS feed. n8n merges those streams, formats the text into one consistent message, and posts it directly to the Slack channel you choose. No copying, no “did anyone see this?”, no opening four apps to feel ready.
The workflow starts with a scheduled trigger. Then Google Calendar, weather, and RSS are collected at the same time and merged into one data set. Finally, a “Compose Briefing Text” step shapes it into a Slack-friendly update, and Slack delivers it where your day actually happens.
What You Get: Automation vs. Results
| What This Workflow Automates | Results You’ll Get |
|---|---|
|
|
Example: What This Looks Like
Say your current routine is: 5 minutes to check Google Calendar, 5 minutes to check weather, and 10 minutes to skim headlines “quickly.” That’s about 20 minutes a day, and honestly it often turns into more. With this workflow, your “time spent” becomes close to zero: the schedule trigger fires at 7 AM, n8n fetches the data in the background, and a single Slack message is waiting when you open your laptop. You still read it, but you’re not hunting for it.
What You’ll Need
- n8n instance (try n8n Cloud free)
- Self-hosting option if you prefer (Hostinger works well)
- Google Calendar to pull today’s events automatically.
- Slack to deliver the briefing to a channel.
- RSS feed URL (use Google News RSS or your preferred source).
Skill level: Beginner. You will connect accounts, paste a couple of URLs, and edit a message template.
Don’t want to set this up yourself? Talk to an automation expert (free 15-minute consultation).
How It Works
A scheduled morning trigger kicks it off. At 7 AM, n8n starts the run so the briefing is ready before most people are fully online.
Parameters are set once, then reused. A setup step stores things like your RSS URL, your weather endpoint, and any formatting choices so the rest of the workflow stays clean.
Three sources are pulled in parallel. Google Calendar provides today’s events, an HTTP request grabs the weather outlook for Tokyo, and RSS pulls the top headlines from Google News.
Everything is merged and turned into a single message. The “Compose Briefing Text” step formats the final output, then Slack posts it to the channel you selected.
You can easily modify the city and headline source to match your routine. See the full implementation guide below for customization options.
Step-by-Step Implementation Guide
Step 1: Configure the Schedule Trigger
Set the workflow to run every morning at a specific time using the scheduled trigger.
- Add and open Scheduled Morning Kickoff.
- Set the schedule rule interval to run daily at triggerAtHour
7. - Connect Scheduled Morning Kickoff to Setup Parameters.
Step 2: Connect Google Calendar and Define Source Parameters
Define your RSS and weather sources, then pull today’s calendar events from Google Calendar.
- Open Setup Parameters and add two string fields: rssUrl set to
https://news.google.com/rss?hl=ja&gl=JP&ceid=JP:jaand weatherApiUrl set tohttps://wttr.in/Tokyo?format=j1. - Ensure Include Other Fields is set to
truein Setup Parameters. - Open Retrieve Daily Calendar and set Operation to
getAll, Limit to10, Time Min to={{ $now.startOf('day') }}, and Time Max to={{ $now.endOf('day') }}. - Select your calendar in Retrieve Daily Calendar (the value should replace
YOUR_CALENDAR_ACCOUNT). - Credential Required: Connect your googleCalendarOAuth2Api credentials in Retrieve Daily Calendar.
Setup Parameters outputs to both Retrieve Daily Calendar and Fetch Weather Outlook and Pull RSS Headlines in parallel.
Step 3: Configure Weather and RSS Retrieval
Fetch external weather data and RSS headlines using the URLs defined earlier.
- Open Fetch Weather Outlook and set URL to
={{ $('Setup Parameters').first().json.weatherApiUrl }}. - Confirm Response Format is JSON in Fetch Weather Outlook.
- Open Pull RSS Headlines and set URL to
={{ $('Setup Parameters').first().json.rssUrl }}. - Connect both nodes to Combine Data Streams alongside Retrieve Daily Calendar.
Step 4: Set Up Data Merge and Briefing Composition
Merge all three data sources, then build the Slack message text.
- Open Combine Data Streams and set Number of Inputs to
3. - Connect Combine Data Streams to Compose Briefing Text.
- In Compose Briefing Text, add a string field named briefingMessage with the full template value from the workflow:
=*📅 Daily Morning Briefing* \n\n*📆 今日の予定*\n{{ $('Retrieve Daily Calendar').all().length > 0 ? $('Retrieve Daily Calendar').all().map(event => '• ' + event.json.summary + ' - ' + new Date(event.json.start.dateTime).toLocaleTimeString('ja-JP', { hour: '2-digit', minute: '2-digit' })).join('\\n') : '今日の予定はありません' }}\n\n*🌤️ 天気予報*\n• {{ $('Fetch Weather Outlook').first().json.current_condition[0].weatherDesc[0].value }} / 気温: {{ $('Fetch Weather Outlook').first().json.current_condition[0].temp_C }}°C\n\n*📰 トップニュース*\n{{ $('Pull RSS Headlines').all().length > 0 ? $('Pull RSS Headlines').all().slice(0, 3).map(article => '• <' + article.json.link + '|' + article.json.title + '>').join('\\n') : 'ニュースはありません' }}. - Ensure Include Other Fields is set to
truein Compose Briefing Text.
⚠️ Common Pitfall: If you change any field names or node names, the expressions in Compose Briefing Text will break. Keep the exact node names: Retrieve Daily Calendar, Fetch Weather Outlook, and Pull RSS Headlines.
Step 5: Configure Slack Delivery
Send the briefing text to your Slack channel.
- Open Dispatch Slack Update and set Text to
={{ $('Compose Briefing Text').first().json.briefingMessage }}. - Set Select to
channeland choose your target Channel ID. - Ensure Authentication is set to
oAuth2. - Credential Required: Connect your Slack OAuth2 credentials in Dispatch Slack Update.
Step 6: Test and Activate Your Workflow
Run a manual test to validate the full briefing, then activate the schedule for daily delivery.
- Click Execute Workflow to run a manual test from Scheduled Morning Kickoff.
- Verify that Dispatch Slack Update posts a formatted message containing calendar events, weather, and top headlines.
- If the Slack message is incomplete, review the expressions in Compose Briefing Text and the URLs in Setup Parameters.
- Toggle the workflow to Active so it runs every morning at
7.
Common Gotchas
- Google Calendar credentials can expire or need specific permissions. If things break, check n8n’s Credentials section for the Google Calendar connection first.
- If you’re using Wait nodes or external rendering, processing times vary. Bump up the wait duration if downstream nodes fail on empty responses.
- Slack channels and permissions trip people up. If the message doesn’t post, confirm the Slack app is allowed to post in that channel and the channel name matches what you set in “Post to Slack.”
Frequently Asked Questions
About 20 minutes if your Google Calendar and Slack logins are ready.
No. You’ll connect accounts and edit a few fields. If you can copy a URL and choose a Slack channel, you can set this up.
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 API costs, which are typically $0 here because the RSS feed and weather endpoint don’t require authentication.
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 the whole point. Change the city by updating the “Fetch Weather Outlook” request URL, swap the news source by replacing the RSS URL in the setup parameters, and adjust the tone or layout in “Compose Briefing Text.” Some teams also add a second Slack destination (like a private channel for leadership) with an extra Slack post node.
Usually it’s permissions. Reconnect Slack credentials in n8n, then confirm the app is allowed to post to the target channel (private channels often need an explicit invite). If the channel was renamed, update the “Post to Slack” node to match the current channel identifier.
A lot. On most setups it’s one execution per day per workspace, so volume is tiny unless you duplicate it for many clients or teams. If you do scale it up, self-hosting removes execution caps, and n8n Cloud plans support higher throughput as you grow.
Often, yes. n8n makes it easier to merge multiple sources (calendar + HTTP weather + RSS) and format a clean message without paying extra for every branch. You can also self-host, which is a big deal if you run lots of small automations across clients. Zapier or Make can still work if you prefer a simpler UI and you don’t mind the task-based pricing. If you’re on the fence, Talk to an automation expert and get a recommendation based on your setup.
One message. Real context. That’s a calmer start, and it keeps your day from going sideways before it even begins.
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.