Automate Daily Meeting Summaries from Google Calendar to Slack

Save time and avoid missed meetings with this n8n workflow that automatically fetches your daily Google Calendar events and sends a formatted summary to Slack every morning, ensuring you’re always up-to-date on your schedule.
googleCalendar
slack
cron
+5
Learn how to Build this Workflow with AI:
Workflow Identifier: 1398
NODES in Use: Google Calendar, Function, Date & Time, IF, Set, Merge, Slack, Cron

Press CTRL+F5 if the workflow didn't load.

Visit through Desktop for Best experience

1. Opening Problem Statement

Meet Sarah, a busy project manager who juggles multiple meetings daily across different time zones. Every morning, Sarah spends at least 30 minutes manually checking her Google Calendar for the day’s appointments. Important meetings occasionally slip through the cracks, causing delays and communication gaps. This daily routine not only eats into her productive work hours but also introduces costly mistakes when she misses or overlooks key events.

Imagine if Sarah could receive a neat, organized summary of all her meetings for the day delivered directly into Slack at a consistent, early hour—no manual checks needed. This workflow solves exactly that problem by automating the retrieval of daily calendar events and pushing the schedule summary into a Slack channel, saving valuable time and reducing errors.

2. What This Automation Does ⚙️

This n8n workflow runs every day at 6 AM and performs these functions automatically:

  • Fetches all events from a specified Google Calendar using the Google Calendar node.
  • Converts event start times into the local timezone (Asia/Qatar in this case) and formats dates for readability.
  • Filters events to include only today’s events by comparing event dates to the current date.
  • Compiles a formatted list message of today’s meetings, including event name, start time, and calendar URL.
  • Sends this message to a specified Slack channel for quick, centralized access.
  • Ensures consistent daily delivery at 6 AM using the Cron node trigger.

The benefits? Sarah saves at least 30 minutes daily, avoids missed meetings, and keeps her entire team informed by sharing the schedule directly in Slack.

3. Prerequisites ⚙️

  • Google Calendar Account (for accessing calendar events) 📅
  • Slack Workspace and API access configured (to send messages) 💬
  • n8n Account with Google Calendar OAuth2 and Slack API credentials set up 🔑
  • Basic familiarity with n8n interface (but no coding required) ⏱️
  • Timezone set correctly (Asia/Qatar in this workflow; adjust to your locale)

4. Step-by-Step Guide

Step 1: Set up the Cron Node to Trigger Daily

Navigate to the n8n editor and add a Cron node. Set it to trigger daily at 6 AM by configuring the hour to 6 and minutes to 0. This node will start the automation every day at the same time.

Expected outcome: You will see the Cron schedule set, meaning the workflow will reliably trigger every morning.

Common mistake: Forgetting to enable the node or misconfiguring the timezone may cause timing issues.

Step 2: Configure the Google Calendar Node to Retrieve Events

Add a Google Calendar node linked to your Google Calendar OAuth2 credentials. Select Get All events operation with the option to return all events.

Specify the calendar email (e.g., [email protected]) to target the correct calendar.

Expected outcome: This node fetches all upcoming events for processing.

Common mistake: Using incorrect or unauthorized calendar credentials can cause failures to fetch events.

Step 3: Convert Event Start Times to Local Timezone

Add a Date & Time node right after Google Calendar configured to change the event’s start datetime to your local timezone (Asia/Qatar) and format it to DD/MM/YYYY.

This makes date comparisons and displays easier later in the flow.

Expected outcome: Each event will now include a field labeled Event Start Date Only in readable date format.

Step 4: Create Current Date and Day Information

After the Cron triggers and Google Calendar event fetching, add a Function node that adds two new fields to the data:

  • date_today: The current timestamp in ISO format.
  • day_today: The weekday name (e.g., Monday, Tuesday).

Use this code:

var date = new Date().toISOString();
var day = new Date().getDay();
const weekday = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"];

items[0].json.date_today = date;
items[0].json.day_today = weekday[day];

return items;

Expected outcome: These fields help later filter and display today’s events.

Step 5: Format the Current Date for Filtering

Add another Date & Time node after the function node to convert the date_today field into the same DD/MM/YYYY format with the Asia/Qatar timezone for direct comparison with event dates.

Expected outcome: A new field Today's Date is added, matching event date formats.

Step 6: Set Up the Merge Node to Join Event and Date Data

Use a Merge node in Multiplex mode to combine the Google Calendar events with the current day information so that each event has access to both sets of data for conditional checks.

Expected outcome: Data arrays from event dates and today’s date stream merge together.

Step 7: Filter Events to Only Today’s Meetings using IF Node

Add an IF node to compare each event’s Event Date against Today's Date. Only events that match are passed forward.

Expected outcome: The workflow now exclusively processes events scheduled for the current day.

Step 8: Format Event Data for Slack Message

Use a Set node to prepare event details for messaging by mapping Event Name, Start Time, and Gcal URL from each event.

This helps create a clear message summary later.

Step 9: Format Start Time for Readability

Add another Date & Time node to convert the start times into simple HH:mm 24-hour time format in the local timezone.

Expected outcome: Start times will show like 14:30 rather than full ISO datetime strings.

Step 10: Compose the Slack Message with Function Node

Add a final Function node to build the Slack message, iterating over filtered events and concatenating the event name, start time, and calendar link into a formatted text message.

Code snippet:

let message = "*Hello , Please find below a list of your meetings for today*. n";

