

How to Send Opportunity Stage Alerts to Slack with Power Automate
Automatically sends Slack DMs to deal owners when Salesforce opportunities change stages, including deal value and close date.
Steps and UI details are based on platform versions at time of writing — check each platform for the latest interface.
Slack for Salesforce exists as a native integration, but it limited to record notifications without custom logic. This guide uses an automation platform for full control. View native option →
Best for
Sales teams using Salesforce who need instant deal stage notifications without checking the CRM constantly
Not ideal for
Teams wanting batch digest notifications or complex multi-stage approval workflows
Sync type
real-timeUse case type
notificationReal-World Example
A 25-person enterprise sales team uses this to instantly notify deal owners via Slack DM when opportunities move to Negotiation or Closed-Won stages. Before automation, reps discovered stage changes hours later during daily CRM reviews, missing time-sensitive follow-ups.
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 | ||
| Opportunity Name | Name | |
| Stage Name | StageName | |
| Amount | Amount | |
| Probability | Probability | |
| Close Date | CloseDate | |
| Owner Name | Owner.Name | |
| Owner Email | Owner.Email | |
1 optional field▸ show
| Account Name | Account.Name |
Step-by-Step Setup
My flows > + New flow > Automated cloud flow
Create automated cloud flow
Navigate to make.powerautomate.com and click 'My flows' in the left sidebar. Click the '+ New flow' button at the top of the page. Select 'Automated cloud flow' from the dropdown menu. Name your flow 'Opportunity Stage Alerts' and leave the trigger selection for the next step.
- 1Click 'My flows' in the left navigation
- 2Click the '+ New flow' button
- 3Select 'Automated cloud flow'
- 4Enter 'Opportunity Stage Alerts' as the flow name
- 5Click 'Create' without selecting a trigger
Flow designer > Choose trigger > Salesforce
Add Salesforce trigger
In the trigger search box, type 'Salesforce' and select the Salesforce connector. Choose 'When a record is created, updated or deleted' as your trigger. This gives you the most control over which field changes fire the automation. You'll configure the specific conditions in the next step.
- 1Type 'Salesforce' in the search box
- 2Click on the Salesforce connector
- 3Select 'When a record is created, updated or deleted'
- 4Click 'Create' to add the trigger
Salesforce trigger > Connection settings
Configure Salesforce connection
If this is your first Salesforce connection, click 'Sign in' and authenticate with your Salesforce credentials. Choose your Salesforce environment (Production or Sandbox). Set Object Name to 'Opportunity' from the dropdown. Leave the Condition field blank for now - you'll filter for stage changes using a condition step later.
- 1Click 'Sign in' to authenticate with Salesforce
- 2Select your environment (Production/Sandbox)
- 3Choose 'Opportunity' from Object Name dropdown
- 4Leave Condition field empty
- 5Click outside the step to save
Flow designer > + New step > Condition
Add stage change condition
Click '+ New step' below the trigger. Search for and select the 'Condition' control. You need to filter for only stage changes, not every opportunity update. In the left side of the condition, select 'StageName' from the Salesforce dynamic content. Set the operator to 'is not equal to' and leave the right side empty for now.
- 1Click '+ New step' below the Salesforce trigger
- 2Search for 'Condition' in the actions list
- 3Select the Condition control
- 4Click in the left condition box
- 5Select 'StageName' from dynamic content
Condition Yes branch > + Add an action > Salesforce > Get record by Id
Get opportunity owner details
In the 'Yes' branch of the condition (when stage changed), add a new action. Search for 'Salesforce' and select 'Get record by Id'. Set Object Type to 'User' and Record Id to the 'OwnerId' field from the opportunity trigger. This lookup gets the owner's name and email for the Slack message.
- 1Click '+ Add an action' in the Yes branch
- 2Search for and select Salesforce connector
- 3Choose 'Get record by Id' action
- 4Set Object Type to 'User'
- 5Set Record Id to 'OwnerId' from dynamic content
Get record > + Add an action > Slack > Get user by email
Find Slack user by email
Add another action and search for 'Slack'. Select 'Get user by email' to match the Salesforce owner with their Slack account. If you haven't connected Slack yet, you'll need to authenticate. Set the Email field to the Email from the User record you just retrieved. This ensures DMs go to the right person.
- 1Click '+ Add an action' below Get record
- 2Search for 'Slack' and select the connector
- 3Choose 'Get user by email' action
- 4Authenticate with Slack if prompted
- 5Set Email to the Email field from the User record
Get user > + Add an action > Slack > Post message
Send Slack DM
Add a final Slack action and select 'Post message'. Set Channel to the User ID from the previous step (this creates a DM). Compose your message using dynamic content from the opportunity. Include the opportunity name, new stage, amount, probability percentage, and expected close date for a complete notification.
- 1Click '+ Add an action' below Get user by email
- 2Select Slack connector again
- 3Choose 'Post message' action
- 4Set Channel to the User ID from Get user step
- 5Compose message with opportunity details
Flow designer > Save > Test in Salesforce
Test the flow
Click 'Save' in the top right to save your flow. Go to your Salesforce org and change an opportunity's stage to trigger the automation. The flow should fire within 30 seconds and send a DM to the opportunity owner. Check the flow run history in Power Automate to see if it succeeded or failed.
- 1Click 'Save' in the top toolbar
- 2Navigate to your Salesforce org
- 3Open any opportunity record
- 4Change the Stage field to a different value
- 5Save the opportunity record
Add this expression in the Slack message text box to format currency properly and handle null amounts gracefully.
JavaScript — Code Stepif(empty(triggerOutputs()?['body/Amount']), ▸ Show code
if(empty(triggerOutputs()?['body/Amount']),
'Amount not set',
concat('$', formatNumber(triggerOutputs()?['body/Amount'], '0,0'))... expand to see full code
if(empty(triggerOutputs()?['body/Amount']),
'Amount not set',
concat('$', formatNumber(triggerOutputs()?['body/Amount'], '0,0'))
)
concat(
'🎯 Deal Update: ', triggerOutputs()?['body/Name'],
' moved to ', triggerOutputs()?['body/StageName'], '\n',
'💰 Value: ', if(empty(triggerOutputs()?['body/Amount']), 'Not set', concat('$', formatNumber(triggerOutputs()?['body/Amount'], '0,0'))),
' (', triggerOutputs()?['body/Probability'], '% probability)\n',
'📅 Expected close: ', formatDateTime(triggerOutputs()?['body/CloseDate'], 'MMM dd, yyyy'), '\n',
'🏢 Account: ', body('Get_record')?['Account']?['Name']
)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 you're already deep in the Microsoft ecosystem and need Salesforce webhook reliability without coding. The Salesforce premium connector handles webhook registration automatically, and you get proper error retry logic built-in. Skip this for Make if you need complex conditional formatting - Make's formula system runs circles around Power Automate's expression builder.
Real math: Each stage change costs 2 Power Automate runs (Salesforce trigger + Slack action). At 200 stage changes per month, that's 400 runs monthly. With the base plan including 2,000 runs, you're covered. Zapier costs $30/month for the same volume while Power Automate starts at $15/month with Office 365.
Make wins on message customization with better text formatting functions and conditional logic blocks. Zapier's Salesforce integration handles duplicate webhook prevention better than Power Automate. n8n gives you full JavaScript control over message templates and error handling. Pipedream's built-in Slack SDK makes user lookups more reliable. But Power Automate's Salesforce webhook setup requires zero technical configuration - it just works.
You'll hit webhook delivery delays during Salesforce maintenance windows, usually Tuesday nights. Power Automate doesn't dedupe multiple rapid stage changes like Make does, so busy reps get notification spam. The Slack user lookup fails silently if emails don't match exactly - add explicit error handling or your flow stops working for mismatched users.
Ideas for what to build next
- →Add digest mode for busy sales managers — Create a separate scheduled flow that sends daily summaries of all stage changes to sales leadership via a dedicated Slack channel.
- →Include next action recommendations — Enhance messages with stage-specific next steps pulled from Salesforce playbooks or custom fields to guide rep behavior.
- →Sync stage changes back to project management — Extend the flow to update related Asana or Monday.com project status when deals reach specific stages like Closed-Won.
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