

How to Send Closed-Won Deal Alerts to Slack with N8n
Automatically post deal celebrations to Slack when Salesforce opportunities close with deal value, rep name, and account details.
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
Teams with technical resources who want instant notifications and custom message formatting for closed deals.
Not ideal for
Non-technical teams who need quick setup without learning expression syntax or JSON field mapping.
Sync type
real-timeUse case type
notificationReal-World Example
A 25-person B2B software company uses this to celebrate every closed deal in their #sales-wins channel within seconds of stage changes. Before automation, their sales manager manually checked Salesforce reports twice daily and posted celebrations hours later. Now reps get instant recognition, and the team sees deal momentum in real-time during busy quarters.
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 n8n
Copy the pre-built n8n blueprint and paste it straight into n8n. 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 Name | Name | |
| Deal Amount | Amount | |
| Sales Rep | Owner.Name | |
| Account Name | Account.Name | |
| Sales Stage | StageName | |
1 optional field▸ show
| Close Date | CloseDate |
Step-by-Step Setup
Workflows > New Workflow
Create new workflow
Start with a blank N8n workflow. You'll build a two-node automation that triggers on Salesforce deal updates and posts formatted messages to Slack.
- 1Click 'New Workflow' from your N8n dashboard
- 2Delete the default manual trigger node
- 3Click the '+' button to add your first node
Add Node > Salesforce > Trigger
Add Salesforce trigger node
Configure the Salesforce node to monitor opportunity changes. This webhook-based trigger fires instantly when deals update in Salesforce.
- 1Search for 'Salesforce' and select it
- 2Choose 'Trigger' from the operation dropdown
- 3Select 'On Record Update' as the trigger type
- 4Set Object Type to 'Opportunity'
Node Settings > Credentials > Create New
Connect Salesforce credentials
N8n needs OAuth access to your Salesforce org. This creates a webhook that Salesforce will ping when opportunities change.
- 1Click 'Create New' next to Credentials
- 2Enter your Salesforce username and password
- 3Add your security token after the password
- 4Test the connection and save
Salesforce Node > Conditions
Configure stage filter
Add a condition to only trigger on closed-won deals. Without this filter, every opportunity update floods your Slack channel.
- 1Scroll to 'Conditions' in the Salesforce node
- 2Click 'Add Condition'
- 3Set Field to 'StageName'
- 4Set Operator to 'Equal' and Value to 'Closed Won'
Salesforce Node > Test
Test Salesforce connection
Verify the trigger works by updating a test opportunity to Closed Won. This populates N8n with real field data for mapping.
- 1Click 'Listen for Test Event' in the node
- 2Switch to Salesforce and update an opportunity stage to 'Closed Won'
- 3Return to N8n and check for the received data
- 4Click 'Use This Event' to save the sample
Add Node > Slack > Send Message
Add Slack node
Connect the Slack node to post messages. Configure it to send formatted celebration messages to your wins channel.
- 1Click the '+' after the Salesforce node
- 2Search for and select 'Slack'
- 3Choose 'Send Message' operation
- 4Set Channel to '#wins' or your celebration channel
Slack Node > Credentials > Create New
Connect Slack credentials
Add your Slack app credentials. You need a bot token with chat:write permissions to post messages.
- 1Click 'Create New' for Slack credentials
- 2Paste your Bot OAuth Token starting with 'xoxb-'
- 3Test the connection
- 4Save the credential
Slack Node > Message
Build celebration message
Create the Slack message template using Salesforce data. Include deal details that make celebrations meaningful for your team.
- 1Click in the Message field
- 2Type ':tada: New deal closed! :tada:'
- 3Add a new line and click 'Add Expression'
- 4Build: 'Deal: {{ $node["Salesforce"].json["Name"] }}'
Slack Node > Message
Add deal value and rep info
Complete the message with financial details and rep recognition. Format the amount as currency for better readability.
- 1Add new line: 'Value: ${{ $node["Salesforce"].json["Amount"] }}'
- 2Add: 'Rep: {{ $node["Salesforce"].json["Owner"]["Name"] }}'
- 3Add: 'Account: {{ $node["Salesforce"].json["Account"]["Name"] }}'
Workflow > Test
Test the complete workflow
Run an end-to-end test using your sample data. Verify the Slack message appears correctly formatted in your channel.
- 1Click 'Test workflow' button in the top toolbar
- 2Check your #wins Slack channel for the test message
- 3Verify all fields populated correctly
- 4Click 'Save' to store the workflow
Workflow > Activate
Activate the workflow
Turn on the automation to start monitoring live Salesforce changes. The workflow runs continuously once activated.
- 1Click the toggle switch in the top right
- 2Confirm activation in the popup
- 3Verify status shows 'Active' with green indicator
Drop this into an n8n Code node.
Copy this template{{ $node['Salesforce'].json['Amount'] ? '$' + parseFloat($node['Salesforce'].json['Amount']).toLocaleString() : 'Amount TBD' }}▸ Show code
{{ $node['Salesforce'].json['Amount'] ? '$' + parseFloat($node['Salesforce'].json['Amount']).toLocaleString() : 'Amount TBD' }}... expand to see full code
{{ $node['Salesforce'].json['Amount'] ? '$' + parseFloat($node['Salesforce'].json['Amount']).toLocaleString() : 'Amount TBD' }}Scaling Beyond 100+ deals closed per month+ Records
If your volume exceeds 100+ deals closed per month records, apply these adjustments.
Batch Slack messages
Use N8n's merge node to collect multiple deals and post a single summary message every 5 minutes instead of individual celebrations. This prevents channel flooding during busy periods.
Add execution monitoring
Set up N8n's webhook node to ping your monitoring tool when executions exceed normal volume. Bulk Salesforce imports can trigger thousands of webhooks if not filtered properly.
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 N8n for this if you want complete control over message formatting and have technical team members who can handle JSON expressions. N8n's code nodes let you build complex conditional logic — like different celebration messages for different deal sizes or posting to team-specific channels based on opportunity owner. The webhook trigger fires instantly when deals close, unlike polling-based solutions. Skip N8n if you need this running tomorrow with zero technical setup — Zapier gets you live in 10 minutes.
This workflow consumes 1 execution per qualified opportunity update. At 50 deals closed monthly, that's 50 executions total. N8n's Starter plan at $20/month includes 5,000 executions, so you're using 1% of your quota. Zapier's Professional plan costs $49/month for the same volume with webhook triggers. Make charges $10.59/month for 1,000 operations. N8n wins on cost unless you're only closing 5-10 deals monthly — then Zapier's free tier works.
Zapier handles Salesforce relationship fields better out of the box — their UI shows Owner.Name as a dropdown option instead of requiring bracket syntax. Make's visual flow builder makes it easier for non-technical team members to modify message templates without touching code expressions. But N8n's JavaScript code nodes give you preprocessing power that neither competitor matches — calculate commission amounts, lookup additional Salesforce data, or route messages based on complex business rules.
Salesforce's webhook delivery isn't guaranteed during high API usage periods — you might miss celebrations during month-end bulk operations. The Amount field returns as a string, so currency formatting requires additional expressions like {{ parseFloat($node['Salesforce'].json['Amount']).toLocaleString() }}. Opportunity Owner relationships sometimes return null for converted or transferred deals, breaking your celebrations until you add null checks to every field reference.
Ideas for what to build next
- →Add commission calculations — Use N8n's code node to calculate rep commission based on deal amount and post both celebration and commission info to Slack.
- →Create monthly win summaries — Build a scheduled workflow that queries closed deals from the past month and posts a formatted summary to your leadership channel.
- →Sync celebrations to Google Sheets — Add a Google Sheets node to log every celebration with timestamp, deal details, and team metrics for monthly 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