Beginner~12 min setupCommunication & EmailVerified April 2026
Slack logo
Gmail logo

How to Forward Gmail Meeting Notes to Slack with Make

Watches Gmail for emails containing meeting notes, action items, or external meeting confirmations, then routes the content to the appropriate Slack channel automatically.

Steps and UI details are based on platform versions at time of writing — check each platform for the latest interface.

Best for

Teams where external meeting confirmations and follow-ups arrive in one person's inbox but need to reach the whole team in Slack.

Not ideal for

Teams using a shared inbox or calendar tool — in that case, route from Google Calendar invites instead.

Sync type

scheduled

Use case type

notification

Real-World Example

💡

A 12-person consulting firm uses this to push client meeting confirmations and post-meeting summaries from the account manager's Gmail into #client-meetings on Slack. Before automation, the account manager copy-pasted notes into Slack manually — often hours after the email arrived. Now the team sees meeting context within 5 minutes of the email landing.

What Will This Cost?

Drag the slider to your expected monthly volume.

/mo
505005K50K

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

Skip the setup

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.

Gmail account with messages.readonly OAuth scope — granted during Make connection setup
Slack workspace with a bot that has chat:write scope — granted during Make connection setup
The Slack bot must be invited to any private channels you want to post into before the scenario runs
Know which Gmail labels or search operators identify your meeting emails — test your search string in Gmail's search bar before entering it in Make

Optional

Make account on Core plan or above for 5-minute polling intervals (free plan is limited to 15 minutes)

Field Mapping

Map these fields between your apps.

FieldAPI Name
Required
Email Subject
Sender Name
Sender Email Address
Email Date
Plain Text Body
5 optional fields▸ show
Snippet
Recipients (To field)
CC Recipients
Attachment Names
Gmail Message ID

Step-by-Step Setup

1

Make Dashboard > Scenarios > Create a new scenario

Create a new scenario in Make

Log into Make at make.com and click the blue 'Create a new scenario' button in the top right of the Scenarios dashboard. You'll land on a blank canvas with a large '+' icon in the center — this is where you add your first module. Give the scenario a name immediately by clicking the default name at the top ('New scenario') and typing something like 'Gmail Meeting Notes → Slack'. Naming it now saves confusion if you have multiple scenarios.

  1. 1Click the blue 'Create a new scenario' button in the top right
  2. 2Click the pencil icon next to 'New scenario' at the top and rename it 'Gmail Meeting Notes → Slack'
  3. 3Click the large '+' icon in the center of the canvas to open the module picker
What you should see: You should see a blank scenario canvas with a single unnamed module placeholder in the center and your new scenario name shown at the top.
Common mistake — Do not use the 'Templates' tab to start this workflow — the Gmail-to-Slack templates in Make use broad label-based triggers that will fire on every email, not just meeting-related ones.
2

Canvas > + > Gmail > Watch Emails

Add the Gmail 'Watch Emails' trigger module

In the module picker search box, type 'Gmail' and select it from the results. From the Gmail module list, choose 'Watch Emails' — this polls your inbox on a schedule you set and fires once per matching email. You'll be prompted to connect your Google account. Click 'Add' next to the connection field, sign in with the Google account that receives the meeting emails, and grant Make the Gmail read permissions it requests.

  1. 1Type 'Gmail' in the module search box
  2. 2Select 'Watch Emails' from the Gmail module list
  3. 3Click 'Add' next to the Connection field
  4. 4Sign into the correct Google account and click 'Allow' on the permissions screen
What you should see: The Gmail module appears on the canvas with a green connection indicator and the connection name shown inside the module card.
Common mistake — Make requests broad Gmail scopes. If your Google Workspace admin has restricted third-party OAuth, this will fail silently — the connection will appear to succeed but the trigger will never fire. Confirm with your admin before building further.
Make
+
click +
search apps
Slack
SL
Slack
Add the Gmail 'Watch Emails'…
Slack
SL
module added
3

Canvas > Gmail: Watch Emails > Settings panel (right side)

Configure the Gmail trigger filters

