

How to Send Pipedrive Deal Stage Alerts to Slack with Power Automate
Automatically posts a Slack channel message whenever a deal moves to a new pipeline stage in Pipedrive, including deal name, owner, value, and new stage.
Steps and UI details are based on platform versions at time of writing — check each platform for the latest interface.
Best for
Microsoft 365 sales teams who already use Power Automate and need deal stage alerts in Slack without buying another automation tool.
Not ideal for
Teams that need sub-60-second alert latency — Power Automate polls Pipedrive every 1-5 minutes, so use Make or Zapier if speed is critical.
Sync type
real-timeUse case type
notificationReal-World Example
A 20-person B2B SaaS sales team routes deal stage changes to stage-specific Slack channels: #deals-qualified, #deals-proposal, and #deals-closed-won. Before this flow, reps updated a shared Google Sheet manually and managers checked Pipedrive twice a day — stage changes sat unnoticed for 3-4 hours on average. After setup, the Slack message fires within 3 minutes of a stage change and tags the deal owner by name.
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 | ||
| Deal ID | id | |
| Deal Title | title | |
| Stage Name | stage_name | |
| Previous Stage ID | previous_stage_id | |
| Deal Owner Name | owner_name.name | |
5 optional fields▸ show
| Deal Value | value |
| Currency | currency |
| Pipeline Name | pipeline_name |
| Expected Close Date | expected_close_date |
| Deal Update Time | update_time |
Step-by-Step Setup
make.powerautomate.com > My flows > + New flow > Automated cloud flow
Open Power Automate and create a new Automated cloud flow
Go to make.powerautomate.com and sign in with your Microsoft 365 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 flow type that fires on an external event rather than a schedule. Give the flow a clear name like 'Pipedrive Stage Change → Slack'.
- 1Click 'My flows' in the left sidebar
- 2Click '+ New flow' in the top-left area
- 3Select 'Automated cloud flow'
- 4Type a flow name: 'Pipedrive Stage Change → Slack'
- 5Click 'Skip' on the trigger picker — you'll set it manually in the next step
Flow canvas > Trigger block > Search: Pipedrive > When a deal is updated
Add the Pipedrive 'Watch Deals' trigger
Click the empty trigger block on the canvas. In the search bar type 'Pipedrive' and select the Pipedrive connector from the results. Choose the trigger named 'When a deal is updated' — this fires whenever any field on a deal changes, including stage. Power Automate will poll Pipedrive every 1-5 minutes depending on your plan.
- 1Click the empty trigger block
- 2Type 'Pipedrive' in the connector search bar
- 3Click the Pipedrive connector icon
- 4Select 'When a deal is updated' from the trigger list
Trigger block > Connection > + Add new connection
Authenticate the Pipedrive connection
In the trigger block's Connection dropdown, click '+ Add new connection'. A sign-in window will open asking for your Pipedrive API token. Find your token in Pipedrive under Settings > Personal preferences > API. Paste it into the Power Automate prompt and click 'Create'. The connection will appear in the dropdown by the email address tied to your Pipedrive account.
- 1Click the 'Connection' dropdown inside the trigger block
- 2Click '+ Add new connection'
- 3In Pipedrive, go to Settings > Personal preferences > API and copy your API token
- 4Paste the token into the Power Automate authentication prompt
- 5Click 'Create' to save the connection
Flow canvas > + New step > Search: Pipedrive > Get a deal
Add a 'Get a deal' action to fetch full deal details
The 'When a deal is updated' trigger payload contains the deal ID and updated fields, but it does not always return the human-readable stage name — just the stage ID integer. Add a Pipedrive 'Get a deal' action immediately after the trigger to pull the full deal record by ID. This gives you access to the stage name, owner name, deal value, currency, and pipeline name for use in the Slack message.
- 1Click '+ New step' below the trigger block
- 2Search for 'Pipedrive' in the action search bar
- 3Select 'Get a deal'
- 4In the 'Deal ID' field, click inside the input box and select 'id' from the dynamic content panel on the right
Flow canvas > + New step > Control > Condition
Add a Condition to filter only stage changes
Because the trigger fires on any deal update, you need a Condition action to check whether the stage actually changed. Click '+ New step' and search for 'Condition'. In the left value field, insert the dynamic content field 'stage_id' from the trigger output. Set the operator to 'is not equal to' and in the right field insert the expression triggerOutputs()?['body/previous_stage_id'] — this compares the new stage ID against the stage before the update. Only the 'If yes' branch will proceed to send the Slack message.
- 1Click '+ New step'
- 2Search for 'Condition' and select it from the Control category
- 3Click the left value field and select 'stage_id' from dynamic content (trigger output)
- 4Set the middle dropdown to 'is not equal to'
- 5Click the right value field, switch to 'Expression' tab, and enter: triggerOutputs()?['body/previous_stage_id']
- 6Click 'OK' to save the expression
Condition > If yes > Add an action > Search: Slack > + Add new connection
Authenticate the Slack connection
Inside the 'If yes' branch of the Condition, click 'Add an action'. Search for 'Slack' and select the Slack connector. You'll be prompted to create a new Slack connection — click '+ Add new connection' and sign in with your Slack workspace credentials. Power Automate uses OAuth for Slack, so a browser popup will open asking you to authorize the bot. Make sure you authorize it on the correct workspace.
- 1Click 'Add an action' inside the 'If yes' branch
- 2Search for 'Slack' in the action search bar
- 3Select the Slack connector
- 4Click '+ Add new connection'
- 5Sign in via the OAuth popup and select the correct Slack workspace
- 6Click 'Allow' to grant Power Automate posting permissions
If yes branch > Post message (Slack) > Channel + Message Text
Configure the 'Post message' Slack action
Select the 'Post message' action from the Slack connector. In the 'Channel' dropdown, choose the Slack channel where stage notifications should appear (e.g., #deals-pipeline). In the 'Message Text' field, compose the notification using dynamic content from the 'Get a deal' action. Build a message like: '🏆 Deal update: [title] moved to [stage_name] | Owner: [owner_name.name] | Value: [value] [currency]'. Keep the message under 300 characters so it renders cleanly on mobile.
- 1Select 'Post message' from the Slack action list
- 2Click the 'Channel' dropdown and pick your target Slack channel (e.g., #deals-pipeline)
- 3Click inside 'Message Text' and type the message template
- 4Use the dynamic content panel to insert: 'title', 'stage_name', 'owner_name.name', 'value', 'currency' from the 'Get a deal' output
- 5Optionally add a link: append 'View deal: https://app.pipedrive.com/deal/' followed by the dynamic 'id' field
channel: {{channel}}
ts: {{ts}}
If yes branch > Add an action > Control > Switch
Add stage-based channel routing with a Switch action (optional but recommended)
If you want different pipeline stages to post to different Slack channels — for example, 'Qualified' posts to #deals-qualified and 'Closed Won' posts to #wins — replace the single Slack action with a Switch control action. Set the Switch's 'On' value to the dynamic 'stage_name' field from the 'Get a deal' output. Add a Case for each stage name (exact string match) and put a separate 'Post message' action inside each case pointing to the correct channel.
- 1Delete the single 'Post message' action if you already added it
- 2Click 'Add an action' inside the 'If yes' branch
- 3Search for 'Switch' and select it from the Control category
- 4In the 'On' field, insert the dynamic 'stage_name' value from 'Get a deal'
- 5Click '+ Add Case' and type the exact stage name (e.g., 'Qualified')
- 6Add a 'Post message' Slack action inside each case targeting the correct channel
Flow canvas > Save > Test > Manually
Test the flow with a live deal update
Click 'Save' in the top-right of the canvas, then click 'Test' (also top-right) and select 'Manually' to run a test. Go to Pipedrive and move an existing deal to a different stage. Return to Power Automate and wait up to 5 minutes for the polling interval to pick up the change. The test panel will show each action turning green as it succeeds. Check your Slack channel to confirm the message arrived with the correct deal details.
- 1Click 'Save' in the top-right toolbar
- 2Click 'Test' and choose 'Manually'
- 3Go to Pipedrive and move a deal from one stage to another
- 4Return to Power Automate and wait up to 5 minutes
- 5Click 'Refresh' in the test panel to see run results
My flows > [Flow name] > Run history
Review the run history and enable the flow for production
After a successful test, go to 'My flows' and confirm the flow status shows 'On'. Click into the flow's detail page and check 'Run history' to see the last 28 days of executions. Each row shows a timestamp, duration, and status (Succeeded/Failed). Set up an alert by clicking 'Edit' on the flow and adding a 'Send an email notification' action in the 'If no' branch or inside a Scope action with 'Configure run after' set to 'has failed'.
- 1Navigate to My flows in the left sidebar
- 2Confirm the toggle next to your flow is set to 'On'
- 3Click the flow name to open its detail page
- 4Click 'Run history' to review past executions
- 5Optionally add a failure alert: edit the flow and add an email action with 'Configure run after' > 'has failed'
Paste this expression into the 'Message Text' field of the Slack 'Post message' action using the Expression tab in Power Automate. It formats the deal value with a currency symbol, converts the close date to a readable format, and builds the full Pipedrive deal URL dynamically — replacing three separate dynamic content insertions with one clean expression block.
JavaScript — Code Stepconcat(▸ Show code
concat( '📋 Deal moved: ', triggerOutputs()?['body/title'],
... expand to see full code
concat(
'📋 Deal moved: ',
triggerOutputs()?['body/title'],
' → ',
body('Get_a_deal')?['data']?['stage_name'],
' | Owner: ',
body('Get_a_deal')?['data']?['owner_name']?['name'],
' | Value: $',
string(body('Get_a_deal')?['data']?['value']),
' ',
body('Get_a_deal')?['data']?['currency'],
' | Close: ',
formatDateTime(body('Get_a_deal')?['data']?['expected_close_date'], 'MMM d yyyy'),
' | View: https://app.pipedrive.com/deal/',
string(triggerOutputs()?['body/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 Power Automate for this if your team already pays for Microsoft 365 — the Pipedrive and Slack connectors are included at no extra cost, and setup takes about 30 minutes. It's also the right call if your IT department mandates staying inside the Microsoft ecosystem for compliance reasons. The one scenario where you'd pick something else: if your sales team moves more than 50 deals per day and needs alerts in under 60 seconds, Power Automate's polling model will frustrate you — Make or Zapier both support Pipedrive webhooks that fire in under 15 seconds.
On cost: the Power Automate free plan gives you 750 flow runs per month. Each deal update that triggers the flow counts as one run — so at 25 deal updates per day you'll hit the ceiling in 30 days and the flow suspends. The per-user paid plan is $15/month and removes the run cap for most teams. For comparison, Zapier's Starter plan at $19.99/month gives you 750 tasks — roughly the same price for the same volume, except Zapier's Pipedrive trigger is webhook-based, not polling. Make's Core plan at $9/month handles the same workflow with 10,000 operations per month, making it cheaper by $6/month for higher-volume teams.
Here's where the alternatives have an edge on this specific use case. Zapier has a dedicated 'Deal Stage Changed' trigger for Pipedrive — you don't need to write a Condition filter to detect stage changes, it's built in. Make lets you branch by stage inside the router module using visual filters, which is faster to configure than Power Automate's Switch action. n8n gives you full JavaScript inside a Function node if you want to build complex message formatting or conditional logic. Pipedream lets you write async/await code against the Pipedrive and Slack APIs directly, skipping connectors entirely. Power Automate is still the right call if you're in a Microsoft shop — you're not paying for a separate automation tool, and the flow handles a 10-20 person sales team's deal volume without breaking a sweat.
Three things you'll hit after setup. First, Pipedrive stage names are case-sensitive in the Switch routing — if someone renames a stage in Pipedrive from 'Proposal' to 'Proposal Sent', your Switch Case silently stops matching and messages vanish. Build a Slack alert into the Default case so you know when routing breaks. Second, the Power Automate Slack connector posts as a generic 'Power Automate' bot — your team will see an unfamiliar sender name on the first alert and may ignore or report it as spam. Pre-announce the integration in Slack before go-live. Third, the 'Get a deal' action adds a second API call per flow run. At 100 deals updated per day, you're making 200 Pipedrive API calls daily — well within Pipedrive's 100-per-2-second rate limit under normal conditions, but if a bulk import or CSV update touches hundreds of deals simultaneously, you'll see 429 errors in your run history and need to add a Delay action.
Ideas for what to build next
- →Add a daily deal velocity digest to Slack — Build a second Scheduled cloud flow that runs every morning at 8am, queries Pipedrive for all deals updated in the past 24 hours, and posts a summary table to #sales-leadership — so managers get a daily pulse without checking Pipedrive manually.
- →Trigger a congratulatory message thread for Closed Won deals — Add a separate Case in the Switch for 'Closed Won' that posts to #wins with a celebratory message, tags the deal owner's Slack handle using a lookup table, and starts a thread asking them to log lessons learned in Notion or Confluence.
- →Write deal stage changes back to a SharePoint or Excel tracker — After the Slack action, add a SharePoint 'Update item' or Excel 'Update a row' action that logs each stage change with a timestamp — giving managers a searchable audit trail of how long deals spend in each stage without any manual reporting.
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