🔓 Unlock all 10,000+ workflows & prompts free Join Newsletter →
✅ Full access unlocked — explore all 10,000 AI workflow and prompt templates Browse Templates →
Home n8n Workflow
January 22, 2026

Google Calendar + Slack: meeting briefs, ready daily

Lisa Granqvist Partner Workflow Automation Expert

Your calendar is full, but your context isn’t. So you end up doing the same pre-meeting scramble every morning: open Google Calendar, click into each invite, hunt LinkedIn, search old emails, then try to remember what mattered last time.

Sales reps feel it when they’re jumping between calls. A customer success manager gets hit when five accounts want attention at once. And founders? They just want Slack meeting briefs automation that keeps them sharp without stealing their morning.

This n8n workflow pulls today’s external meetings, researches the people and companies involved, then posts a scannable prep brief to Slack. You’ll see what it fixes, how it runs, and what you need to set it up.

How This Automation Works

See how this solves the problem:

n8n Workflow Template: Google Calendar + Slack: meeting briefs, ready daily

The Challenge: Daily meeting prep turns into tab chaos

Meeting prep sounds simple until you have a real day. Ten minutes here to check the attendee list. Another ten to search your inbox for “last thread.” Then you realize you’re not even sure who the person is because the invite says “Alex, Growth.” Now you’re digging through the CRM, skimming old notes, and doing a quick web search for their company so you don’t ask a question that makes you look unprepared. Multiply that by three to eight meetings and, honestly, your “deep work” morning is gone.

The friction compounds. Here’s where it breaks down.

  • Calendar events rarely include the context you actually need, so you’re forced into last-minute research every time.
  • Email history and prior meetings hold useful clues, but they’re scattered, which means you miss details or waste time re-reading threads.
  • CRM data becomes stale when updates rely on “I’ll do it after the call,” and that usually means never.
  • Even when you do the prep, it lives in your head or a private doc, not where you can glance at it on mobile (Slack).

The Fix: A daily Slack brief built from your calendar, inbox, and web research

This workflow runs automatically on weekday mornings and reads your Google Calendar for the day ahead. It filters down to external meetings (the ones that actually require prep) and processes each event one by one. For every meeting, an AI research agent pulls in relevant context from multiple places: your Gmail history, past calendar meetings with the same people, and web research for fresh company or attendee updates. If you use Attio, it also checks whether those attendees exist in your CRM, creates missing contact records, and adds meeting prep notes so your CRM quietly improves over time. Finally, it compiles everything into a clean, scannable brief and posts it into Slack, ready before your first call.

The workflow starts on a schedule (default is 6 AM) and fetches your events from Google Calendar. It routes “no external meetings” into a simple Slack message, and routes “yes, there are meetings” into research, formatting, and delivery. Your output is a daily Slack post you can skim in under a minute, then open details only when you need them.

What Changes: Before vs. After

Real-World Impact

Say you have 6 external meetings today. Manually, a quick “good enough” prep is maybe 10 minutes per meeting (calendar, inbox search, quick web scan), so that’s about an hour of context switching before you’ve done any real work. With this workflow, you spend about 5 minutes setting the right Slack channel and filters once, then your daily brief shows up automatically around 6 AM. You skim for 2 minutes, open details for the one or two high-stakes calls, and move on.

Requirements

  • n8n instance (try n8n Cloud free)
  • Self-hosting option if you prefer (Hostinger works well)
  • Google Calendar to pull today’s meetings.
  • Slack to receive the daily prep brief.
  • Gmail for email history lookup and context.
  • OpenRouter API key (get it from your OpenRouter dashboard).
  • Attio CRM API token (optional, from Attio developer settings).
  • Apollo.io API key (optional, from Apollo API settings).

Skill level: Intermediate. You’ll connect OAuth accounts, add API keys, and tweak filters and prompts.

Need help implementing this? Talk to an automation expert (free 15-minute consultation).

The Workflow Flow

A weekday morning schedule kicks it off. The workflow runs automatically (default is 6 AM), so your prep is done before you open your laptop.

Calendar events get pulled and filtered. n8n fetches today’s Google Calendar events, then keeps only external meetings by checking attendees and excluding “just you” blocks.

AI research gathers useful context. An AI agent queries Gmail for prior threads, checks past calendar interactions, and uses HTTP requests for web and company research (Apollo.io if you use it). Content is sanitized so the brief stays readable and doesn’t turn into a pasted wall of text.

CRM enrichment happens in the background. If Attio is connected, the workflow looks up each attendee, creates missing people, then attaches meeting prep notes so future calls get easier.

A single Slack brief is posted. Research summaries are aggregated, formatted by the “Format Daily Brief” AI step, and delivered to your chosen Slack channel for quick scanning.

You can easily modify the meeting filters to include internal prep sessions or exclude recurring check-ins based on keywords. See the full implementation guide below for customization options.

