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

How to Broadcast Gmail Project Updates to Slack with Make

Watches a Gmail label for incoming project update emails and posts their sender, subject, and body summary 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

Distributed teams who receive external stakeholder or vendor emails that need immediate visibility in a project Slack channel without manual forwarding.

Not ideal for

Teams processing more than 200 project emails per day — at that volume, a dedicated email parsing service with native Slack integration handles rate limits more cleanly.

Sync type

scheduled

Use case type

notification

Real-World Example

💡

A 20-person product agency receives vendor status updates and client feedback via Gmail daily across 6 active projects. Before this automation, a project manager spent 30–45 minutes each morning forwarding relevant emails to the right Slack channels. Now Make checks Gmail every 5 minutes, reads the label, and posts directly to #project-acme or #project-beta — whichever matches the label applied by Gmail filters the team already had set up.

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 permission to install third-party OAuth apps (Google Workspace admins may need to whitelist Make)
Slack workspace where you have permission to install apps and the bot can post to the target channels
Make account on any plan — the free tier gives 1,000 operations/month which covers roughly 300 emails/month at ~3 operations per email
Gmail labels created and filters configured to tag incoming project emails before Make polls
The Make Slack bot invited to any private channels it needs to post in (/invite @Make in each channel)

Field Mapping

Map these fields between your apps.

FieldAPI Name
Required
From (Sender Address)
Subject
Date
Body (HTML)
Slack Channel
Slack Message Text
3 optional fields▸ show
Snippet
Labels
Message ID

Step-by-Step Setup

1

Gmail > Settings > See all settings > Labels > Create new label

Create a Gmail label for project emails

Before touching Make, set up a Gmail label that will act as the trigger condition. Open Gmail, go to Settings > See all settings > Labels, and click 'Create new label'. Name it something like 'Project Updates' or per-project labels like 'Vendor-Acme'. You can also set up Gmail filters (Settings > Filters and Blocked Addresses) to auto-apply this label to emails from specific senders or containing specific subject keywords. Make will watch this label, so everything you want broadcast must carry it.

  1. 1Open Gmail and click the gear icon in the top right
  2. 2Click 'See all settings'
  3. 3Navigate to the 'Labels' tab
  4. 4Scroll to the bottom and click 'Create new label'
  5. 5Type 'Project Updates' and click 'Create'
What you should see: The label 'Project Updates' appears in your Gmail left sidebar under 'Labels' and is visible in the Labels tab of Gmail settings.
Common mistake — If you plan to route emails to different Slack channels per project, create one label per project now (e.g., 'Project-Acme', 'Project-Beta'). You'll add a Router in Make later — but you need the labels first.
2

make.com > Scenarios > Create a new scenario

Create a new Make scenario

Log into Make at make.com and click the green 'Create a new scenario' button in the top right of the Scenarios page. You'll land on the visual canvas with a single empty circle in the center — this is where your trigger module goes. Don't click anything else yet. Make autosaves as you build, so there's no need to manually save after each module.

  1. 1Log into make.com
  2. 2Click 'Scenarios' in the left sidebar
  3. 3Click the green '+ Create a new scenario' button
  4. 4Wait for the blank canvas to load
What you should see: You see a blank canvas with a single large circle and a '?' icon. A search bar appears when you click the circle.
3

Canvas > Click circle > Search 'Gmail' > Watch Emails

Add the Gmail trigger module

Click the large circle on the canvas. In the search box that appears, type 'Gmail' and select the Gmail app. From the list of triggers, choose 'Watch Emails'. This trigger polls Gmail on a schedule you set — every 1, 5, 15, or 30 minutes. You'll be prompted to connect your Google account; click 'Add' and authorize Make to read your Gmail. Make requests only the scopes it needs: gmail.readonly and gmail.labels.

  1. 1Click the empty circle on the canvas
  2. 2Type 'Gmail' in the module search bar
  3. 3Click the Gmail app icon
  4. 4Select 'Watch Emails' from the trigger list
  5. 5Click 'Add' next to the Connection field and sign in with Google
What you should see: The Gmail module appears on the canvas and shows your connected Google account email address in the Connection field.
Common mistake — Make uses OAuth for Gmail. If your Google Workspace has third-party app restrictions enabled by an admin, the OAuth flow will fail silently after redirect. Ask your Workspace admin to whitelist Make's client ID before you proceed.
Make
+
click +
search apps
Slack
SL
Slack
Add the Gmail trigger module
Slack
SL
module added
4

Gmail module > Label dropdown > Max results > Schedule settings

Configure the Gmail trigger settings