Inside the 'Watch Emails' module settings, set the 'Folder' to 'INBOX'. In the 'Search' field, enter a Gmail search string to target only meeting-related emails — use something like: subject:(meeting OR 'action items' OR 'follow-up' OR 'meeting notes'). Set 'Maximum number of results' to 5. This limits each polling run to 5 emails, which prevents large backlogs from flooding Slack on the first run. Set the trigger to watch 'All emails' not just unread ones, unless your team marks emails as read consistently.

  1. 1Set 'Folder' to 'INBOX'
  2. 2Enter subject:(meeting OR "action items" OR "follow-up" OR "meeting notes") in the 'Search' field
  3. 3Set 'Maximum number of results' to 5
  4. 4Set 'Mark email messages as read when fetched' to 'No' unless you want Make to mark them read
What you should see: The module settings panel shows your search string, folder set to INBOX, and a max result count of 5. No errors shown at the bottom of the panel.
Common mistake — Filters are the most common place setups break. Double-check the field name and value exactly match what your app sends — a single capital letter difference will block everything.
Slack
SL
trigger
filter
Condition
matches criteria?
yes — passes through
no — skipped
Gmail
GM
notified
4

Canvas > + > Text Parser > Match Pattern

Add a Text Parser to extract key content

Click the '+' icon to the right of the Gmail module to add the next module. Search for 'Text Parser' and select 'Match Pattern'. This module lets you extract specific content from the email body using a regex pattern. You'll use it to pull out the meeting date, attendees, or action items if they follow a consistent format. If your meeting emails are less structured, you can skip this step and pass the raw email body to Slack — but the Slack message will be harder to read.

  1. 1Click the '+' icon to the right of the Gmail module
  2. 2Search for 'Text Parser' in the module picker
  3. 3Select 'Match Pattern'
  4. 4In the 'Text' field, map in '{{1.snippet}}' or '{{1.body.value}}' from the Gmail module
  5. 5Enter your regex pattern — e.g. Action Items:\s*(.+?) for extracting action item blocks
What you should see: The Text Parser module appears connected to the Gmail module with the input field showing the Gmail body variable and your regex pattern entered.
Common mistake — Gmail's 'snippet' field is truncated to ~200 characters. Always map '{{1.body.value}}' for full email body content — using snippet will cut off long meeting notes mid-sentence.
5

Canvas > + > Router

Add a Router to direct emails to different Slack channels

Click the '+' after the Text Parser module and search for 'Router'. Add it — this splits your scenario into multiple branches, one per Slack channel. For example, one branch for client meeting emails routed to #client-meetings and another for internal emails routed to #team-updates. Each branch has its own filter condition you'll set in the next step. The Router is the core logic that makes this more useful than a single forward.

  1. 1Click the '+' icon to the right of the Text Parser module
  2. 2Search for 'Router' and select it
  3. 3The Router appears on the canvas with two default output paths shown as arrows
What you should see: The Router module appears on the canvas with two outgoing arrows. Each arrow leads to an empty '+' placeholder where you'll add Slack modules.
Common mistake — The Router evaluates branches in order from top to bottom and stops at the first matching branch by default. If an email could match more than one filter, reorder branches carefully — drag the route handles to reorder them.
message template
🔔 New Record: {{text}} {{user}}
channel: {{channel}}
ts: {{ts}}
#sales
🔔 New Record: Jane Smith
Company: Acme Corp
6

Canvas > Router arrow > Filter icon > Filter editor

Set filter conditions on each Router branch

Click the small filter icon (a funnel) on the first Router arrow to open the filter editor. Set the condition using Gmail fields — for example: '{{1.from.value[].email}}' contains 'clientdomain.com' to catch all emails from a client. For the second branch, set it to catch emails where the subject contains 'internal' or from your company domain. Click 'OK' to save each filter. You can add more branches by clicking the '+' on the Router module itself.

  1. 1Click the funnel icon on the first Router output arrow
  2. 2Set Label to 'Client Meetings'
  3. 3Set Condition: '{{1.from.value[].email}}' > 'Contains' > 'clientdomain.com'
  4. 4Click 'OK'
  5. 5Repeat for the second arrow, using subject or sender conditions for internal meetings
What you should see: Each Router arrow now shows a small filter label ('Client Meetings', 'Internal Meetings') below the arrow, confirming the condition is saved.
Common mistake — Filters are the most common place setups break. Double-check the field name and value exactly match what your app sends — a single capital letter difference will block everything.
7

Canvas > Router branch > + > Slack > Create a Message

Add a Slack 'Create a Message' module to each branch