Step-by-Step Implementation Guide

Step 1: Configure the Scheduled Automation Trigger

Set the schedule that initiates the daily briefing workflow.

  1. Add and open Scheduled Automation Trigger.
  2. Set the Rule to a cron interval with Expression 0 6 * * 1-5 to run at 6 AM on weekdays.
  3. Connect Scheduled Automation Trigger to Retrieve Calendar Events.

Step 2: Connect Google Calendar and filter external meetings

Pull today’s calendar events and keep only meetings with attendees.

  1. Open Retrieve Calendar Events and set Operation to getAll.
  2. Set Time Min to {{ $today }} and Time Max to {{ $today.plus({ day: 1 }) }}.
  3. Select your primary calendar in Calendar (replace [YOUR_EMAIL] with your actual calendar).
  4. Credential Required: Connect your googleCalendarOAuth2Api credentials in Retrieve Calendar Events.
  5. In Filter External Sessions, set the condition Left Value to {{ $json.attendees }} with operator Array → exists.
  6. Route Filter External Sessions to External Meetings Present with the Left Value {{ $json.id }} and operator String → exists.
  7. Connect External Meetings Present to both Split Events for Processing (true branch) and Send No-Meeting Notice (false branch).

⚠️ Common Pitfall: If External Meetings Present isn’t receiving any event IDs, confirm your calendar selection and date range in Retrieve Calendar Events.

Step 3: Set up AI research with tools and models

Generate meeting research using the agent and connected tools, then sanitize outputs for downstream use.

  1. In Split Events for Processing, set Field to Split Out to id and Include to allOtherFields.
  2. Open AI Meeting Research Agent and keep the Text prompt as defined, including expressions like {{ $json.summary }}, {{ $json.start.dateTime }}, and attendee filter {{ $json.attendees.filter(a => a.email !== $('User Configuration').item.json.user_email).map(a => a.email).join(', ') }}.
  3. Attach OpenRouter Chat Engine as the language model for AI Meeting Research Agent. Credential Required: Connect your openRouterApi credentials in OpenRouter Chat Engine.
  4. Ensure AI tools are connected to AI Meeting Research Agent: Query Gmail History, Web Research Utility, Lookup Attio Contacts, Retrieve Apollo Company Info, and Calendar Events Tool. Add credentials on each tool node, not the agent.
  5. Credential Required: Connect gmailOAuth2 in Query Gmail History.
  6. Credential Required: Connect anthropicApi in Web Research Utility.
  7. Credential Required: Connect httpBearerAuth in Lookup Attio Contacts.
  8. Credential Required: Connect httpHeaderAuth in Retrieve Apollo Company Info.
  9. Credential Required: Connect googleCalendarOAuth2Api in Calendar Events Tool.
  10. In Sanitize Research Content, keep the provided JavaScript Code to normalize the agent output.
  11. Sanitize Research Content outputs to both Extract Outside Attendees and Aggregate Research Summaries in parallel.

Tip: AI tool nodes like Query Gmail History and Web Research Utility are invoked by AI Meeting Research Agent. Ensure their credentials are valid or the agent will return thin results.

Step 4: Configure CRM attendee processing and note creation

Split external attendees, verify CRM presence, and create or update records with meeting notes.

  1. In Extract Outside Attendees, set the attendees value to {{ $('Split Events for Processing').item.json.attendees.filter(a => a.email !== $('User Configuration').item.json.user_email) }} and keep Include Other Fields enabled.
  2. Set Split Attendees for CRM to split on Field to Split Out attendees.
  3. In Find Person in Attio CRM, set URL to https://api.attio.com/v2/objects/people/records/query and keep the body {"filter":{"email_addresses":"{{ $json.attendees.email }}"},"limit":1,"offset":0}.
  4. Credential Required: Connect httpBearerAuth in Find Person in Attio CRM.
  5. In CRM Person Exists Check, keep the condition Left Value {{ $json.data[0].id.record_id }} with operator String → exists.
  6. In Create CRM Person Record, keep the body {"data":{"values":{"email_addresses":[{"email_address":"{{ $json.attendees.email }}"}]}}} and connect the false branch of CRM Person Exists Check.
  7. Credential Required: Connect httpBearerAuth in Create CRM Person Record and Create CRM Note Entry.
  8. Ensure Merge CRM Outcomes receives inputs from both CRM Person Exists Check and Create CRM Person Record, then connect to Create CRM Note Entry.
  9. In Create CRM Note Entry, keep Content set to {{ $('Sanitize Research Content').item.json.cleaned_content.replaceAll('\n','\\n') }} and Parent Record ID to {{ $json.data[0].id.record_id }}.

⚠️ Common Pitfall: If notes fail to create, verify that Sanitize Research Content is outputting cleaned_content and that the Attio record ID exists in CRM Person Exists Check output.