Inside the Watch Emails module, set the Label field to the label you created in Step 1 — click the dropdown and select 'Project Updates'. Set 'Maximum number of results' to 10 (this controls how many emails Make processes per run). Leave 'Mark as read' unchecked unless you specifically want Make to mark emails as read after processing — leaving it unchecked means Gmail's read/unread state stays untouched. Set the polling interval by clicking the clock icon next to the scenario name at the bottom — 5 minutes is a good starting point.

  1. 1Click the Label field and select 'Project Updates' from the dropdown
  2. 2Set 'Maximum number of results' to 10
  3. 3Leave 'Mark as read' unchecked
  4. 4Click the clock icon at the bottom of the canvas
  5. 5Set the interval to 'Every 5 minutes' and save
What you should see: The Gmail module shows your selected label and max results. The scenario schedule indicator at the bottom shows '5 min'.
Common mistake — The 'Maximum number of results' field caps how many emails Make fetches per run, not per day. If a vendor sends 15 emails in 5 minutes, only 10 will process in that run. The other 5 will be picked up in the next run as long as they still match the label and haven't been processed.
5

Canvas > Gmail module > + > Text Parser > HTML to Text

Add a text parser to extract a body snippet

Gmail's API returns the full HTML or plain-text body, which is too long and messy to dump directly into Slack. Add a 'Text Parser' module after Gmail by clicking the '+' button on the right edge of the Gmail module. Search for 'Text Parser' and select 'HTML to Text'. Connect it and map the Gmail module's 'Body' field (or 'Snippet' if you prefer the first 200 characters Gmail surfaces by default) to the HTML source field. This strips tags and gives you clean readable text for the Slack message.

  1. 1Click the small '+' circle on the right edge of the Gmail module
  2. 2Search for 'Text Parser' in the module search
  3. 3Select 'HTML to Text'
  4. 4In the HTML field, click and select '1. Body' from the Gmail output panel on the right
What you should see: A Text Parser module appears connected to the Gmail module. The HTML field shows a reference to the Gmail body output like '{{1.body}}'.
Common mistake — Some senders use multipart MIME emails where the plain-text part is in a separate field called 'Text'. If your Slack messages show empty body content after launch, switch to mapping '1.Text' instead of '1.Body' in this module.
6

Canvas > Text Parser > + > Router > Filter settings per route

Add a Router for multi-channel broadcasting (optional but recommended)

If you're sending all emails to one Slack channel, skip this step and go to Step 7. If you want emails from different Gmail labels to go to different Slack channels, add a Router module. Click '+' after the Text Parser and search 'Router'. The Router creates parallel paths — one per Slack channel. Click each route's filter icon (the wrench) and set the filter condition: 'Gmail label name' contains 'Project-Acme' routes to #project-acme, and so on. Each route gets its own Slack module.

  1. 1Click '+' after the Text Parser module
  2. 2Search 'Router' and select it
  3. 3Click the wrench icon on Route 1
  4. 4Set filter: Field = '1. Labels > Name', Operator = 'Contains', Value = 'Project-Acme'
  5. 5Repeat for each additional project label
What you should see: The Router module shows multiple outbound paths, each with a filter badge showing the label condition it matches.
Common mistake — The Router evaluates routes top to bottom and stops at the first match by default. If an email could match multiple labels, enable 'Fall Through' mode in the Router settings so all matching routes execute.
message template
🔔 New Record: {{text}} {{user}}
channel: {{channel}}
ts: {{ts}}
#sales
🔔 New Record: Jane Smith
Company: Acme Corp
7

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

Add the Slack module and connect your workspace

Click '+' after the Text Parser (or after each Router route if using Step 6). Search 'Slack' and select 'Create a Message'. Click 'Add' next to the Connection field and authorize Make with your Slack workspace — you'll be redirected to Slack's OAuth page. Make needs the channels:write and chat:write scopes. Select the workspace and click Allow. You'll return to Make with the connection established.

  1. 1Click '+' after the Text Parser or Router route
  2. 2Search 'Slack' and click the app icon
  3. 3Select 'Create a Message'
  4. 4Click 'Add' next to Connection
  5. 5Authorize Make in the Slack OAuth window and click 'Allow'
What you should see: The Slack module shows your workspace name in the Connection field and a green checkmark indicating a live connection.
Common mistake — Make's Slack connection uses a bot token, not your personal user token. The bot must be manually added to any private Slack channel before it can post there. Go to that channel in Slack, type /invite @Make, and hit Enter.
Make settings
Connection
Choose a connection…Add
click Add
Slack
Log in to authorize
Authorize Make
popup window
Connected
green checkmark
8

Slack module > Channel > Text field > variable picker

Map Gmail fields to the Slack message

