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

How to Forward Gmail to Slack Channels with Make

Watches Gmail for emails matching a sender, subject keyword, or label, then posts the message content to a designated 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 that receive high-signal emails — customer inquiries, vendor invoices, escalations — and need the right Slack channel notified within minutes, not hours.

Not ideal for

High-frequency email volumes over 500/month on Make's free tier — switch to n8n self-hosted or Make's Core plan before you hit operation limits.

Sync type

scheduled

Use case type

notification

Real-World Example

💡

A 12-person e-commerce team routes all emails from their 3PL warehouse (sender: [email protected]) directly into #ops-alerts on Slack. Before this, the ops lead checked email manually twice a day and shipping delay notices sat unread for 6-8 hours. Now the Slack message lands within 5 minutes of the email arriving.

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 at least read access to the inbox or label you want to monitor
Slack workspace where you have permission to add apps (Workspace Owner or Admin, or App Management permission enabled for your role)
Make account — free tier works for 15-minute polling; Core plan ($9/month) required for 1-5 minute intervals
Gmail OAuth scope: Make needs 'gmail.readonly' at minimum; 'gmail.modify' if you want to mark emails as read after processing
Slack bot scope: 'chat:write' to post messages; 'channels:read' and 'groups:read' to list channels in Make's dropdown

Field Mapping

Map these fields between your apps.

FieldAPI Name
Required
From (Sender Email)
Subject
Slack Channel
7 optional fields▸ show
Snippet
Body Plain
Date
Labels
Thread ID
Message ID
Has Attachments

Step-by-Step Setup

1

make.com > Scenarios > Create a new scenario

Create a new Make scenario

Log in to Make at make.com and click the blue 'Create a new scenario' button in the top-right corner of your Scenarios dashboard. You'll land on the visual scenario canvas — a dark background with a single empty circle in the center. This circle is where your trigger module goes. Click it to open the app search panel on the right side of the screen.

  1. 1Log in at make.com
  2. 2Click 'Create a new scenario' in the top-right
  3. 3Click the empty circle in the center of the canvas to open the app picker
What you should see: A search panel opens on the right with a text field and a grid of app icons. You're ready to choose your trigger app.
Common mistake — Make auto-saves scenario drafts but does NOT activate them. A scenario sitting in draft state will never run — you must toggle it to Active in the final step.
2

Scenario Canvas > App Picker > Gmail > Watch Emails

Add the Gmail 'Watch Emails' trigger

Type 'Gmail' into the app search field and select it from the results. Make will show you a list of Gmail triggers and actions. Select 'Watch Emails' — this polls your Gmail inbox on a schedule you define. You'll be prompted to connect a Google account if you haven't already. Click 'Add' next to the connection field, sign in with your Google account, and grant Make the permissions it requests.

  1. 1Type 'Gmail' in the app search field
  2. 2Select 'Gmail' from the results
  3. 3Click 'Watch Emails' from the trigger list
  4. 4Click 'Add' next to the Connection field
  5. 5Sign in with your Google account and click 'Allow' on the permissions screen
What you should see: The Gmail module appears on the canvas with your Google account name shown in the Connection field. The module configuration panel is open and waiting for you to set filter criteria.
Common mistake — Make requests broad Gmail scopes during OAuth. If your Google Workspace admin has restricted third-party app access, you'll get a permissions error here. Your admin needs to allowlist Make at admin.google.com before you can connect.
Make
+
click +
search apps
Slack
SL
Slack
Add the Gmail 'Watch Emails'…
Slack
SL
module added
3

Gmail Module Panel > Folder > Criteria > Maximum number of results

Configure the Gmail filter criteria