for (item of items) {
  message += "*" + item.json.Name + ' @ ' + item.json.Time + "n*  - " + item.json.URL + "n";
}

return [{json: {message}}];

Expected outcome: The Slack message looks organized, easy to read, and ready for delivery.

Step 11: Send the Summary to Slack Channel

Finally, add the Slack node configured with your Slack API credentials and target channel (e.g., #virtual-assistant). Map the message field from the previous node to send the meeting summary to Slack automatically at 6 AM daily.

Expected outcome: Your team gets a neat daily meeting summary in Slack without any manual effort.

5. Customizations ✏️

  • Change Notification Time: In the Cron node, adjust the hour to any preferred time to send daily summaries at your convenience.
  • Add Event Location: Modify the Set node to include Location (already available in data) and add it to the Slack message in the Function node for a richer summary.
  • Filter by Event Keyword: Enhance the IF node to only include events containing specific keywords in their titles for focused notifications.
  • Change Timezone: Update all Date & Time nodes with your local timezone to ensure accurate times if you are outside Asia/Qatar.
  • Include Event Description: Extend the Set and message Function nodes to include event descriptions for more context.

6. Troubleshooting 🔧

Problem: “Google Calendar node fetches no events”

Cause: Incorrect calendar ID or OAuth2 credentials are missing or expired.

Solution: Re-verify the Google Calendar node credentials under the credentials tab; ensure the calendar ID matches your actual Google Calendar email.

Problem: “Slack message not sending or empty message”

Cause: Slack API credentials not configured or channel name incorrect; message formatting issues.

Solution: Check Slack node credentials and the channel name. Use debug to verify the function node output contains the message field.

Problem: “Timezone mismatch causes wrong event times”

Cause: Date & Time nodes timezone setting not consistent or incorrect.

Solution: Double-check all Date & Time nodes have the correct “Asia/Qatar” (or your local) timezone configured.

7. Pre-Production Checklist ✅

  • Verify Google Calendar credentials and calendar ID are correct.
  • Check Slack API credentials and ensure the target Slack channel exists.
  • Run manual triggers on the workflow to test event fetching and message formatting.
  • Confirm all Date & Time nodes use consistent timezone settings.
  • Backup workflow JSON before deployment to avoid data loss.

8. Deployment Guide

After testing, activate the n8n workflow. Make sure the Cron node is enabled to ensure daily execution. Monitor the Slack channel on the first few days for message delivery success. Use n8n’s execution logs and error notifications to troubleshoot any issues promptly.

9. FAQs

  • Can I use another calendar service? This workflow is built around Google Calendar node; switching to another calendar requires node substitution and appropriate credentials setup.
  • Does this consume API credits? Google Calendar and Slack usually have generous free limits, but heavy usage could hit quotas; monitor your API usage.
  • Is my calendar data secure? Yes, OAuth2 credentials are securely handled within n8n; however, always enforce best security and privacy practices on your n8n instance.
  • Can this handle multiple calendars? You can duplicate the Google Calendar node or extend the workflow logic to aggregate events from multiple calendars.

10. Conclusion

By building this n8n workflow, you’ve automated a critical part of daily scheduling: summarizing meetings from Google Calendar and streamlining team communication via Slack. This saves at least 30 minutes daily while reducing the risk of missed appointments, boosting productivity and ensuring everyone stays informed.

Next, consider automating reminders before meetings, syncing calendar events with task management tools, or enhancing the workflow with personalized Slack notifications based on event priority.

With this solid automation foundation, you’re well-equipped to create more smart workflows that ease your daily workload and improve team effectiveness.

Related Workflows

Automate Viral UGC Video Creation Using n8n + Degaus (Beginner-Friendly Guide)

Learn how to automate viral UGC video creation using n8n, AI prompts, and Degaus. This beginner-friendly guide shows how to import, configure, and run the workflow without technical complexity.
Form Trigger
Google Sheets
Gmail
+37
Free

AI SEO Blog Writer Automation in n8n (Beginner Guide)

A complete beginner guide to building an AI-powered SEO blog writer automation using n8n.
AI Agent
Google Sheets
httpRequest
+5
Free

Automate CrowdStrike Alerts with VirusTotal, Jira & Slack

This workflow automates processing of CrowdStrike detections by enriching threat data via VirusTotal, creating Jira tickets for incident tracking, and notifying teams on Slack for quick response. Save hours daily by transforming complex threat data into actionable alerts effortlessly.
scheduleTrigger
httpRequest
jira
+5
Free

Automate Telegram Invoices to Notion with AI Summaries & Reports

Save hours on financial tracking by automating invoice extraction from Telegram photos to Notion using Google Gemini AI. This workflow extracts data, records transactions, and generates detailed spending reports with charts sent on schedule via Telegram.
lmChatGoogleGemini
telegramTrigger
notion
+9
Free

Automate Email Replies with n8n and AI-Powered Summarization

Save hours managing your inbox with this n8n workflow that uses IMAP email triggers, AI summarization, and vector search to draft concise replies requiring minimal review. Automate business email processing efficiently with AI guidance and Gmail integration.
emailReadImap
vectorStoreQdrant
emailSend
+12
Free

Automate Email Campaigns Using n8n with Gmail & Google Sheets

This n8n workflow automates personalized email outreach campaigns by integrating Gmail and Google Sheets, saving hours of manual follow-up work and reducing errors in email sequences. It ensures timely follow-ups based on previous email interactions, optimizing communication efficiency.
googleSheets
gmail
code
+5
Free