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

How to Send Gmail Sales Alerts to Slack with Make

Watches Gmail for labeled high-priority prospect emails and posts a formatted Slack message with sender name, subject, and email preview to a sales channel.

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

Best for

Small to mid-size sales teams who live in Slack and need to respond to inbound prospect emails within minutes, not hours.

Not ideal for

Teams receiving 500+ lead emails per day — at that volume, a dedicated CRM inbox routing tool handles prioritization better than a per-email Slack ping.

Sync type

real-time

Use case type

notification

Real-World Example

💡

A 12-person B2B SaaS sales team uses this to post to #inbound-leads whenever a prospect replies to an outbound sequence. Before this, reps had Gmail open in a tab and checked it between calls — high-value replies sat unread for 2-3 hours during busy afternoons. After setup, the Slack notification fires within 2 minutes of the email landing, and the AE on rotation claims it directly from the Slack message.

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 Owner or full access — Make needs permission to read emails and mark them as read via the Gmail API
Slack account with permission to install apps and post to the target channel — channel must be accessible to the bot
Make account — free plan works for testing but Core plan ($9/month) required for 1-minute polling intervals
Gmail label created and configured before building the scenario — at minimum 'Sales-Priority' or equivalent

Optional

Gmail filter set up to auto-apply the label to qualifying emails — otherwise you'll need to label emails manually for the scenario to catch them

Field Mapping

Map these fields between your apps.

FieldAPI Name
Required
Sender Name
Sender Email Address
Email Subject
Email Body Plain
Date Received
3 optional fields▸ show
Gmail Message ID
Thread ID
Label Names

Step-by-Step Setup

1

Gmail > Settings (gear icon) > See all settings > Labels > Create new label

Create a Gmail Label for High-Priority Emails

Before building anything in Make, set up a Gmail label called 'Sales-Priority' (or whatever naming convention your team uses). This label is what Make will watch — without it, you'd have to filter inside Make using fragile subject-line matching. Go to Gmail Settings, click 'Labels', then 'Create new label'. You can also create a Gmail filter under Settings > Filters and Blocked Addresses that auto-applies this label to emails from specific domains or containing keywords like 'pricing' or 'demo'.

  1. 1Open Gmail and click the gear icon in the top right, then 'See all settings'
  2. 2Click the 'Labels' tab
  3. 3Scroll to the bottom and click 'Create new label'
  4. 4Type 'Sales-Priority' and click 'Create'
  5. 5Optionally go to 'Filters and Blocked Addresses' and create a filter to auto-apply this label to emails from prospect domains
What you should see: You should see 'Sales-Priority' listed under 'Labels' in Gmail settings and visible in your left sidebar.
Common mistake — If you skip this step and rely on Make's built-in filter (matching subject or sender), Make will still download every email to check it — this burns operations fast and slows detection. Use the label approach.
2

make.com > Scenarios > Create a new scenario

Create a New Scenario in Make

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

  1. 1Log in at make.com and go to 'Scenarios' in the left sidebar
  2. 2Click the blue 'Create a new scenario' button in the top right
  3. 3Click the large circle with a plus icon in the center of the canvas
What you should see: The app search panel opens on the right side showing a search bar and a grid of app icons.
3

Scenario Canvas > App Search > Gmail > Watch Emails

Add the Gmail 'Watch Emails' Trigger

Search for 'Gmail' in the app panel and select it. From the list of Gmail modules, choose 'Watch Emails' — this is the polling trigger that checks your inbox on a schedule you define. On the next screen, Make will ask you to connect your Google account. Click 'Add' next to the Connection field and follow the OAuth flow. After connecting, set the 'Folder' field to 'Sales-Priority' (the label you created in Step 1).

  1. 1Type 'Gmail' in the app search bar and click the Gmail icon
  2. 2Select 'Watch Emails' from the module list
  3. 3Click 'Add' next to Connection and complete the Google OAuth flow
  4. 4Set 'Folder' to 'Sales-Priority'
  5. 5Set 'Maximum number of results' to 5 (catches bursts without hammering the API)
What you should see: The Gmail module shows your connected Google account email address and 'Sales-Priority' in the Folder field. No red error indicators.
Common mistake — Make's Gmail trigger polls on a schedule — the minimum interval on the free plan is 15 minutes. On the Core plan ($9/month) you can set it to 1 minute. If sub-2-minute delivery is critical, use Zapier's Gmail trigger instead, which uses Gmail's push API.
Make
+
click +
search apps
Slack
SL
Slack
Add the Gmail 'Watch Emails'…
Slack
SL
module added
4

Scenario Canvas > Gmail Module > Settings panel > Criteria section

Set the Email Filter Criteria