Inside the Slack module, set the Channel field to the target channel (e.g., #project-updates). In the Text field, build your message using Make's variable picker. Click inside the Text field and use the panel on the right to insert Gmail outputs. Construct a message like: '*New Project Email* \n*From:* {{1.from}} \n*Subject:* {{1.subject}} \n*Received:* {{1.date}} \n\n{{2.text}}' where {{1}} is Gmail and {{2}} is Text Parser. This gives Slack a formatted, readable post.

  1. 1Click the Channel dropdown and select your target Slack channel
  2. 2Click inside the Text field
  3. 3Type '*New Project Email*' then press Enter
  4. 4Use the right-side panel to insert '1. From', '1. Subject', '1. Date', and '2. Text' variables
  5. 5Format with Slack markdown: *bold* labels before each variable
What you should see: The Text field in the Slack module shows a formatted template with Gmail variable references like '{{1.from}}' and '{{2.text}}' visible as blue pills.
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}}
Slack fields
text
user
channel
ts
thread_ts
available as variables:
1.props.text
1.props.user
1.props.channel
1.props.ts
1.props.thread_ts
9

Canvas > dotted line between Gmail and Text Parser > Set up a filter

Add a subject line filter to exclude noise

Not every email in your 'Project Updates' label will be worth broadcasting — automated receipts, bounce notifications, and reply chains create noise. Add a Filter between the Gmail module and the Text Parser. Click the dotted line between the two modules and select 'Set up a filter'. Add a condition: Subject 'Does not contain' 'Undelivered' AND Subject 'Does not contain' 'Auto-Reply'. Add additional exclusion conditions matching your team's common noise patterns. This keeps Slack clean.

  1. 1Click the small dotted segment of the line between the Gmail and Text Parser modules
  2. 2Click 'Set up a filter'
  3. 3Set Condition 1: Label = '1. Subject', Operator = 'Does not contain', Value = 'Undelivered'
  4. 4Click 'Add AND rule'
  5. 5Set Condition 2: Label = '1. Subject', Operator = 'Does not contain', Value = 'Auto-Reply'
What you should see: A filter badge (a small funnel icon) appears on the line between Gmail and Text Parser. Hovering it shows your filter conditions.
Common mistake — Make's filter is case-sensitive by default. 'Auto-Reply' will not catch 'auto-reply'. Enable the 'Case insensitive' toggle inside the filter dialog for each text condition.
Slack
SL
trigger
filter
Condition
matches criteria?
yes — passes through
no — skipped
Gmail
GM
notified
10

Canvas > Run once button (bottom left)

Run a test with a real email

Send a test email to your Gmail address with the 'Project Updates' label applied (either manually apply it or trigger your Gmail filter). Back in Make, click 'Run once' at the bottom left of the canvas. Make will poll Gmail immediately, process the email through each module, and show bubble indicators above each module — green means success, red means error. Click any bubble to see the exact data that flowed through that module. Check your Slack channel for the posted message.

  1. 1Send a test email to yourself and apply the 'Project Updates' label in Gmail
  2. 2Return to Make and click 'Run once' at the bottom left
  3. 3Watch the bubbles appear above each module
  4. 4Click the bubble above the Slack module to verify the message payload
  5. 5Check your Slack channel to confirm the message appeared
What you should see: Each module shows a green bubble with a number indicating records processed. Your Slack channel shows a formatted message with the sender, subject, date, and body text from the test email.
Common mistake — If 'Run once' returns no results from Gmail, the most common cause is that the email wasn't labeled before Make polled. Gmail labels applied after an email arrives are still visible to the API — but Make's Watch Emails trigger tracks emails by the internal 'since' timestamp it stores. Apply the label, wait 30 seconds, then run again.
Make
▶ Run once
executed
Slack
Gmail
Gmail
🔔 notification
received
11

Canvas > Toggle switch (bottom left) > Scenarios > History

Activate the scenario

Once your test confirms everything works, click the toggle switch at the bottom left of the canvas — it should change from grey (off) to blue (on). Make will now poll Gmail automatically on the 5-minute schedule you set. You'll see the scenario status change to 'Active' in the Scenarios list. Check the scenario's execution history after 30 minutes to confirm it's running cleanly — go to Scenarios > click your scenario name > History tab.

  1. 1Click the grey toggle switch at the bottom left of the canvas
  2. 2Confirm it turns blue and reads 'Active'
  3. 3Navigate to Scenarios in the left sidebar
  4. 4Find your scenario and confirm its status shows 'Active'
  5. 5Return after 30 minutes and click the scenario to check the History tab for successful runs
What you should see: The scenario appears in your Scenarios list with a blue 'Active' badge. The History tab shows completed runs with green checkmarks.