Inside the 'Watch Emails' module panel, set the Folder to 'INBOX' (or another label if you're filtering by label). In the 'Criteria' field, enter a Gmail search query to scope which emails trigger the scenario — for example, 'from:[email protected]' to match a specific sender, or 'subject:Invoice' to match subject keywords. Set 'Maximum number of results' to 1. Leave 'Mark email messages as read' unchecked unless you want Make to mark emails as read after processing — this is a destructive action you can't undo through Make.

  1. 1Set Folder to 'INBOX'
  2. 2Enter your Gmail search query in the Criteria field (e.g. 'from:[email protected] subject:Invoice')
  3. 3Set Maximum number of results to 1
  4. 4Leave 'Mark email messages as read' unchecked for now
What you should see: The Criteria field shows your search query and Maximum results is set to 1. The module is configured but not yet saved.
Common mistake — Gmail search syntax inside Make's Criteria field is identical to the Gmail search bar — use 'from:', 'subject:', 'label:', 'has:attachment' etc. If you leave Criteria blank, Make will trigger on EVERY email in the folder, which will burn through your operations fast.
Slack
SL
trigger
filter
Condition
matches criteria?
yes — passes through
no — skipped
Gmail
GM
notified
4

Scenario Canvas > Gmail Module > + > Router

Add a Router to support multiple destination channels

If you need to send emails to different Slack channels based on rules (e.g. support emails go to #support, vendor emails go to #procurement), add a Router module after Gmail. Click the small '+' icon on the right edge of the Gmail module to add a new module, then search for 'Router' and select it. The Router splits the scenario into parallel paths. Each path gets its own filter and Slack module. If you only need one Slack channel, skip this step and connect Gmail directly to the Slack module.

  1. 1Click the '+' icon on the right edge of the Gmail module
  2. 2Search for 'Router' in the app picker
  3. 3Select 'Router' to add it to the canvas
  4. 4You'll see the Router split into two path circles — add more by clicking the '+' on the Router itself
What you should see: The Router module appears with two outgoing path lines, each ending in an empty circle. Each circle represents a separate routing path with its own filter and action.
Common mistake — Map fields using the variable picker — don't type field names manually. Hand-typed variable names often have invisible spacing errors that produce blank output.
message template
🔔 New Record: {{text}} {{user}}
channel: {{channel}}
ts: {{ts}}
#sales
🔔 New Record: Jane Smith
Company: Acme Corp
5

Scenario Canvas > Router path line > Filter icon > Condition setup

Set a filter on each Router path

Click the line between the Router and the first empty path circle — a filter icon appears. Click it to open the filter configuration panel. Set the Condition to match your routing rule. For example, to route by sender domain: set Field to 'From', Operator to 'Contains', and Value to '@vendorname.com'. Name the filter clearly (e.g. 'Vendor Emails') using the Label field at the top. Repeat for each Router path. If you skipped the Router, ignore this step.

  1. 1Click the connector line between the Router and the first path circle
  2. 2Click the filter icon that appears on the line
  3. 3Set Field to 'From' (or 'Subject' or 'Labels')
  4. 4Set Operator to 'Contains'
  5. 5Enter your match value (e.g. '@vendorname.com')
  6. 6Enter a Label name at the top of the filter panel
  7. 7Click OK
What you should see: A filter icon with a label now appears on the path line. Emails that don't match this filter will not flow down this path.
Common mistake — Make filter conditions are case-insensitive for text matching, but the 'Equal to' operator does exact matching. Use 'Contains' for partial matches like domain names or subject keywords to avoid missed triggers.
6

Scenario Canvas > Path Circle > App Picker > Slack > Create a Message

Add the Slack 'Create a Message' action

Click the empty circle at the end of your first Router path (or directly after the Gmail module if you skipped the Router). Search for 'Slack' and select it, then choose 'Create a Message' as the action. Connect your Slack workspace by clicking 'Add' next to the Connection field and authorizing Make in the Slack OAuth screen. Make will ask which permissions to grant — approve all that are requested.

  1. 1Click the empty circle at the end of a Router path
  2. 2Type 'Slack' in the app search field
  3. 3Select 'Slack'
  4. 4Choose 'Create a Message'
  5. 5Click 'Add' next to Connection and authorize Slack
What you should see: The Slack module opens with a Connection field showing your Slack workspace name. The Channel and Text fields are empty and ready to configure.
Common mistake — Make connects to Slack as a bot, not as your personal user. The bot must be invited to any private Slack channel before it can post there. Run '/invite @Make' in the channel first or the message action will return a 'channel_not_found' error.
Message template
📬 New entry: {{1.name}}
Email: {{1.email}}
Details: {{1.description}}
7

Slack Module Panel > Channel > Text

Configure the Slack message content

In the Slack module panel, select your destination Channel from the dropdown — all public channels and any private channels the bot has been invited to will appear. In the Text field, build your message using data mapped from the Gmail module. Click inside the Text field and use the variable picker (the small icon that appears) to insert Gmail fields. A useful format: '*From:* {{1.from}} | *Subject:* {{1.subject}}\n{{1.snippet}}' — this gives the Slack channel the sender, subject, and a preview of the email body in one message.

  1. 1Select your target Slack channel from the Channel dropdown
  2. 2Click inside the Text field
  3. 3Click the variable picker icon to browse Gmail output fields
  4. 4Map 'From', 'Subject', and 'Snippet' (or 'Body Plain') from the Gmail module
  5. 5Optionally set a Bot name and Bot icon URL for cleaner channel display
What you should see: The Text field shows a message template with blue variable chips for Gmail fields like From, Subject, and Snippet. The Channel field shows your selected Slack channel name.
Common mistake — Slack's 'Text' field strips most HTML. If you map Gmail's 'Body HTML' field, you'll get raw HTML tags in your Slack message. Use 'Body Plain' or 'Snippet' instead for readable output.
Message template
📬 New entry: {{1.name}}
Email: {{1.email}}
Details: {{1.description}}
8

Gmail Module > Clock Icon > Scheduling Panel

Set the polling schedule

Click the clock icon on the Gmail 'Watch Emails' trigger module (bottom-left of the module). This opens the scheduling panel. Set how frequently Make should poll Gmail for new emails. Options range from every 1 minute (requires a paid plan) to every 15 minutes (available on free). For most team notification workflows, every 5 minutes is a good balance of timeliness and operation usage. Click OK to save the schedule.

  1. 1Click the clock icon on the bottom-left of the Gmail module
  2. 2Set the interval (e.g. Every 5 minutes)
  3. 3Click OK
What you should see: The clock icon on the Gmail module now shows your selected interval. The scenario will poll Gmail at that frequency when activated.
Common mistake — The free Make plan only allows 15-minute polling intervals for scheduled triggers. If you need sub-5-minute latency, you need at least the Core plan ($9/month). There is no webhook option for Gmail's Watch Emails trigger in Make — polling is the only approach.
9

Scenario Canvas > Bottom Toolbar > Run once

Test the scenario with a real email

Before activating, send a test email to your Gmail account that matches your filter criteria. Then click 'Run once' in the bottom toolbar of the Make scenario canvas. Make will execute the scenario one time immediately, polling Gmail for matching emails. Watch the execution flow animate across your modules — green circles mean success, red means an error. Click on any module to inspect the exact data it received and sent.

  1. 1Send a test email to your Gmail account matching your filter criteria
  2. 2Click 'Run once' in the bottom toolbar
  3. 3Watch the animated execution flow across modules
  4. 4Click the Gmail module bubble to inspect the email data Make pulled
  5. 5Click the Slack module bubble to confirm the message payload
What you should see: Each module shows a green bubble with a number (e.g. '1') indicating one record was processed. Check your Slack channel — the forwarded message should appear within seconds of the test run.
Common mistake — If Make ran previously and already processed that email's internal ID, it won't pick it up again on 'Run once' — it only fetches emails newer than the last processed ID. Send a fresh test email each time you want to re-test.
Make
▶ Run once
executed
Slack
Gmail
Gmail
🔔 notification
received
10

Scenario Canvas > Bottom Toolbar > Active/Inactive Toggle

Activate the scenario

Once the test passes, toggle the scenario from OFF to ON using the switch in the bottom-left of the canvas toolbar. The toggle will turn blue when active. Make will now poll Gmail automatically on your configured schedule. You'll see scenario run history accumulate in the Scenario Detail page — click the scenario name in your Scenarios list to view run logs, operation counts, and any errors.

  1. 1Click the toggle switch in the bottom-left toolbar
  2. 2Confirm it turns blue (Active)
  3. 3Navigate to Scenarios list to confirm the scenario shows 'Active' status
What you should see: The scenario status shows 'Active' in your Scenarios dashboard. The next scheduled poll will run automatically based on your configured interval.
11

Scenarios > [Scenario Name] > History Tab | Organization > Usage

Review run history and operation usage

After 24 hours, open the scenario's detail page and check the History tab. Each polling cycle counts as operations even if no email was found — one operation is consumed just for the Gmail watch check. If emails are found and Slack messages sent, that's additional operations per email. Monitor your monthly operation count in Organization > Usage to avoid hitting your plan limit mid-month.

  1. 1Click your scenario name in the Scenarios list
  2. 2Open the History tab
  3. 3Check that recent runs show green (success) status
  4. 4Go to Organization > Usage to monitor total monthly operations
What you should see: The History tab shows timestamped run entries. Each successful run shows a green status and the number of operations consumed. Usage dashboard shows your remaining operation budget.

Paste this into a Make 'Text aggregator' or use it inside a 'Set variable' module's formula field to build a clean, conditional Slack message. The formula checks for attachments and appends a warning emoji, and it formats the Gmail date into a human-readable string. In Make, open a Tools > Set Variable module, set the Variable Name to 'slackMessage', and paste this into the Variable Value field using the formula editor.

JavaScript — Custom Function{{if(1.payload.parts; "📎 _Has attachments — view in Gmail_"; "")}}
▸ Show code
{{if(1.payload.parts; "📎 _Has attachments — view in Gmail_"; "")}}
*From:* {{1.from}}
*Subject:* {{1.subject}}

... expand to see full code

{{if(1.payload.parts; "📎 _Has attachments — view in Gmail_"; "")}}

*From:* {{1.from}}
*Subject:* {{1.subject}}
*Received:* {{formatDate(1.date; "MMM D, YYYY h:mm A"; "America/New_York")}}

{{if(
  length(1.bodyPlain) > 500;
  substring(1.bodyPlain; 0; 500) & "...";
  1.bodyPlain
)}}

{{if(
  contains(1.from; "@acme-logistics.com");
  ":rotating_light: *Vendor alert — tag @ops-lead*";
  ""
)}}

<https://mail.google.com/mail/u/0/#inbox/{{1.id}}|Open in Gmail>

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 you need conditional routing to multiple Slack channels from one scenario. The Router module handles it natively — no extra subscriptions, no code. Make also gives you a clean visual debugger: click any module after a run and see the exact JSON payload it received, which is genuinely useful when you're tuning Gmail search filters. The one scenario where you'd skip Make: if your team already lives in Zapier and this is the only automation you need. Zapier's Gmail + Slack Zap is faster to configure (under 5 minutes) and the trigger behavior is identical. Make's advantage is the Router and the formula editor — if you don't need those, Zapier's simplicity wins.

Cost

The math on Make's free plan: polling Gmail every 15 minutes = 2,880 polling operations per month just for the trigger checks, before a single email is forwarded. Add 1 operation per Slack message sent. If you receive 200 matching emails per month, that's 3,080 operations total — comfortably under Make's free tier limit of 1,000... wait, no. Make's free plan gives you 1,000 operations/month. 2,880 polling operations alone exceeds that. You need the Core plan at $9/month (10,000 operations) to run this at 15-minute intervals reliably. At 5-minute polling, you're at 8,640 polling operations/month — still under Core's 10,000 limit if email volume is low. Zapier's free tier (100 tasks/month) is worse for high-volume use. n8n self-hosted is free at any volume.

Tradeoffs

Zapier's Gmail trigger is also polling-based, fires on the same cadence, and their UI is simpler — but you can't route to multiple channels without building multiple Zaps (one per channel), and each Zap counts against your task limit separately. n8n has a Gmail node with identical polling behavior but lets you write JavaScript directly in the workflow to transform email body text, strip signatures, or extract structured data — that's a genuine advantage if your emails have consistent formats you want to parse. Power Automate has a 'When a new email arrives' trigger for Office 365 but not Gmail natively — you'd need a connector or use Gmail via HTTP, which is messier. Pipedream has a Gmail source that can trigger on webhooks via Gmail's Pub/Sub API (real-time, not polling), which is technically faster than anything Make, Zapier, or n8n offer for Gmail — but it requires setting up a Google Cloud Pub/Sub topic, which is a 20-minute setup process. Make is still the right call for most teams because the Router + visual debugger combo is unmatched for multi-channel routing without writing any code.

Three things you'll hit after setup. First: Gmail's search Criteria field is more sensitive than it looks — 'from:vendor.com' won't match emails from '[email protected]' unless you use 'from:@vendor.com'. Test every query in Gmail's actual search bar before trusting it in Make. Second: Slack's message character limit is 4,000 characters. Long email bodies (legal notices, newsletters) will get silently truncated — Make won't throw an error, the message just ends mid-sentence. Use the substring() formula in your Text field to cap body content at 500 characters and add a 'View in Gmail' link. Third: Make's free plan pauses inactive scenarios after 30 days of no edits. If nobody touches the scenario for a month and the trigger rate drops (quiet email period), Make may pause it. Set a calendar reminder to open and re-save the scenario once a month, or upgrade to a paid plan where this restriction doesn't apply.

Ideas for what to build next

  • Add a fallback error pathAdd an error handler to your scenario so failed runs (expired tokens, Slack downtime) post an alert to a fallback channel or send you an email via Gmail instead of silently failing.
  • Thread replies back into GmailExtend this workflow in reverse: watch for Slack messages in the forwarded thread and use the Gmail 'Send an Email' action with the Thread ID to reply directly from Slack — closes the loop without switching apps.
  • Build a daily digest instead of per-email alertsReplace the real-time forwarding with a scheduled Make scenario that runs once at 8 AM, collects all matching emails from the past 24 hours using Gmail's search, and posts a single summarized list to Slack — reduces channel noise significantly.

Related guides

Was this guide helpful?
Slack + Gmail overviewMake profile →