Inside the Gmail 'Watch Emails' module, scroll down to the 'Criteria' section. Set 'Sender email address' or use the Search field to narrow results. For the Search field, you can enter Gmail search syntax directly — for example, 'is:unread' ensures you only process new emails, not ones already read. This prevents duplicate notifications if the scenario runs while an email is still sitting in the inbox.

  1. 1Inside the Gmail module settings, scroll to the 'Search' field
  2. 2Enter 'is:unread label:Sales-Priority' to filter to unread emails with the label
  3. 3Leave 'Mark messages as read' toggled ON so processed emails don't trigger again
  4. 4Click OK to save the module settings
What you should see: The module settings panel closes and the Gmail module on the canvas shows a small Gmail icon with no error badge.
Common mistake — If you leave 'Mark messages as read' OFF, the same email will trigger a new Slack notification every time the scenario runs until you manually mark it read. Turn it ON.
Slack
SL
trigger
filter
Condition
matches criteria?
yes — passes through
no — skipped
Gmail
GM
notified
5

Scenario Canvas > + button right of Gmail module > Text Parser > Replace

Add a Text Parser to Build the Email Preview

Click the small circle to the right of the Gmail module to add another module. Search for 'Text Parser' and select 'Replace'. You'll use this to strip HTML tags from the email body so the Slack message shows clean plain text instead of a wall of HTML code. Set the 'Text' field to the Gmail Body Plain variable, and in 'Pattern' enter a regex to trim it to the first 300 characters. Alternatively, use Make's built-in substring() formula directly in the Slack module — either approach works.

  1. 1Click the small circle to the right of the Gmail trigger module
  2. 2Search for 'Text Parser' and select it
  3. 3Choose 'Replace' from the Text Parser module list
  4. 4In the 'Text' field, map the Gmail variable '1. Body Plain'
  5. 5In 'Pattern' enter '<[^>]+>' and leave 'Replacement' empty to strip HTML tags
  6. 6Click OK
What you should see: A second module labeled 'Replace' appears connected to the Gmail module on the canvas.
Common mistake — Some prospect emails arrive as HTML-only with no plain-text part — Gmail's 'Body Plain' field will be empty in these cases. Add a fallback in the Slack message by using Make's if() formula: if(1.body_plain; 1.body_plain; '(HTML-only email — open in Gmail)').
6

Scenario Canvas > + button > Slack > Create a Message > Add Connection

Connect Your Slack Account

Click the circle to the right of the Text Parser module and search for 'Slack'. Select the 'Create a Message' module. Click 'Add' next to the Connection field and follow the Slack OAuth flow — Make will open a new window asking you to authorize access to your Slack workspace. Select the workspace your sales team uses. Make needs permission to post messages; ensure you're authorizing with an account that has access to the target channel.

  1. 1Click the circle to the right of the Text Parser module
  2. 2Search for 'Slack' and select it
  3. 3Choose 'Create a Message' from the Slack module list
  4. 4Click 'Add' next to the Connection field
  5. 5In the OAuth window, select your sales team's Slack workspace and click 'Allow'
What you should see: The Connection field shows your Slack workspace name (e.g., 'Acme Sales') with a green indicator.
Common mistake — If your Slack workspace requires admin approval for new app installs, the OAuth will succeed on Make's side but the bot won't be able to post until an admin approves it in Slack's App Management settings. Check with your Slack admin before running the scenario.
Make settings
Connection
Choose a connection…Add
click Add
Slack
Log in to authorize
Authorize Make
popup window
Connected
green checkmark
7

Scenario Canvas > Slack Module > Settings panel > Text field

Configure the Slack Message Content

