

How to Post Lost Deal Alerts to Slack with Make
When a deal is marked Lost in Zoho CRM, Make instantly posts the deal name, loss reason, and competitor to a Slack management channel.
Steps and UI details are based on platform versions at time of writing — check each platform for the latest interface.
Best for
Sales managers at 5-50 person teams who need instant visibility into lost deals without checking Zoho CRM manually
Not ideal for
Teams running weekly pipeline reviews — a scheduled digest via n8n or Make's aggregator is cleaner than per-deal pings
Sync type
real-timeUse case type
notificationReal-World Example
A 12-person SaaS sales team posts every lost deal to #revenue-alerts in Slack with the loss reason and the competitor who won the deal. Before this, the VP of Sales found out about lost deals during Friday pipeline reviews — sometimes 5 days after the deal closed. Now the team can follow up on competitive losses within hours and flag patterns like 'we lost 4 deals to Competitor X this week on pricing.'
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 Make
Copy the pre-built Make blueprint and paste it straight into Make. 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 | Deal_Name | |
| Stage | Stage | |
| Loss Reason | Loss_Reason | |
| Amount | Amount | |
| Deal Owner | Owner | |
3 optional fields▸ show
| Competitor | Competitor |
| Account Name | Account_Name |
| Close Date | Closing_Date |
Step-by-Step Setup
make.com > Scenarios > Create a new scenario
Create a new Make scenario
Log into Make at make.com and click the blue 'Create a new scenario' button in the top right of your Scenarios dashboard. You'll land on the visual scenario canvas — a dark grid where you drag and connect modules. Click the large '+' circle in the center of the canvas to open the app picker. Search for 'Zoho CRM' and select it.
- 1Click 'Create a new scenario' in the top right
- 2Click the large '+' circle on the canvas
- 3Type 'Zoho CRM' in the search box
- 4Click 'Zoho CRM' from the results
Canvas > Zoho CRM > Watch Records
Set Zoho CRM webhook trigger
From the Zoho CRM module list, select 'Watch Records' — this is the webhook-based trigger that fires the moment a record changes in Zoho. You'll be prompted to connect your Zoho CRM account or select an existing connection. Once connected, set the Module to 'Deals'. Leave the trigger type as 'Watch Records (Instant)' to ensure real-time delivery rather than polling.
- 1Select 'Watch Records' from the Zoho CRM trigger list
- 2Click 'Add' next to the Connection field to authorize Zoho CRM
- 3Complete the Zoho OAuth flow in the popup window
- 4Set the 'Module' dropdown to 'Deals'
- 5Confirm 'Trigger Type' is set to 'Watch Records (Instant)'
Zoho CRM > Setup > Automation > Webhooks
Register the webhook in Zoho CRM
Copy the webhook URL shown in the Make module. In a new browser tab, open your Zoho CRM account and navigate to Setup > Automation > Webhooks. Click 'New Webhook', paste the Make URL into the Notify URL field, and set the method to POST. Under 'Parameters', add the fields you want Make to receive: Deal Name, Stage, Loss Reason, Competitor, Deal Amount, and Owner. Save the webhook, then create a Workflow Rule in Zoho (Setup > Automation > Workflow Rules) that fires this webhook when Stage changes to 'Lost'.
- 1Copy the webhook URL from the Make module panel
- 2In Zoho CRM, go to Setup > Automation > Webhooks
- 3Click 'New Webhook' and paste the URL into the 'Notify URL' field
- 4Set method to POST and add Deal Name, Stage, Loss Reason, Competitor, Amount, Owner as parameters
- 5Save the webhook, then go to Setup > Automation > Workflow Rules
- 6Create a new Workflow Rule for Deals triggered on 'Edit', with condition Stage equals 'Lost', and attach the webhook as the action
Canvas > Run once button (bottom left)
Test the trigger with a sample deal
Back in Make, click 'Run once' at the bottom of the scenario canvas to put the scenario in listening mode. Switch to Zoho CRM, open any test deal, change the Stage field to 'Lost', fill in a Loss Reason and Competitor, and save the record. Return to Make within 30 seconds — you should see a data bubble appear on the trigger module showing the incoming payload.
- 1Click 'Run once' in Make to start listening
- 2In Zoho CRM, open a test deal
- 3Set Stage to 'Lost', fill in Loss Reason and Competitor fields, click Save
- 4Return to Make and watch for the data bubble to appear on the trigger module
- 5Click the bubble to inspect the incoming data structure
Canvas > Right-click trigger module > Add Router
Add a Router for conditional routing
Click the small wrench icon to the right of the trigger module, then click 'Add a router'. A Router module appears with two empty branches. This lets you send high-value lost deals to a different channel — for example, deals over $20,000 to #exec-alerts and all others to #sales-losses. If you only need one channel, you can skip the router and connect directly to Slack, but the router adds almost no complexity and future-proofs the scenario.
- 1Right-click (or hover and click the dot-menu) on the Zoho CRM trigger module
- 2Select 'Add a router'
- 3Click the first router branch to open its filter settings
- 4Set filter: Deal Amount greater than 20000
- 5Leave the second branch with no filter (catches everything else)
Canvas > Router Branch 1 > + > Slack > Create a Message
Add Slack module to the high-value branch
Click the '+' at the end of the first router branch (high-value deals). Search for 'Slack' and select it. Choose the 'Create a Message' action. Connect your Slack account via OAuth — you'll need to authorize Make's Slack app in your workspace. Set the Channel to your management channel (e.g., #exec-alerts). This branch handles deals above your threshold with elevated visibility.
- 1Click '+' at the end of the first router branch
- 2Search for 'Slack' and select it
- 3Choose 'Create a Message'
- 4Click 'Add' next to Connection and authorize Slack via OAuth
- 5Set Channel to '#exec-alerts' (or type the channel ID directly)
Slack module > Text field > Variable picker
Build the Slack message for high-value losses
In the Slack 'Create a Message' module, click into the 'Text' field. Use Make's variable picker (the small rectangle icon) to pull in deal fields from the Zoho CRM trigger. Build a message that includes deal name, amount, loss reason, competitor, and deal owner. Use Slack's mrkdwn formatting — bold with *asterisks*, newlines with actual line breaks in the field. A clear, structured message takes less than 2 minutes to read and act on.
- 1Click into the 'Text' field in the Slack module
- 2Type ':red_circle: *Lost Deal Alert* (High Value)'
- 3Press Enter, then use the variable picker to insert Deal_Name
- 4Add each field on its own line: Amount, Loss Reason, Competitor, Owner
- 5Set 'Bot Name' to 'CRM Bot' and optionally add an emoji icon
📬 New entry: {{1.name}}
Email: {{1.email}}
Details: {{1.description}}Canvas > Router Branch 2 > + > Slack > Create a Message
Add Slack module to the standard branch
Click the '+' at the end of the second router branch (all other lost deals). Add another Slack 'Create a Message' module. Reuse the same Slack connection. Set the channel to #sales-losses or your standard sales notification channel. The message structure can be identical to branch 1, or you can simplify it — standard losses don't need the same urgency formatting.
- 1Click '+' at the end of the second router branch
- 2Select Slack > Create a Message
- 3Choose the same Slack connection from the dropdown
- 4Set Channel to '#sales-losses'
- 5Build the message text using the same variable tokens as branch 1
Slack module > Right-click > Add error handler > Ignore
Add error handling to the scenario
Click the small wrench icon on each Slack module and select 'Add error handler'. Choose the 'Ignore' handler for now — this prevents one failed Slack post from breaking the entire scenario. For production, consider adding a second Slack module in the error handler that pings a #make-errors channel with the raw error text. Right-click anywhere on the canvas and enable 'Auto-commit' to make sure partial successes are saved.
- 1Right-click the first Slack module on the canvas
- 2Select 'Add error handler'
- 3Choose 'Ignore' from the handler type list
- 4Repeat for the second Slack module
- 5Right-click the canvas background and confirm 'Auto-commit' is enabled
Canvas > Run once > Execution History
Test end-to-end with a real deal
Click 'Run once' in Make, then go to Zoho CRM and mark a real test deal as Lost with populated Loss Reason and Competitor fields. Watch Make's execution log — the green checkmarks on each module confirm successful data flow. Check both Slack channels to confirm the message posted correctly. Verify the deal amount routing worked by testing one deal above and one below your threshold.
- 1Click 'Run once' to start listening
- 2In Zoho CRM, open a test deal worth more than $20,000 and mark it Lost
- 3Check Make's execution log for green checkmarks on all modules
- 4Verify the message posted to #exec-alerts
- 5Repeat with a deal under $20,000 and verify it posts to #sales-losses
Canvas > Toggle (bottom left) > Scenario Settings > Gear icon
Activate the scenario
Click the toggle in the bottom left of the canvas to switch the scenario from OFF to ON. Make will now run this scenario automatically whenever Zoho CRM sends a webhook. Set the scenario name to something descriptive like 'Zoho Lost Deal → Slack Alert' by clicking the name at the top of the canvas. Check the Scenario Settings (gear icon) and confirm the maximum number of cycles is set to 1 — this is a per-record trigger and should process one deal per execution.
- 1Click the ON/OFF toggle at the bottom left of the canvas
- 2Confirm the toggle turns blue and shows 'ON'
- 3Click the scenario name at the top and rename it to 'Zoho Lost Deal → Slack Alert'
- 4Click the gear icon > confirm Max Cycles = 1
- 5Click Save
Paste this formula into a Make 'Set Variable' module placed between the Router and the Slack modules. It generates a formatted amount string and a severity label based on deal size, so your Slack message shows '$28,500 — HIGH VALUE' instead of a raw number. Add a Set Variable module, name it 'Format Deal Data', and paste the expressions into two separate variable fields named formatted_amount and severity_label.
JavaScript — Custom Function// Variable 1: formatted_amount▸ Show code
// Variable 1: formatted_amount // Paste into a Set Variable module → Variable Value field if(
... expand to see full code
// Variable 1: formatted_amount
// Paste into a Set Variable module → Variable Value field
if(
{{1.Amount}} >= 1000,
join(
["$", formatNumber({{1.Amount}}, 2, ".", ",")],
""
),
join(["$", {{1.Amount}}], "")
)
// Variable 2: severity_label
// Add a second variable in the same Set Variable module
if(
toNumber({{1.Amount}}) >= 20000,
"🔴 HIGH VALUE",
if(
toNumber({{1.Amount}}) >= 5000,
"🟡 MID-TIER",
"⚪ STANDARD"
)
)
// Variable 3: loss_summary
// Combines reason + competitor into one clean line for the Slack message
if(
{{1.Competitor}} != "",
join([{{1.Loss_Reason}}, " (Lost to ", {{1.Competitor}}, ")"], ""),
{{1.Loss_Reason}}
)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 Make for this if your team wants conditional routing logic without writing code. The visual Router module lets you send $50K+ deals to an exec channel and smaller losses to a general sales channel — that's two Slack posts with different content, built in under 10 minutes. Make also handles Zoho CRM's webhook format cleanly out of the box, while platforms like Zapier require you to parse Zoho's nested payload manually. One scenario where you'd skip Make: if your team already lives in n8n and has engineers maintaining it — n8n's code nodes give you more control over payload transformation for the same zero-per-run cost.
The math here is straightforward. Each scenario run consumes 3-4 Make operations: 1 for the Zoho trigger, 1 for the router, 1-2 for the Slack post. At 100 lost deals per month, that's 400 operations — well within Make's free tier (1,000 ops/month). At 300 deals/month you'll use 1,200 operations and need the Core plan at $9/month. Zapier charges per task: the same 300 deals/month costs $29/month on Zapier's Starter plan (2-step Zaps at $0.05-0.10/task equivalent). Make is cheaper by $20/month at that volume, and cheaper by more as volume grows.
Zapier's Zoho CRM integration has one edge here: its 'Updated Deal' trigger is pre-configured and doesn't require you to manually register a webhook in Zoho — Zapier handles that registration automatically, saving about 10 minutes of setup. n8n's Zoho CRM node lets you write a JavaScript filter directly on the incoming payload (e.g., filter for Stage === 'Lost' AND Amount > threshold in one expression) without needing a separate Router module. Power Automate connects natively to Microsoft Teams, not Slack — if your company uses Teams for management comms, Power Automate beats Make for this use case with no translation layer needed. Pipedream gives you a real-time webhook listener with Node.js code steps and costs nothing for low-volume runs. Make is still the right call for most sales teams because the Router + Slack modules are visual, non-engineers can maintain them, and the Zoho integration handles OAuth without API key management.
Three things you'll hit post-launch. First, Zoho's custom field API names don't always match the display names — 'Loss Reason' might be Loss_Reason_1 or a GUID-based name if it was created by a third-party Zoho integration. Check Setup > Customization > Modules > Deals > Fields and look at the 'API Name' column before building. Second, if your Zoho org has multiple sales pipelines, each pipeline may have its own Stage picklist, and 'Lost' in Pipeline A might be 'Closed Lost' in Pipeline B — your Zoho Workflow Rule needs to cover both, or you'll miss deals from one pipeline entirely. Third, Make's free tier pauses scenarios that haven't run in 30 days. If your team has a slow month with zero lost deals, the scenario goes dormant and needs manual reactivation — set a calendar reminder to test it monthly with a dummy deal.
Ideas for what to build next
- →Log lost deals to a Google Sheet for trend analysis — Add a Google Sheets module as a second action after the Slack post. Each lost deal appends a row with date, competitor, reason, amount, and owner — giving you a queryable dataset to spot competitive patterns over time.
- →Create a Zoho CRM task for the deal owner to follow up — Add a second Zoho CRM module after the Slack post that creates a follow-up task assigned to the deal owner. Set the due date 2 days out with a note referencing the loss reason — keeps the learning loop closed without manual work.
- →Build a weekly competitive loss digest — Create a separate Make scenario with a Scheduled trigger (every Monday 8 AM) that queries Zoho CRM for all deals lost in the past 7 days, aggregates them by competitor using Make's Array Aggregator module, and posts a summary table to #exec-alerts. This pairs well with the real-time alert and gives leadership a weekly pattern view.
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