

How to Send Gmail Lead Alerts to Slack with Power Automate
Monitors Gmail for high-priority emails from prospects, then posts a formatted Slack notification with sender name, subject, and email preview so sales teams can triage and assign follow-ups instantly.
Steps and UI details are based on platform versions at time of writing — check each platform for the latest interface.
Best for
Sales teams already inside the Microsoft 365 ecosystem who need instant Slack alerts when priority prospect emails land in Gmail.
Not ideal for
Teams that filter leads by CRM data or deal stage — use HubSpot or Salesforce native flows instead, where you already have structured contact data.
Sync type
real-timeUse case type
notificationReal-World Example
A 12-person SaaS sales team routes all inbound prospect email to a shared Gmail inbox. Before this flow, reps refreshed Gmail manually between calls and routinely missed replies from warm leads for 2-3 hours. With this automation, every email matching a priority label hits #sales-leads in Slack within 60 seconds, with the sender, subject, and first 300 characters of the body so any available rep can claim it.
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 Power Automate
Copy the pre-built Power Automate blueprint and paste it straight into Power Automate. 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) | ||
| Subject | ||
| Body Preview | ||
| Message ID | ||
| Slack Channel | ||
3 optional fields▸ show
| Received Date/Time | |
| To (Recipient Address) | |
| Has Attachments |
Step-by-Step Setup
make.powerautomate.com > My flows > + New flow > Automated cloud flow
Open Power Automate and create an Automated cloud flow
Go to make.powerautomate.com and sign in with your Microsoft account. In the left sidebar click 'My flows', then click '+ New flow' at the top. Select 'Automated cloud flow' from the dropdown — this is the event-triggered type, which fires the moment Gmail receives a matching email rather than on a schedule. Give the flow a name like 'Gmail Priority Lead → Slack'.
- 1Navigate to make.powerautomate.com and sign in
- 2Click 'My flows' in the left sidebar
- 3Click '+ New flow' at the top of the page
- 4Select 'Automated cloud flow' from the dropdown menu
- 5Enter a flow name and click 'Skip' on the trigger picker (you'll set it in the next step)
Flow canvas > Trigger block > Search 'Gmail' > When a new email arrives (V3)
Add the Gmail 'When a new email arrives' trigger
Click the trigger block on the canvas. In the search bar type 'Gmail' and select the Gmail connector. Choose the trigger 'When a new email arrives (V3)' — use V3, not the legacy V2, because V3 supports label filtering which you need to isolate priority leads. You'll be prompted to sign in to your Google account to create a Gmail Connection.
- 1Click the empty trigger block on the canvas
- 2Type 'Gmail' in the connector search bar
- 3Click the Gmail connector icon
- 4Select 'When a new email arrives (V3)' from the trigger list
- 5Click 'Sign in' and complete the Google OAuth flow in the popup window
Flow canvas > Gmail trigger block > Label / To / Include Attachments fields
Configure the trigger to filter for priority emails
With the Gmail trigger open, set the 'Label' field to the Gmail label you use to mark priority prospects — for example, 'Prospects' or 'High-Priority'. Set 'Include Attachments' to No unless your team needs them. Set 'To' to your shared sales inbox address if you only want emails to that specific address. Leave 'From' blank here — you'll filter sender domains in a later step using a Condition action so you can handle multiple domains.
- 1Click the 'Label' dropdown and select your priority label (e.g. 'Prospects')
- 2Set 'Include Attachments' to 'No'
- 3Enter the shared inbox address in the 'To' field if applicable
- 4Leave 'From' blank — domain filtering happens in Step 5
- 5Click outside the trigger block to collapse it
Flow canvas > + New step > Data Operation > Compose
Add a Compose action to build the email body preview
Click '+ New step' below the trigger. Search for 'Compose' and select the 'Compose' action under the Data Operation connector. In the Inputs field, use the expression editor to truncate the email body to 300 characters. This prevents Slack messages from becoming unreadably long. Click 'Expression' in the dynamic content panel and enter the formula shown in the pro_tip_code section below.
- 1Click '+ New step'
- 2Type 'Compose' in the search bar
- 3Select 'Compose' under the 'Data Operation' connector
- 4Click inside the 'Inputs' field
- 5Click 'Expression' tab in the dynamic content popup
- 6Enter: substring(triggerBody()?['Body'], 0, 300)
Flow canvas > + New step > Control > Condition
Add a Condition to filter by sender domain
Click '+ New step' and search for 'Condition'. Select the 'Condition' control action. This step prevents internal emails or newsletters from triggering Slack alerts. In the left value field, click 'Expression' and enter the formula: contains(triggerBody()?['From'], '@yourprospectdomain.com'). Set the operator to 'is equal to' and the right value to 'true'. Repeat this pattern for additional domains by adding 'Or' rows.
- 1Click '+ New step'
- 2Search for 'Condition' and select it under the Control connector
- 3Click the left value field, then click 'Expression'
- 4Enter: contains(triggerBody()?['From'], '@prospect-domain.com')
- 5Set the middle operator dropdown to 'is equal to'
- 6Set the right value to: true
- 7Click '+ Add' > 'Add row' to add additional allowed domains with 'Or' logic
Flow canvas > Condition > If yes > Add an action > Slack > Post message (V2)
Connect Slack inside the 'If yes' branch
Inside the 'If yes' branch of the Condition, click 'Add an action'. Search for 'Slack' and select the Slack connector. Choose the action 'Post message (V2)'. You'll be prompted to create a Slack Connection — click 'Sign in' and authorize via Slack OAuth. Make sure you authorize the correct Slack workspace where your #sales-leads channel lives.
- 1Click 'Add an action' inside the 'If yes' branch
- 2Type 'Slack' in the search bar
- 3Select the Slack connector
- 4Choose 'Post message (V2)'
- 5Click 'Sign in' and complete the Slack OAuth authorization
- 6Confirm the correct workspace is selected in the OAuth screen
Flow canvas > Slack > Post message (V2) > Channel Name / Message Text / Bot Name
Configure the Slack message with email details
With the Slack 'Post message (V2)' action open, set the Channel Name to your target channel — for example, #sales-leads. In the Message Text field, build the notification using dynamic content from the Gmail trigger and the Compose output. Use the format below to include sender, subject, and preview. Click 'Show advanced options' to set the Bot Name field to something recognizable like 'Lead Alert Bot' so reps know at a glance what triggered the message.
- 1Click the 'Channel Name' field and select or type your channel (e.g. #sales-leads)
- 2Click inside the 'Message Text' field
- 3Type '*New Lead Email* from ' then select 'From' from the Gmail dynamic content panel
- 4Press Enter, type '*Subject:* ' then select 'Subject' from dynamic content
- 5Press Enter, type '*Preview:* ' then select 'Outputs' from the Compose action (your 300-char preview)
- 6Click 'Show advanced options' and set Bot Name to 'Lead Alert Bot'
Flow canvas > Slack > Post message (V2) > Message Text > Expression editor
Add a direct reply link to the Gmail thread
Still inside the Slack message configuration, add a final line to the Message Text field that includes a direct link to the Gmail thread. This saves reps 30+ seconds of searching. In the message text, add a new line and type 'Open in Gmail: ' then click 'Expression' and enter the formula: concat('https://mail.google.com/mail/u/0/#inbox/', triggerBody()?['Id']). This constructs the direct thread URL using the Gmail message ID from the trigger.
- 1Click at the end of the Message Text field and press Enter
- 2Type 'Open in Gmail: '
- 3Click 'Expression' in the dynamic content panel
- 4Enter: concat('https://mail.google.com/mail/u/0/#inbox/', triggerBody()?['Id'])
- 5Click 'OK' to insert the expression as a token
Flow canvas > Condition > If no > Add an action > Control > Terminate
Add a 'Do nothing' action in the 'If no' branch
Click 'Add an action' inside the 'If no' branch of the Condition. Search for 'Terminate' under the Control connector and select it. Set Status to 'Succeeded'. This tells Power Automate to exit cleanly when an email doesn't match your domain filter rather than treating the run as failed. Without this, your run history will be cluttered with ambiguous incomplete runs.
- 1Click 'Add an action' inside the 'If no' branch
- 2Search for 'Terminate' and select it under the Control connector
- 3Set the 'Status' dropdown to 'Succeeded'
- 4Leave Comment blank
Flow canvas > Save > Test > Manually
Save and test the flow with a real email
Click 'Save' in the top toolbar. Once saved, click 'Test' in the top right and select 'Manually' — this lets you trigger a test by sending a real email to the monitored inbox. Send a test email from one of your approved prospect domains to the Gmail inbox with your priority label applied. Power Automate will poll Gmail and pick it up within 1-3 minutes.
- 1Click 'Save' in the top toolbar and wait for the save confirmation
- 2Click 'Test' in the top right corner
- 3Select 'Manually' and click 'Test'
- 4Open Gmail and send a test email from an approved domain to the monitored inbox
- 5Apply your priority label to the test email in Gmail
- 6Return to Power Automate and watch the test run progress in real time
make.powerautomate.com > My flows > [Flow name] > 28 day run history
Turn the flow on and monitor the first 24 hours
After a successful test, click 'Turn on' if the flow isn't already active. Go to 'My flows' and click into this flow to access the '28 day run history' panel on the right. Check it after the first few real emails arrive to confirm the Condition is routing correctly and Slack messages look right. Adjust the Message Text formatting or domain filter as needed — you can edit a live flow and save without turning it off.
- 1Click 'Turn on' in the flow toolbar if status shows 'Off'
- 2Navigate to 'My flows' in the left sidebar
- 3Click your flow name to open the flow detail page
- 4Scroll to the '28 day run history' section on the right panel
- 5Click individual run entries to inspect input/output values for each step
Paste this expression into the Compose action's Inputs field (Step 4) using the Expression editor. It strips common HTML tags from the Gmail body before truncating to 300 characters, so your Slack preview shows clean readable text instead of raw markup. The replace() calls chain together to remove the most frequent offenders from Gmail's HTML output.
Copy this templatereplace(▸ Show code
replace(
replace(
replace(... expand to see full code
replace(
replace(
replace(
replace(
replace(
substring(triggerBody()?['Body'], 0, 500),
'<div>', ''
),
'</div>', ''
),
'<p>', ''
),
'</p>', ' '
),
'<br>', ' '
)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 Power Automate for this if your organization already pays for Microsoft 365 and wants to avoid adding another tool to the stack. Power Automate is included in Microsoft 365 Business plans at the basic level, though the Gmail connector is premium and requires a Per User plan at $15/user/month. The second reason to pick it: your IT team controls connections and governance through the Microsoft admin center, which matters in enterprise environments where shadow IT is a real concern. The one scenario where you'd go elsewhere is if your team is entirely outside the Microsoft ecosystem — the setup friction of Power Automate versus Make or Zapier is real, and you shouldn't pay the premium connector surcharge for a workflow that two free tools can handle.
The math on cost: a Per User Power Automate plan costs $15/user/month. At 200 lead emails per month, you're paying roughly $0.075 per notification. Zapier's equivalent on the Professional plan ($49/month) covers up to 2,000 tasks — at 200 runs that's $0.025 per notification, or roughly 3x cheaper per event. Make's free tier handles 1,000 operations/month, making this workflow free under that threshold. If only one person needs to own and manage this flow, Zapier or Make beats Power Automate on pure cost. Power Automate makes financial sense when you already have the Per User license for other Microsoft workflows — then the marginal cost of adding this flow is zero.
Zapier has a cleaner Gmail trigger UI and the filter step is built in as a native option — no separate Condition action needed. Make gives you a visual router module that handles multiple Slack channels based on conditions more elegantly than Power Automate's nested Condition blocks. n8n lets you self-host and write JavaScript directly in the node, which means zero polling delay if you deploy a Gmail push webhook via Google Pub/Sub — something none of the hosted platforms do out of the box. Pipedream has a native Gmail source that uses Gmail's actual push API, delivering emails to Slack in under 5 seconds with zero polling. Power Automate is still the right call when your organization's security policy requires all connections to be managed through Microsoft's admin center, or when this flow is one of a dozen Microsoft-ecosystem automations and you want everything in one place.
Three things you'll hit post-launch. First, the 1-3 minute polling delay is real and will frustrate reps who expected instant alerts — set the expectation upfront that this is near-real-time, not instant. Second, Gmail's 'From' field inconsistency: some senders appear as '[email protected]' with no display name, others as 'Name <[email protected]>', and your contains() expression needs to handle both — test with 10 real emails before going live. Third, Power Automate connections expire silently. The Gmail OAuth token will stop working after extended inactivity without any alert to the flow owner — the first sign is usually a sales rep asking why they haven't seen a Slack alert in two days. Set a recurring calendar reminder every 45 days to check connection health in the Connections panel.
Ideas for what to build next
- →Route alerts to different channels by deal size or domain — Add a second Condition inside the 'If yes' branch to check the subject line or sender domain, then post enterprise leads to #sales-enterprise and SMB leads to #sales-smb. This takes one additional Control > Condition step and two Slack actions.
- →Log every lead alert to a shared spreadsheet — Add an Excel Online or Google Sheets 'Add a row' action after the Slack step to create a running log of all lead emails with timestamp, sender, and subject. Gives your team a searchable record without touching a CRM.
- →Send a daily digest summary instead of per-email pings — Build a second Scheduled cloud flow that runs at 8am daily, queries your Excel log from the step above, and posts a single digest message to Slack listing all leads from the previous day. Reduces notification noise for high-volume inboxes.
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