With the Slack module open, set 'Channel' to your sales channel (e.g., #inbound-leads). In the 'Text' field, build your message using Slack's mrkdwn formatting. Map Gmail variables directly from the trigger module: sender name, sender email, subject, and the cleaned body text from the Text Parser. Use Slack block formatting to make the message scannable — bold the subject line, show sender on its own line, and truncate the preview to 300 characters using Make's substring() formula.

  1. 1Set 'Channel' to your target Slack channel (type # to search)
  2. 2In the 'Text' field, click inside and use the variable picker to insert Gmail fields
  3. 3Build the message: '*New Lead Email* :email:\n*From:* {{1.from.name}} <{{1.from.value}}>\n*Subject:* {{1.subject}}\n*Preview:* {{substring(2.result; 0; 300)}}'
  4. 4Set 'Bot name' to 'Sales Alerts' so it's clearly identified in Slack
  5. 5Set an emoji icon like ':email:' in the 'Bot icon' field
  6. 6Click OK
What you should see: The Slack module shows your channel name and a preview of the message template with variable placeholders visible.
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 entry: {{1.name}}
Email: {{1.email}}
Details: {{1.description}}
8

Scenario Canvas > Connection line between modules > Wrench icon > Add a router

Add a Router for Priority Filtering (Optional but Recommended)

If you want to send different Slack messages — or post to different channels — based on whether the email is from a known prospect versus a cold inbound, add a Router between the Gmail trigger and the Text Parser. Click the wrench icon on the connection line between modules, then 'Add a router'. Create two routes: one for emails matching known prospect domains (use Make's contains() formula on the sender email field), and one for all others. This gives your team channel-level triage without any manual work.

  1. 1Click the small wrench icon on the line connecting Gmail to Text Parser
  2. 2Select 'Add a router'
  3. 3On Route 1, click the filter icon and add condition: '1.from.value' contains '@yourprospectdomain.com'
  4. 4Map Route 1 to post to #priority-deals
  5. 5Leave Route 2 as a catch-all posting to #inbound-leads
What you should see: The canvas shows a diamond-shaped Router module with two branches, each ending in a Slack module.
Common mistake — Each route branch needs its own Slack module — you cannot share a single Slack module across router branches in Make. Copy the Slack module by right-clicking it and selecting 'Copy' before attaching to the second branch.
9

Scenario Canvas > Gmail Module > Clock icon (bottom left of module)

Set the Polling Schedule

Click the clock icon in the bottom left of the Gmail trigger module (it looks like a small gear with a clock). This opens the scheduling panel. Set the interval to 1 minute if you're on a Core plan or higher, or 15 minutes on the free plan. For most sales teams, 1-minute polling gives near-real-time response without meaningful delay. The scenario will activate and start watching on this schedule once you turn it on.

  1. 1Click the clock icon on the Gmail module
  2. 2Set 'Run scenario' to 'At regular intervals'
  3. 3Set the interval to '1 minute' (requires Core plan) or '15 minutes' (free plan)
  4. 4Click OK
What you should see: The Gmail module shows a small clock badge indicating the polling interval is configured.
Common mistake — The free Make plan caps scenarios at 15-minute polling intervals and 1,000 operations per month. A single email triggers 3-4 operations (Watch + Text Parser + Slack). At 300 emails/month, you'll hit 900-1,200 operations — right at or past the free tier limit. Budget for the Core plan ($9/month) if you expect more than 250 qualifying emails monthly.
10

Scenario Canvas > Bottom toolbar > Run once button

Run a Test with a Real Email

Send a test email to your Gmail account from an external address and apply the 'Sales-Priority' label manually (or let your filter auto-apply it). Back in Make, click 'Run once' in the bottom toolbar. Make will execute the scenario once immediately. Watch the execution flow on the canvas — each module will show a bubble with the number of records it processed. Click the bubble on the Slack module to confirm it shows the message data.

  1. 1Send a test email from a non-Gmail account to your Gmail address
  2. 2In Gmail, apply the 'Sales-Priority' label to that email
  3. 3In Make, click 'Run once' in the bottom toolbar
  4. 4Watch the green bubbles appear on each module as execution flows left to right
  5. 5Click the bubble on the Slack module to inspect the output data
What you should see: The Slack module bubble shows '1 bundle processed' and you can see the message content in the inspector. Check your Slack channel — the notification should appear within 30 seconds.
Make
▶ Run once
executed
Slack
Gmail
Gmail
🔔 notification
received
11

Scenario Canvas > Bottom left toggle switch

Activate the Scenario

Once the test passes, click the toggle switch in the bottom left of the Make canvas to turn the scenario from OFF to ON. The toggle turns blue and Make shows a 'Scenario activated' confirmation. From this point, Make polls Gmail every 1 minute (or 15 minutes on free) and posts to Slack automatically. Check the 'History' tab in the top menu after 24 hours to confirm runs are succeeding and no errors have appeared.

  1. 1Click 'Save' in the bottom toolbar to save the scenario
  2. 2Click the toggle switch in the bottom left — it turns blue
  3. 3Confirm the 'Scenario activated' toast notification appears
  4. 4Go to the 'History' tab after 1 hour to review the first few automated runs
What you should see: The scenario status shows 'Active' in blue. The History tab shows completed runs with green checkmarks within the first polling interval.

This Make formula builds a smarter Slack message: it detects whether the email is a reply (subject starts with 'Re:') and flags it differently, truncates the preview cleanly at a word boundary, and constructs a direct Gmail deep-link using the message ID. Paste this into the Slack module's Text field using Make's formula editor (click the variable icon, then switch to 'Formula' mode).

JavaScript — Custom Function{{if(
▸ Show code
{{if(
  contains(toLower(1.subject); 're:');
  concat(

... expand to see full code

{{if(
  contains(toLower(1.subject); 're:');
  concat(
    '*↩ Reply from existing prospect* :speech_balloon:\n';
    '*From:* '; 1.from.name; ' <'; 1.from.value; '>\n';
    '*Subject:* '; 1.subject; '\n';
    '*Received:* '; formatDate(1.date; 'MMM D [at] h:mm A');
    '\n*Preview:* ';
    substring(2.result; 0; 280);
    if(length(2.result) > 280; '...'; '');
    '\n<https://mail.google.com/mail/u/0/#inbox/'; 1.id; '|Open in Gmail>'
  );
  concat(
    '*🆕 New inbound lead* :email:\n';
    '*From:* '; 1.from.name; ' <'; 1.from.value; '>\n';
    '*Subject:* '; 1.subject; '\n';
    '*Received:* '; formatDate(1.date; 'MMM D [at] h:mm A');
    '\n*Preview:* ';
    if(2.result; concat(substring(2.result; 0; 280); if(length(2.result) > 280; '...'; '')); '(HTML-only email)');
    '\n<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 your team wants routing logic — specifically, sending different Slack notifications to different channels based on sender domain, email keywords, or label combinations. Make's Router module handles this in one scenario without duplicating triggers. You also get a visual execution history that shows exactly which email failed and why, which matters when a rep asks 'why didn't I get an alert for that email?' The one scenario where you'd pick Zapier instead: you need sub-60-second delivery and your team refuses to think about operation counts. Zapier's Gmail trigger uses Google's push notifications (not polling), so it fires in under 30 seconds consistently. Make's minimum polling interval is 1 minute on a paid plan — acceptable for most sales teams, but if your sales motion depends on being the first to respond within 90 seconds, Zapier wins on speed.

Cost

The math is straightforward. Each email processed consumes 3 Make operations: Gmail Watch (1) + Text Parser (1) + Slack post (1). Add a Router and it's 4. At 200 qualifying emails per month, that's 600-800 operations. The free plan gives 1,000 — you're fine. At 400 emails/month you hit 1,200-1,600 operations and need the Core plan at $9/month. Zapier's free plan allows 100 tasks/month total, so at 400 emails you'd need the Starter plan at $19.99/month. Make is cheaper at this volume by roughly $11/month, and the Core plan's 10,000 operations has headroom for several other scenarios running in parallel.

Tradeoffs

Zapier's Gmail trigger fires faster due to push API — that's a real advantage Make doesn't match. n8n (self-hosted) lets you poll every 10 seconds with no operation cost and store email data in your own database, which is worth considering if you're already running n8n infrastructure. Power Automate's 'When a new email arrives in a shared mailbox' connector is the right tool if your sales team shares a single inbox like [email protected] — it handles shared mailbox permissions that Gmail + Make struggle with. Pipedream has a native Gmail source that also uses push notifications, and its Node.js execution lets you do more complex parsing (extract company names from signatures, for instance) in the same step. Make still makes sense here because the visual canvas is the right mental model for sales ops teams configuring this themselves without engineering help — they can see the flow, adjust the Slack message template, and debug runs without touching code.

Three things you'll hit after setup. First: the Gmail label filter breaks silently if someone renames the label in Gmail. Make doesn't validate label names at runtime — it just returns zero results. If notifications stop, check the label name in Gmail first. Second: Slack's mrkdwn formatter escapes '&', '<', and '>' characters — so email subjects containing '&' show up as '&amp;' in Slack messages. Add a replace() formula wrapping your subject field to fix this: replace(1.subject; '&amp;'; '&'). Third: Make's 'Run once' test mode processes the oldest unread email matching your criteria, not the most recent. Don't be surprised when your test notification shows a 3-week-old email — it's correct behavior. In production, the cursor advances forward so this only affects your initial test run.

Ideas for what to build next

  • Log Leads to a Google SheetAdd a Google Sheets module after the Slack module to log every notified email — sender, subject, timestamp, and thread ID — giving your team a lightweight lead inbox tracker without a CRM.
  • Add a Slack Reply-to-Assign FlowUse Make's Slack 'Watch Reactions' trigger to let reps claim a lead by reacting with :white_check_mark: — Make can then update a Google Sheet row or create a HubSpot contact automatically based on who reacted.
  • Build a Daily Digest Instead of Per-Email PingsIf per-email notifications create noise, swap to a scheduled Make scenario that runs once at 8 AM, aggregates all new Sales-Priority emails from the last 24 hours, and posts a single bulleted Slack summary to the team channel.

Related guides

Was this guide helpful?
Slack + Gmail overviewMake profile →