

How to Send Daily Google Calendar Agenda to Slack with Make
Automatically post your daily calendar agenda to a Slack channel every morning at 8am with meeting times, titles, and locations.
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 formatted daily agenda posts with consistent 8am delivery and fallback handling for empty days.
Not ideal for
Users who only need simple event notifications or don't have regular daily meeting schedules to justify automation.
Sync type
scheduledUse case type
notificationReal-World Example
A 25-person marketing agency uses this to post daily agendas in their #general channel every morning at 8am. Before automation, their project managers manually checked calendars and typed agenda summaries 3-4 times per week, often forgetting on busy days. Now the team sees exactly what meetings are happening each day, with locations for client visits clearly marked.
What Will This Cost?
Drag the slider to your expected monthly volume.
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
Import this workflow directly into Make
Copy the pre-built Make blueprint and paste it straight into Make. 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.
Field Mapping
Map these fields between your apps.
| Field | API Name | |
|---|---|---|
| Required | ||
| Event Title | summary | |
| Start Time | start.dateTime | |
4 optional fields▸ show
| Location | location |
| All Day Flag | start.date |
| Event Description | description |
| Attendee Count | attendees |
Step-by-Step Setup
Dashboard > Create scenario > Schedule
Create New Scenario
Set up a new Make scenario to handle the daily calendar posting. This will be the container for all your automation modules.
- 1Click 'Create a new scenario' from your Make dashboard
- 2Click the gray '+' circle in the center of the canvas
- 3Search for 'Schedule' in the app list
- 4Select 'Schedule' > 'Every day'
Schedule module > Settings
Configure Daily Schedule
Set the trigger to fire at 8am daily. This timing ensures your team sees the agenda before their first meetings.
- 1Click on the Schedule module to open its settings
- 2Set 'Time' to '08:00'
- 3Select your timezone from the dropdown
- 4Leave 'Days' set to 'Every day'
Canvas > + > Google Calendar > Search Events
Add Google Calendar Module
Connect Google Calendar to fetch today's events. Make will pull all events from your primary calendar by default.
- 1Click the '+' button to the right of the Schedule module
- 2Search for 'Google Calendar' and select it
- 3Choose 'Search Events' from the action list
- 4Click 'Create a connection' and authenticate with Google
Google Calendar module > Settings
Set Calendar Date Range
Configure the module to fetch only today's events. This prevents yesterday's or tomorrow's meetings from appearing in the daily agenda.
- 1Set 'Calendar ID' to 'primary' (or select your work calendar)
- 2In 'Time Min' field, click the function button and select 'formatDate(now; YYYY-MM-DD)'
- 3In 'Time Max' field, use 'formatDate(addDays(now;1); YYYY-MM-DD)'
- 4Set 'Max results' to 50
Canvas > + > Text parser > Replace
Add Text Formatter for Agenda
Create a text formatter to build the agenda message. This will combine all events into a readable Slack post.
- 1Click '+' after the Google Calendar module
- 2Search for 'Text parser' and select it
- 3Choose 'Replace' action
- 4Leave all fields empty for now - we'll configure in the next step
📬 New entry: {{1.name}}
Email: {{1.email}}
Details: {{1.description}}Text parser module > Settings
Build Agenda Template
Configure the text formatter to create a formatted agenda. This template will repeat for each calendar event.
- 1Click on the Text parser module
- 2In 'Text' field, enter: '{{1.summary}} - {{formatDate(1.start.dateTime; HH:mm)}} {{if(1.location; "at " + 1.location; "")}}'
- 3Leave 'Search for' empty
- 4Leave 'Replace with' empty
- 5Click 'OK'
📬 New entry: {{1.name}}
Email: {{1.email}}
Details: {{1.description}}start.dateTime: {{start.dateTime}}
end.dateTime: {{end.dateTime}}
Canvas > + > Tools > Array aggregator
Add Array Aggregator
Use an aggregator to combine multiple events into a single message. Without this, Slack would receive separate messages for each meeting.
- 1Click '+' after the Text parser
- 2Search for 'Tools' and select it
- 3Choose 'Array aggregator'
- 4Set 'Source Module' to the Google Calendar module
- 5In 'Text' field, map the output from Text parser
Canvas > + > Slack > Create a Message
Add Slack Connection
Connect Slack to post the formatted agenda. Make will need permission to post to your selected channel.
- 1Click '+' after the Array aggregator
- 2Search for 'Slack' and select it
- 3Choose 'Create a Message'
- 4Click 'Create a connection' and authorize Make with Slack
Slack module > Settings
Configure Slack Message
Set up the Slack message with your agenda content. This formats the final post your team will see each morning.
- 1Select your target channel from the 'Channel' dropdown
- 2In 'Text' field, enter: 'Today\'s Agenda:\n{{join(4.array; "\n")}}'
- 3Leave 'Username' and other fields as default
- 4Set 'Parse' to 'Full'
📬 New entry: {{1.name}}
Email: {{1.email}}
Details: {{1.description}}Connection line > Add router > +
Add No Events Handler
Create a fallback for days with no meetings. Without this, Make throws an error on empty days.
- 1Right-click the line between Google Calendar and Text parser
- 2Select 'Add router'
- 3Click the '+' on the new router path
- 4Add another Slack > Create a Message module
Second Slack module > Settings
Configure Empty Day Message
Set up the alternate Slack message for days without events. This keeps your team informed even on meeting-free days.
- 1Click on the new Slack module
- 2Select the same channel as your main message
- 3In 'Text' field, enter: 'No meetings scheduled for today! 🎉'
- 4Click 'OK'
📬 New entry: {{1.name}}
Email: {{1.email}}
Details: {{1.description}}Router path > Filter settings
Set Router Filters
Add filters to control which path executes based on event count. This ensures the right message goes out.
- 1Click the wrench icon on the path to your main flow
- 2Set condition: 'Google Calendar: Total number of bundles > 0'
- 3Click the wrench on the path to the empty message
- 4Set condition: 'Google Calendar: Total number of bundles = 0'
Drop this into a Make custom function.
JavaScript — Custom Function{{if(1.start.date; 1.summary + " (All day)"; 1.summary + " - " + formatDate(1.start.dateTime; "HH:mm") + if(1.location; " at " + 1.location; ""))}}▸ Show code
{{if(1.start.date; 1.summary + " (All day)"; 1.summary + " - " + formatDate(1.start.dateTime; "HH:mm") + if(1.location; " at " + 1.location; ""))}}... expand to see full code
{{if(1.start.date; 1.summary + " (All day)"; 1.summary + " - " + formatDate(1.start.dateTime; "HH:mm") + if(1.location; " at " + 1.location; ""))}}Scaling Beyond 50+ events per day+ Records
If your volume exceeds 50+ events per day records, apply these adjustments.
Add Pagination Handling
Google Calendar API returns 50 events max per request. Add an iterator module after Google Calendar to handle multiple pages of results automatically.
Filter Event Types
Add filters to exclude declined events or specific calendar types. Use Google Calendar's 'Single Value Retriever' to check attendee status before processing events.
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
Use Make for this if you want reliable daily scheduling and complex text formatting. Make's array aggregator handles multiple calendar events better than Zapier's formatter, and the built-in date functions make timezone handling automatic. The visual router makes it easy to handle days with no meetings. Skip Make if you just want basic notifications - Zapier's calendar trigger is simpler for single-event alerts.
This workflow uses about 4-6 operations per day: 1 for the schedule trigger, 1 for Google Calendar search, 2-3 for text processing and aggregation, and 1 for Slack posting. That's roughly 150 operations monthly, fitting comfortably in Make's free tier (1,000 ops/month). Zapier's free tier only gives you 100 tasks monthly, so you'd hit limits in 3 weeks. N8n is free but requires hosting.
Zapier's Google Calendar trigger fires faster and has better timezone detection out of the box. N8n offers more text manipulation functions and can handle complex date math without formula syntax. But Make's visual router system makes the no-events fallback much cleaner to build and debug. The array aggregator is also more reliable than Zapier's line item handling for multiple events.
Google Calendar's API sometimes returns events in unexpected timezones, especially for imported calendars from other systems. All-day events come through with different field structures (start.date vs start.dateTime) that can break your formatting. If you have more than 50 events in a day, you'll need pagination handling. Make's text parser also struggles with special characters in meeting titles - emoji and accented characters sometimes render as question marks in Slack.
Ideas for what to build next
- →Add Weekly Summary — Create a second scenario that posts a weekly agenda every Sunday evening showing the upcoming week's major meetings and deadlines.
- →Meeting Room Conflicts — Build a follow-up automation that checks for double-booked conference rooms and posts warnings to a facilities channel when conflicts are detected.
- →Attendance Tracking — Connect to your video conferencing platform to track which daily agenda meetings actually happened and post end-of-week attendance summaries.
Related guides
How to Share Notion Meeting Notes to Slack with Pipedream
~15 min setup
How to Share Notion Meeting Notes to Slack with Power Automate
~15 min setup
How to Share Notion Meeting Notes to Slack with n8n
~20 min setup
How to Send Notion Meeting Notes to Slack with Zapier
~8 min setup
How to Share Notion Meeting Notes to Slack with Make
~12 min setup
How to Create Notion Tasks from Slack with Pipedream
~15 min setup