Paste this formula into the Slack module's Text field (replacing the plain variable references) to truncate long email bodies at 500 characters and add a clean ellipsis. In Make, click inside the Text field, delete the current body variable reference, and type this formula directly using the formula toggle (fx icon) for the body portion only.

JavaScript — Custom Function{{if(
▸ Show code
{{if(
  length(trim(2.text)) > 500,
  concat(

... expand to see full code

{{if(
  length(trim(2.text)) > 500,
  concat(
    substring(
      trim(2.text),
      1,
      500
    ),
    '...'
  ),
  trim(2.text)
)}}

// Full Slack Text field value:
// *New Project Email*
// *From:* {{1.from}}
// *Subject:* {{1.subject}}
// *Received:* {{formatDate(1.date; 'MMMM D, YYYY h:mm A')}}
//
// {{if(length(trim(2.text)) > 500; concat(substring(trim(2.text); 1; 500); '...'); trim(2.text))}}

// Note: Make formula syntax uses semicolons (;) as argument separators,
// not commas. formatDate wraps the Gmail date in a human-readable format.
// length() and substring() are zero-indexed in Make — index 1 here means
// start at character 1 (Make uses 1-based indexing in substring).

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 conditional routing — sending vendor emails to one Slack channel and client feedback to another based on Gmail label. Make's Router module handles that in one scenario without duplicating triggers. Make is also the right call if you want to parse and truncate email bodies before posting, since its built-in formula functions (substring, length, formatDate) handle that without writing a single line of custom code. The one scenario where you'd skip Make: if your team already lives in Zapier and only needs a single Gmail label feeding a single Slack channel — Zapier's Gmail > Slack Zap is 6 clicks and zero configuration overhead for that simpler case.

Cost

Cost math: this scenario runs 3–4 operations per email. At 100 project emails per month, that's 300–400 operations — well within Make's free tier (1,000 operations/month). At 500 emails/month, you hit 1,500–2,000 operations and need Make's Core plan at $9/month. Zapier's equivalent is a two-step Zap on their free tier (100 tasks/month), which covers only 100 emails before you need Zapier Starter at $19.99/month. For this specific use case, Make is $10.99/month cheaper at the 500 emails/month mark.

Tradeoffs

Zapier does one thing better here: setup time. Their Gmail > Slack template is pre-built and takes 4 minutes. Make takes 20–25 minutes with the Router and Text Parser. n8n wins on body transformation — its Code node lets you write full JavaScript to strip signatures, extract specific paragraphs, or reformat dates in ways Make's formula functions can't match without workarounds. Power Automate is the right pick if your team uses Microsoft 365 and Outlook rather than Gmail — its Outlook connector and Teams integration are more mature for that stack. Pipedream beats all of them if you need to call external APIs mid-flow (e.g., looking up a client record in your CRM to add context to the Slack post). Make wins here for the specific combination of visual multi-channel routing, Gmail parsing, and a price point that beats Zapier at meaningful volume.

Three things you'll hit after going live. First: Gmail's API returns email body content differently depending on how the sender's email client formats the message — some emails have body content in the 'Text' field, others in 'HTML', and multipart emails have both. Build your Text Parser to handle both and test with emails from at least 3 different vendors before activating. Second: Make's Watch Emails cursor gets out of sync if you manually edit the scenario while it's active — editing resets the 'last seen' timestamp in some versions, causing emails from the past hour to re-process and flood Slack. Toggle the scenario off before editing, then back on. Third: Slack's API rate limit for chat.postMessage is 1 message per second per channel. If a vendor sends 20 emails in a burst and Make processes them in sequence, you'll hit the rate limit and some posts will fail with a 'ratelimited' error. Make doesn't automatically retry Slack rate limit errors — add an error handler that retries with a 2-second delay.

Ideas for what to build next

  • Add a Google Sheets log for audit trailAppend a Google Sheets module at the end of the scenario to log each forwarded email's sender, subject, timestamp, and destination channel. This gives you a searchable record of all external communications that were broadcast, which is useful for client reporting and post-project reviews.
  • Add error notification via Slack DMEnable Make's error handler by clicking the wrench icon on any module and selecting 'Add error handler'. Route errors to a Slack 'Create a Message' module that DMs a specific team member when the scenario fails. This replaces the default behavior of silently logging errors to Make's History tab that nobody checks.
  • Build a daily digest variant instead of real-time postsClone this scenario and change the Slack module to accumulate emails into an array using Make's Array Aggregator, then post one summary message per day at 9 AM instead of individual messages per email. This reduces Slack noise for lower-urgency project channels where real-time posting creates interruption fatigue.

Related guides

Was this guide helpful?
Slack + Gmail overviewMake profile →