Click the '+' at the end of each Router branch and search for 'Slack'. Select 'Create a Message'. Connect your Slack workspace — click 'Add' next to the Connection field and authorize Make with the Slack bot scopes it requests (chat:write is the key one). Do this for each branch. You'll configure the channel and message content separately on each Slack module.

  1. 1Click '+' at the end of the first Router branch
  2. 2Search 'Slack' and select 'Create a Message'
  3. 3Click 'Add' next to the Connection field
  4. 4Authorize Make in the Slack permissions screen that opens
  5. 5Repeat for the second Router branch using the same Slack connection
What you should see: Each Router branch now ends in a Slack module with a green connection indicator. Both modules can share the same Slack connection.
Common mistake — Make's Slack integration requires the bot to be manually invited to private channels. If you target a private channel and the bot isn't a member, the module will error with 'channel_not_found' — not a permission error. Invite the bot first with /invite @Make in Slack.
Message template
📬 New entry: {{1.name}}
Email: {{1.email}}
Details: {{1.description}}
8

Canvas > Slack: Create a Message > Settings panel

Configure the Slack message content for each branch

Inside each Slack 'Create a Message' module, set the 'Channel' field by typing the channel name or selecting from the dropdown (e.g. #client-meetings). In the 'Text' field, build your message using Gmail variables. A solid format: *New Meeting Email* — {{1.subject}} From: {{1.from.value[].name}} Date: {{formatDate(1.date; 'MMMM D, YYYY')}} {{1.snippet}}. Keep it short enough that Slack doesn't truncate it — under 3000 characters. Repeat this configuration on the second Slack module, pointing to the different channel.

  1. 1Set 'Channel' to #client-meetings (or your target channel name)
  2. 2In the 'Text' field, enter your message template with Gmail variables mapped in
  3. 3Map '{{1.subject}}' for the email subject
  4. 4Map '{{formatDate(1.date; "MMMM D, YYYY")}}' for a readable date
  5. 5Map '{{1.snippet}}' or '{{1.body.value}}' for the email body preview
What you should see: The Slack module settings panel shows your channel selected and a message template visible in the Text field with the Gmail variables shown as orange tokens.
Common mistake — Slack's text field does not render HTML. If the Gmail body contains HTML tags (common in formatted emails), they'll appear as raw markup in Slack. Use '{{1.body.text}}' for the plain-text version of the body instead of '{{1.body.value}}'.
Message template
📬 New entry: {{1.name}}
Email: {{1.email}}
Details: {{1.description}}
9

Canvas > Gmail module > Clock icon > Scheduling panel

Set the polling schedule

Click the clock icon on the Gmail 'Watch Emails' module (bottom left of the module on the canvas). This opens the scheduling panel. Set the interval to '5 minutes' for near-real-time distribution. If your team doesn't need instant notification, 15 minutes reduces your operation count and keeps costs lower. Make's free plan runs scenarios every 15 minutes minimum — to get 5-minute polling, you need at least the Core plan.

  1. 1Click the clock icon on the bottom-left corner of the Gmail module
  2. 2Set 'Run scenario' to 'At regular intervals'
  3. 3Set interval to '5 minutes' (or 15 minutes on free plan)
  4. 4Click 'OK'
What you should see: The clock icon on the Gmail module now shows a small green dot indicating scheduling is active. The interval you set is visible in the scheduling panel.
Common mistake — The default polling interval is often 15 minutes. If you need faster delivery, check whether your plan supports shorter intervals before assuming it's a bug.
10

Canvas > Bottom toolbar > Run once button

Run a test with real email data

Click 'Run once' in the bottom toolbar to trigger a single manual run. Make will poll Gmail for matching emails and process the first one it finds. Watch the execution flow on the canvas — each module lights up blue as it runs, then shows a green bubble with the number of processed records. Click each bubble to inspect the exact data that passed through: subject, sender, body, and the final Slack message payload. Verify the correct channel received the message in Slack.

  1. 1Click the 'Run once' button in the bottom toolbar
  2. 2Watch the modules light up blue as each executes
  3. 3Click the green bubble on the Gmail module to inspect the email data fetched
  4. 4Click the green bubble on the Slack module to see the message payload sent
  5. 5Check your Slack channel to confirm the message arrived
What you should see: Every module shows a green bubble with '1' indicating one record processed. The Slack channel shows the new message with the email subject, sender name, date, and body snippet.
Common mistake — On the first 'Run once', Make asks which email to start from: 'From now on' or 'Choose where to start'. Select 'Choose where to start' and pick a specific test email — otherwise Make may process your entire inbox backlog and flood Slack with old emails.
Make
▶ Run once
executed
Slack
Gmail
Gmail
🔔 notification
received
11

Canvas > Bottom-left toggle > ON

Activate the scenario

Once the test run looks correct in both Make and Slack, flip the toggle in the bottom-left corner of the canvas from OFF to ON. The scenario is now live and will poll Gmail on the schedule you set. Make will email you if the scenario encounters an error and stops. Go to Scenario Settings (the gear icon at the bottom) and confirm 'Notify me on error' is turned on so you catch any Gmail permission issues or Slack channel errors quickly.

  1. 1Click the toggle in the bottom-left corner to switch from OFF to ON
  2. 2Click the gear icon to open Scenario Settings
  3. 3Confirm 'Allow incomplete bundles' is set based on your preference
  4. 4Confirm error notification email is set under 'Notifications'
What you should see: The toggle shows green (ON) and the scenario status in the Scenarios list shows 'Active' with the next scheduled run time displayed.

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

VerdictWhy Make for this workflow

Use Make for this if your team needs routing logic — different Slack channels for different email types — because Make's Router module handles that in a single scenario without duplicating logic. Make also handles the Gmail search filtering natively, so you're not burning operations on emails that shouldn't trigger anything. The one scenario where you'd pick Zapier instead: if the person setting this up has never used a visual automation tool and the routing rules are simple (one inbox, one Slack channel). Zapier's Gmail trigger is faster to configure and the filter step is more intuitive for non-technical users.

Cost

Cost math: each scenario run uses 3-5 operations depending on whether the Router fires one branch or two — 1 for Gmail polling, 1 for Text Parser, 1 for Router evaluation, 1 for Slack. At 20 meeting emails per day on a 5-minute polling schedule, that's roughly 100 operations per day or 3,000/month. Make's Core plan includes 10,000 operations/month for $10.59/month, so you have 7,000 operations of headroom. Zapier's equivalent would run ~3,000 tasks/month and hit the $19.99/month Starter plan. Make is cheaper by about $9/month for this volume.

Tradeoffs

Zapier handles Gmail triggers with a slightly faster initial setup — the 'New Email Matching Search' Zap is one of Zapier's most reliable triggers and requires zero configuration beyond the search string. n8n's Gmail node supports OAuth2 and webhook-based triggers (via Gmail Push Notifications with Pub/Sub), which would give you true instant delivery instead of polling — Make can't do that for Gmail. Power Automate has a native 'When a new email arrives (V3)' trigger in Outlook but not Gmail — for Gmail specifically, Power Automate requires a workaround through a custom connector or Office 365 forwarding. Pipedream's Gmail source uses the Gmail API with real-time push, making it faster than Make for latency-sensitive teams. Make is still the right call here because the visual Router is unmatched for multi-channel routing and most teams don't need sub-60-second email delivery for meeting notes.

Three things you'll hit after go-live. First, Gmail's OAuth tokens expire or get revoked when a user changes their Google password or an admin resets security settings — Make will stop silently and you won't know until someone notices Slack stopped getting messages. Set up error notification emails in Scenario Settings on day one. Second, HTML email bodies: roughly 60% of meeting confirmation emails from calendar tools (Calendly, Zoom, Google Calendar) are HTML-formatted with tables and inline styles. Passing body.value to Slack produces unreadable output with raw HTML tags. Always use body.text and test with a real calendar confirmation email, not a manually typed test. Third, Make's Gmail module doesn't support label-based watching — only folder names and search strings. If your team uses Gmail labels to organize meeting emails (a common setup), you'll need to convert your label logic into equivalent search operators like 'label:meeting-followups' in the search field.

Ideas for what to build next

  • Add a Google Calendar lookupWhen Make detects a meeting confirmation email, cross-reference Google Calendar to check if the event is already on the calendar. If not, automatically create the calendar event from the email details — closing the loop between inbox and calendar.
  • Log meetings to a Google SheetAfter each Slack notification, add a row to a Google Sheet with the email subject, sender, date, and Slack channel it was routed to. Gives you a running log of all external meetings distributed to the team without digging through Slack history.
  • Build a daily digest instead of instant notificationsReplace the polling trigger with a scheduled trigger that runs once at 8am, collects all meeting emails from the past 24 hours, and posts a single summarized Slack message per channel. Reduces Slack noise for high-volume inboxes.

Related guides

Was this guide helpful?
Slack + Gmail overviewMake profile →