

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
scheduledUse case type
notificationReal-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.
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
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.
Field Mapping
Map these fields between your apps.
| Field | API 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
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.
- 1Open Gmail and click the gear icon in the top right
- 2Click 'See all settings'
- 3Navigate to the 'Labels' tab
- 4Scroll to the bottom and click 'Create new label'
- 5Type 'Project Updates' and click 'Create'
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.
- 1Log into make.com
- 2Click 'Scenarios' in the left sidebar
- 3Click the green '+ Create a new scenario' button
- 4Wait for the blank canvas to load
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.
- 1Click the empty circle on the canvas
- 2Type 'Gmail' in the module search bar
- 3Click the Gmail app icon
- 4Select 'Watch Emails' from the trigger list
- 5Click 'Add' next to the Connection field and sign in with Google
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.
- 1Click the Label field and select 'Project Updates' from the dropdown
- 2Set 'Maximum number of results' to 10
- 3Leave 'Mark as read' unchecked
- 4Click the clock icon at the bottom of the canvas
- 5Set the interval to 'Every 5 minutes' and save
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.
- 1Click the small '+' circle on the right edge of the Gmail module
- 2Search for 'Text Parser' in the module search
- 3Select 'HTML to Text'
- 4In the HTML field, click and select '1. Body' from the Gmail output panel on the right
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.
- 1Click '+' after the Text Parser module
- 2Search 'Router' and select it
- 3Click the wrench icon on Route 1
- 4Set filter: Field = '1. Labels > Name', Operator = 'Contains', Value = 'Project-Acme'
- 5Repeat for each additional project label
channel: {{channel}}
ts: {{ts}}
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.
- 1Click '+' after the Text Parser or Router route
- 2Search 'Slack' and click the app icon
- 3Select 'Create a Message'
- 4Click 'Add' next to Connection
- 5Authorize Make in the Slack OAuth window and click 'Allow'
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.
- 1Click the Channel dropdown and select your target Slack channel
- 2Click inside the Text field
- 3Type '*New Project Email*' then press Enter
- 4Use the right-side panel to insert '1. From', '1. Subject', '1. Date', and '2. Text' variables
- 5Format with Slack markdown: *bold* labels before each variable
📬 New entry: {{1.name}}
Email: {{1.email}}
Details: {{1.description}}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.
- 1Click the small dotted segment of the line between the Gmail and Text Parser modules
- 2Click 'Set up a filter'
- 3Set Condition 1: Label = '1. Subject', Operator = 'Does not contain', Value = 'Undelivered'
- 4Click 'Add AND rule'
- 5Set Condition 2: Label = '1. Subject', Operator = 'Does not contain', Value = 'Auto-Reply'
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.
- 1Send a test email to yourself and apply the 'Project Updates' label in Gmail
- 2Return to Make and click 'Run once' at the bottom left
- 3Watch the bubbles appear above each module
- 4Click the bubble above the Slack module to verify the message payload
- 5Check your Slack channel to confirm the message appeared
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.
- 1Click the grey toggle switch at the bottom left of the canvas
- 2Confirm it turns blue and reads 'Active'
- 3Navigate to Scenarios in the left sidebar
- 4Find your scenario and confirm its status shows 'Active'
- 5Return after 30 minutes and click the scenario to check the History tab for successful runs
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
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 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.
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 trail — Append 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 DM — Enable 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 posts — Clone 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
How to Share Notion Meeting Notes to Slack with Pipedream
~15 min setup
How to Share Notion Meeting Notes to Slack with Power Automate
~15 min setup
How to Share Notion Meeting Notes to Slack with n8n
~20 min setup
How to Send Notion Meeting Notes to Slack with Zapier
~8 min setup
How to Share Notion Meeting Notes to Slack with Make
~12 min setup
How to Create Notion Tasks from Slack with Pipedream
~15 min setup