

How to Send Deal Stage Alerts to Slack with Power Automate
Automatically notify your Slack team when HubSpot deals move to new pipeline stages.
Steps and UI details are based on platform versions at time of writing — check each platform for the latest interface.
HubSpot for Slack exists as a native integration, but it doesn't support conditional routing or custom message formatting. This guide uses an automation platform for full control. View native option →
Best for
Sales teams who need instant notifications when deals progress through their HubSpot pipeline stages.
Not ideal for
Teams wanting digest summaries or complex conditional logic based on deal properties.
Sync type
real-timeUse case type
notificationReal-World Example
A 12-person B2B sales team uses this to post in #sales-alerts whenever a deal moves to Proposal or Negotiation stages in HubSpot. Before automation, deal stage changes sat unnoticed for hours, causing follow-up delays. Now the assigned rep and sales manager both see stage changes within 30 seconds.
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.
Optional
Field Mapping
Map these fields between your apps.
| Field | API Name | |
|---|---|---|
| Required | ||
| Deal Name | dealname | |
| Deal Stage | dealstage | |
| Deal Amount | amount | |
| Deal Owner | hubspot_owner_id | |
4 optional fields▸ show
| Close Date | closedate |
| Company Name | associatedcompanyid |
| Deal Source | hs_deal_stage_probability |
| Last Activity Date | notes_last_updated |
Step-by-Step Setup
My flows > +New flow > Automated cloud flow
Create automated cloud flow
Navigate to make.powerautomate.com and sign in with your Microsoft account. Click My flows in the left sidebar, then +New flow in the top menu. Select Automated cloud flow from the dropdown options. Name your flow something like 'HubSpot Deal Stage Alerts' and leave the trigger selection empty for now.
- 1Click My flows in the left sidebar
- 2Click +New flow in the top menu
- 3Select Automated cloud flow
- 4Name the flow 'HubSpot Deal Stage Alerts'
- 5Click Create without selecting a trigger
Trigger > Search connectors > HubSpot > When a deal is updated
Add HubSpot trigger
Click the trigger box and search for 'HubSpot' in the connector list. Select the HubSpot connector, then choose 'When a deal is updated' as your trigger. This fires whenever any deal property changes, including stage movements. You'll need to authenticate with your HubSpot account if this is your first time connecting.
- 1Click the empty trigger box
- 2Type 'HubSpot' in the search bar
- 3Select the HubSpot connector
- 4Choose 'When a deal is updated' trigger
- 5Sign in to your HubSpot account when prompted
When a deal is updated > Configure parameters
Configure deal trigger settings
In the trigger configuration, you'll see options for which deals to monitor. Leave the Object ID field empty to monitor all deals. Set the Properties field to include 'dealstage,dealname,amount,closedate' so these values are available in your flow. The trigger will fire for any deal update, so we'll filter for stage changes in the next step.
- 1Leave Object ID blank
- 2In Properties field, enter 'dealstage,dealname,amount,closedate'
- 3Leave other fields at default settings
- 4Click outside the box to save settings
+New step > Control > Condition
Add condition to filter stage changes
Click +New step below the trigger. Search for 'Condition' in the control actions. Select the Condition control to add filtering logic. We need to check if the dealstage property actually changed, not just any deal property. In the left side of the condition, click Choose a value and select 'dealstage' from the dynamic content.
- 1Click +New step below the HubSpot trigger
- 2Search for 'Condition' in the actions
- 3Select Condition from Control actions
- 4Click the left Choose a value box
- 5Select 'dealstage' from dynamic content
Condition > Configure comparison
Configure stage change condition
Set the condition operator to 'is not equal to' and leave the right side empty for now. This basic condition ensures the flow continues when dealstage has a value. For more precise filtering, you could specify exact stages like 'Qualified' or 'Proposal', but monitoring all stage changes is usually more useful for sales teams.
- 1Set the middle dropdown to 'is not equal to'
- 2Leave the right value box empty
- 3This creates a 'not null' check for dealstage
Condition > If yes > Add an action > Slack > Post message
Add Slack connection
In the 'If yes' branch of the condition, click Add an action. Search for 'Slack' and select the Slack connector. Choose 'Post message' as your action. You'll need to authenticate with your Slack workspace and grant permissions for Power Automate to post messages on your behalf.
- 1Click Add an action in the 'If yes' branch
- 2Search for 'Slack' in connectors
- 3Select the Slack connector
- 4Choose 'Post message' action
- 5Authorize Power Automate access to your Slack workspace
Post message > Configure channel and message
Configure Slack message details
Select your target channel from the Channel dropdown - typically something like #sales or #deals. In the Message field, build your notification text using dynamic content from HubSpot. Include deal name, stage, amount, and owner information to make alerts actionable for your team.
- 1Select your channel from the Channel dropdown
- 2Click in the Message field
- 3Add dynamic content: Deal name, stage, amount
- 4Format with emojis or formatting for readability
Post message > Message content formatting
Format notification message
Create a clear, scannable message format. Include the deal name, new stage, dollar amount, and next steps. Use Slack formatting like bold text with asterisks or line breaks for readability. Consider adding the HubSpot deal URL so team members can click through directly from Slack.
- 1Type a template like: '*Deal Update:* [Deal Name]'
- 2Add line break and stage info
- 3Include amount with currency formatting
- 4Add HubSpot deal URL if available in dynamic content
Flow header > Save > Test > Manual test
Test the flow
Click Save in the top right, then Test in the header menu. Choose 'I'll perform the trigger action' to test with real data. Go to HubSpot and move a test deal to a different stage. Return to Power Automate within 2-3 minutes to see if the flow triggered successfully.
- 1Click Save in the top menu
- 2Click Test next to the Save button
- 3Select 'I'll perform the trigger action'
- 4Click Save & Test
- 5Go update a deal stage in HubSpot
Flow header > Turn on
Enable flow for production
Once testing succeeds, click Turn on in the flow header to activate it for all future deal updates. Monitor the flow for the first few days to ensure message formatting looks correct and you're not getting too much noise. You can adjust the condition logic or message content anytime by editing the flow.
- 1Click Turn on in the flow header
- 2Confirm activation in the popup
- 3Monitor #sales channel for incoming notifications
- 4Edit flow if message formatting needs adjustment
Use Power Automate expressions to format currency and resolve owner names. Add this expression in the Message field to properly format deal amounts and create clean notifications.
JavaScript — Code StepformatNumber(div(outputs('When_a_deal_is_updated')?['body/amount'], 1), 'C')▸ Show code
formatNumber(div(outputs('When_a_deal_is_updated')?['body/amount'], 1), 'C')
// For owner name resolution, add this before Slack step:
concat('https://api.hubapi.com/owners/v2/owners/', outputs('When_a_deal_is_updated')?['body/hubspot_owner_id'])... expand to see full code
formatNumber(div(outputs('When_a_deal_is_updated')?['body/amount'], 1), 'C')
// For owner name resolution, add this before Slack step:
concat('https://api.hubapi.com/owners/v2/owners/', outputs('When_a_deal_is_updated')?['body/hubspot_owner_id'])
// Clean stage formatting:
replace(outputs('When_a_deal_is_updated')?['body/dealstage'], '_', ' ')
// Deal URL construction:
concat('https://app.hubspot.com/contacts/', variables('portal_id'), '/deal/', outputs('When_a_deal_is_updated')?['body/hs_object_id'])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 Microsoft Power Automate for this if your team lives in the Microsoft ecosystem and you need basic deal notifications without complex logic. The HubSpot connector handles authentication cleanly and the flow designer is more intuitive than Zapier for non-technical users. Skip it if you need advanced filtering or custom message formatting - Make handles conditional logic better.
At 50 deal updates per month, you'll use about 50 Power Automate runs. Most business plans include 2,000+ runs monthly, so cost is rarely an issue. Zapier charges $20/month for the same volume on their Professional plan. Make offers 1,000 operations free, then $9/month. Power Automate wins on cost if you already have Microsoft 365.
Make beats Power Automate for complex deal routing with its visual scenario builder and better HubSpot data parsing. Zapier's formatter tools handle currency and date formatting more elegantly than Power Automate expressions. N8n gives you complete control over the notification logic with custom JavaScript, while Pipedream excels at owner name resolution via API calls. But Power Automate's strength is simplicity - the flow works in 10 minutes without learning new syntax.
You'll hit three main issues after going live. HubSpot owner IDs come through as numbers, not names, so your first notifications will show user ID 52847291 instead of Sarah Johnson. The webhook delay averages 2-3 minutes, not instant like you'd expect. And bulk deal imports will flood your Slack channel - 50 updated deals means 50 individual notifications hitting within minutes of each other.
Ideas for what to build next
- →Add owner name resolution — Create a lookup step to convert HubSpot owner IDs into actual names and Slack user mentions for better notifications.
- →Build stage-specific routing — Route different deal stages to different Slack channels - send early-stage deals to #leads and late-stage to #closing.
- →Create deal value thresholds — Add conditions to only notify on deals above certain dollar amounts, or format high-value deals with special formatting and @channel mentions.
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