Step 5: Format the daily brief and post to Slack

Aggregate the research summaries, format a concise brief, and post it to Slack.

  1. Ensure Aggregate Research Summaries aggregates the output field from the research agent.
  2. In Format Daily Brief, keep the Text template and the expression {{ $json.output.length }} and the JSON mapping block intact.
  3. Attach OpenRouter Chat Engine 2 as the language model for Format Daily Brief. Credential Required: Connect your openRouterApi credentials in OpenRouter Chat Engine 2.
  4. In Post Daily Brief to Slack, set Text to {{ $json.text }} and select the destination channel.
  5. Credential Required: Connect slackOAuth2Api in Post Daily Brief to Slack and Send No-Meeting Notice.

Tip: When there are no external meetings, only Send No-Meeting Notice runs; when meetings exist, Format Daily Brief and Post Daily Brief to Slack handle the summary output.

Step 6: Test and Activate Your Workflow

Verify end-to-end behavior before turning on the schedule.

  1. Click Execute Workflow and confirm Retrieve Calendar Events returns today’s meetings.
  2. If meetings exist, verify AI Meeting Research Agent outputs content and Sanitize Research Content produces cleaned_content.
  3. Confirm CRM actions by checking that Create CRM Note Entry succeeds for each attendee.
  4. Check Slack: Post Daily Brief to Slack should post the formatted brief, or Send No-Meeting Notice should post the fallback message.
  5. Once validated, toggle the workflow Active to enable the weekday schedule.
🔒

Unlock Full Step-by-Step Guide

Get the complete implementation guide + downloadable template

Watch Out For

  • Google Calendar OAuth scopes matter. If meetings aren’t showing up, check the Google connection in n8n and confirm it has permission to read events from the right calendar.
  • If you’re using Wait nodes or external rendering, processing times vary. Bump up the wait duration if downstream nodes fail on empty responses.
  • Default prompts in AI nodes are generic. Add your brand voice early or you’ll be editing outputs forever.

Common Questions

How quickly can I implement this Slack meeting briefs automation?

About an hour if your Google and Slack accounts are ready.

Can non-technical teams implement this Slack meeting briefs automation?

Yes, but you’ll want one person who’s comfortable with OAuth logins and API keys. No coding is required for the basic setup.

Is n8n free to use for this Slack meeting briefs automation workflow?

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 OpenRouter API usage for the AI research and formatting steps.

Where can I host n8n to run this automation?

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.

How do I adapt this Slack meeting briefs automation solution to my specific challenges?

Start with the schedule and the meeting filter, because that’s what decides what shows up in Slack. You can edit the Scheduled Automation Trigger to run at a different time, then adjust “Filter External Sessions” to include or exclude meetings by keywords, organizer, or attendee count. If you don’t use Attio, remove the Attio lookup/create steps and keep the Gmail + web research pieces. For output, tweak the prompt in the “Format Daily Brief” node so the brief matches your style (bullet points, talk tracks, objections, next steps).

Why is my Slack connection failing in this workflow?

Usually it’s a permissions issue on the Slack bot or the channel. Recheck the Slack credential in n8n, confirm the bot is invited to the target channel, and verify it has permission to post messages. If it used to work and suddenly stopped, refresh the Slack OAuth connection and try again.

What’s the capacity of this Slack meeting briefs automation solution?

If you self-host, capacity mostly depends on your server and API rate limits from Google, Slack, and your research providers. On n8n Cloud, your monthly execution limit depends on your plan, and each meeting/attendee can create multiple executions. In practice, most small teams run this daily without thinking about it, but if you have dozens of meetings a day, you’ll want to batch research and keep the brief concise.

Is this Slack meeting briefs automation better than using Zapier or Make?

Often, yes. This workflow has branching logic (like “no external meetings” vs “research and post”), loops through events, and does multi-source research, which is where Zapier and Make can get expensive or awkward. n8n also gives you the option to self-host, so you’re not paying more just because your calendar got busy. The tradeoff is setup: you’ll spend a little more time connecting credentials and tuning the AI prompt. If your use case is simply “send today’s events to Slack,” Zapier might be faster. Talk to an automation expert if you want a recommendation based on your meeting volume and tools.

Your meetings aren’t slowing down, so your prep can’t depend on “I’ll do it later.” Set this up once, and let the brief show up in Slack every morning.

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.

Lisa Granqvist

Workflow Automation Expert

Expert in workflow automation and no-code tools.

×

Use template

Get instant access to this n8n workflow Json file

💬
Get a free quote today!
Get a free quote today!

Tell us what you need and we'll get back to you within one working day.

Get a free quote today!
Get a free quote today!

Tell us what you need and we'll get back to you within one working day.

Launch login modal Launch register modal