

How to Send Zoho CRM VIP Case Alerts to Slack with n8n
Fires a Slack alert to your support channel the moment a high-value or VIP account opens a new case in Zoho CRM, using a webhook and n8n to filter and format the message.
Steps and UI details are based on platform versions at time of writing — check each platform for the latest interface.
Best for
Support teams that need to catch high-value customer cases within seconds of creation, without manually watching Zoho CRM.
Not ideal for
Teams on Zoho's free plan — webhook triggers in Zoho CRM require a paid plan (Standard or above).
Sync type
real-timeUse case type
notificationReal-World Example
A 12-person SaaS company manages 200+ active accounts in Zoho CRM and tags enterprise customers with a custom field called 'Account Tier: VIP'. Before this workflow, the on-call support lead checked Zoho manually every hour and VIP cases often sat unacknowledged for 45–90 minutes. Now, the moment a VIP account opens a case, a formatted Slack message lands in #support-vip with the account name, case subject, priority, and a direct link to the record.
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 | ||
| Case ID | id | |
| Case Subject | Subject | |
| Account Name | Account_Name | |
| Case Priority | Priority | |
| Case Status | Status | |
5 optional fields▸ show
| Case Owner | Owner |
| Contact Name | Contact_Name |
| Description | Description |
| Account Tier (custom field) | Account_Tier__c |
| Created Time | Created_Time |
Step-by-Step Setup
n8n Canvas > + Add Node > Trigger > Webhook
Create a Webhook node in n8n
Open your n8n instance and click the '+' button to create a new workflow. Add a Webhook node as the trigger — this is what Zoho CRM will call when a new case is created. Set the HTTP Method to POST. n8n will generate a unique webhook URL once you save; copy it now. Leave Authentication set to None for initial testing — you'll lock this down before going live.
- 1Click '+ Add first step' on the empty canvas
- 2Search for 'Webhook' in the node panel and select it
- 3Set HTTP Method to 'POST'
- 4Set Path to a memorable slug like 'zoho-vip-case'
- 5Click 'Copy Webhook URL' and save it to a notepad
Zoho CRM > Setup > Automation > Workflow Rules > + Create Rule
Create a Workflow Rule in Zoho CRM
In Zoho CRM, navigate to Setup > Automation > Workflow Rules and create a new rule targeting the Cases module. Set the trigger to 'Record Action: Create' so it only fires on new cases. Give the rule a clear name like 'New Case — Webhook to n8n'. You'll add the webhook call in a later sub-step; set the condition first.
- 1Go to Setup (gear icon, top right) > Automation > Workflow Rules
- 2Click '+ Create Rule'
- 3Set Module to 'Cases'
- 4Set 'When' to 'A record is Created'
- 5Name the rule 'New Case — VIP Alert to n8n' and click Next
Zoho CRM > Workflow Rule Wizard > Step 2: Condition
Set the VIP filter condition in Zoho
Add a condition so only VIP or high-value accounts trigger the webhook — otherwise every case floods your Slack channel. In the Condition step, click 'Add Condition'. Filter on the field that marks high-value accounts in your CRM. Common options: 'Account Name contains VIP', a custom picklist field like 'Account Tier equals Enterprise', or 'Contact Role equals Key Decision Maker'. Use the condition that matches how your team actually tags accounts.
- 1Click 'Add Condition' in the Condition step
- 2Set Field to your VIP marker field (e.g., 'Account Tier')
- 3Set Operator to 'equals'
- 4Set Value to 'Enterprise' or 'VIP' depending on your picklist values
- 5Click 'Next' to proceed to Actions
Zoho CRM > Workflow Rule Wizard > Step 3: Actions > Add Action > Webhook
Add the webhook action in Zoho
In the Actions step of the Workflow Rule wizard, click 'Add Action' and choose 'Webhook'. Click 'Configure Webhook' and paste the n8n webhook URL you copied in Step 1. Set Method to POST and Content Type to application/json. In the body, select 'Custom Body' and enter a JSON payload that includes all the case fields you need. Zoho provides merge variables like ${Cases.Subject} to pull live field values into the payload.
- 1Click 'Add Action' and select 'Webhook'
- 2Click '+ New Webhook' or 'Configure Webhook'
- 3Paste the n8n Test Webhook URL into the URL field
- 4Set Method to POST, Content Type to application/json
- 5In the body, click 'Custom Body' and paste your JSON template (see field_mapping section for required fields)
- 6Click 'Save' on the webhook, then 'Save' on the workflow rule
n8n Canvas > Webhook Node > Listen for Test Event
Test the Zoho-to-n8n connection
Back in n8n, click your Webhook node and hit 'Listen for Test Event'. Then in Zoho CRM, manually create a test case on a VIP account to trigger the rule. Within 10–20 seconds, n8n should receive the payload. Check the Input panel on the right side of the Webhook node — you should see the full JSON object from Zoho. Verify all the fields you need (case ID, subject, account name, priority, owner) are present in the payload.
- 1Click the Webhook node in n8n to open its panel
- 2Click 'Listen for Test Event' (blue button)
- 3Switch to Zoho CRM and create a new Case on a VIP account
- 4Return to n8n and confirm the payload appeared in the Input panel
- 5Expand the JSON tree to verify all expected fields are present
n8n Canvas > + Add Node > Core > Code
Add a Code node to filter and format the alert
Add a Code node after the Webhook node. This is where you validate the VIP condition (if you skipped Zoho-side filtering in Step 3) and build the Slack message payload. Use n8n's $input.first().json to access the incoming Zoho data. Write logic to check your VIP field, set a priority color for the Slack attachment, and construct the message text. See the pro_tip_code section for a complete ready-to-paste example.
- 1Click '+' after the Webhook node to add a new node
- 2Search for 'Code' and select it
- 3Set Language to 'JavaScript'
- 4Paste your transformation logic into the editor (see pro_tip_code below)
- 5Click 'Test Step' to verify the output object looks correct
Paste this into the Code node added in Step 6. It reads the Zoho webhook payload, validates the VIP account tier, picks a Slack color based on case priority, truncates the description to 200 characters, formats the created timestamp in human-readable EST, and returns a clean object that the Slack node can consume directly without any extra nodes.
JavaScript — Code Node// n8n Code Node — Zoho CRM VIP Case Alert Formatter▸ Show code
// n8n Code Node — Zoho CRM VIP Case Alert Formatter // Paste into: Code node between Webhook trigger and Slack node const item = $input.first().json;
... expand to see full code
// n8n Code Node — Zoho CRM VIP Case Alert Formatter
// Paste into: Code node between Webhook trigger and Slack node
const item = $input.first().json;
// --- VIP Validation ---
// Remove this block if filtering is already handled in Zoho Workflow Rule conditions
const vipTiers = ['VIP', 'Enterprise', 'Strategic'];
const accountTier = item.Account_Tier__c || '';
if (!vipTiers.includes(accountTier)) {
// Return empty array — n8n will skip downstream nodes silently
return [];
}
// --- Priority Color Mapping ---
const colorMap = {
Critical: '#FF0000', // Red
High: '#FF8C00', // Orange
Normal: '#FFC300', // Yellow
Low: '#36A64F', // Green
};
const color = colorMap[item.Priority] || '#AAAAAA';
// --- Priority Emoji ---
const emojiMap = {
Critical: '🚨',
High: '⚠️',
Normal: 'ℹ️',
Low: '🔵',
};
const emoji = emojiMap[item.Priority] || '📋';
// --- Description Truncation ---
const rawDescription = item.Description || 'No description provided.';
const shortDescription = rawDescription.length > 200
? rawDescription.substring(0, 197) + '...'
: rawDescription;
// --- Timestamp Formatting ---
// Zoho sends ISO 8601 — convert to readable local string
const createdDate = new Date(item.Created_Time);
const formattedDate = createdDate.toLocaleString('en-US', {
timeZone: 'America/New_York',
month: 'short',
day: 'numeric',
hour: 'numeric',
minute: '2-digit',
timeZoneName: 'short',
});
// --- Case URL ---
// Replace YOUR_ORG_ID with your Zoho org ID (found in Zoho CRM URL)
const orgId = 'YOUR_ORG_ID';
const caseUrl = `https://crm.zoho.com/crm/${orgId}/Cases/${item.id}`;
// --- Slack Channel Routing ---
// Route Critical cases to a separate escalation channel
const slackChannel = item.Priority === 'Critical'
? '#support-critical'
: '#support-vip';
// --- Output Object ---
return [{
json: {
slackChannel,
messageText: `${emoji} *${accountTier} Case Alert* — ${item.Account_Name}`,
color,
caseSubject: item.Subject,
priority: item.Priority,
status: item.Status,
owner: item.Owner || 'Unassigned',
contactName: item.Contact_Name || 'Unknown',
description: shortDescription,
createdAt: formattedDate,
caseUrl,
accountName: item.Account_Name,
}
}];
n8n Canvas > Slack Node > Credentials > Create New > Slack OAuth2
Connect your Slack account in n8n
Add a Slack node after the Code node. Click 'Create New Credential' and choose OAuth2. You'll be redirected to Slack's OAuth page — select the workspace and the channel(s) you want the bot to post in. n8n requires a Slack app with at minimum chat:write and chat:write.public scopes. If you don't have a Slack app yet, create one at api.slack.com/apps in under 5 minutes before this step.
- 1Click '+' after the Code node and search for 'Slack'
- 2Select the Slack node and set Resource to 'Message', Operation to 'Send'
- 3Click 'Credential for Slack API' > 'Create New'
- 4Select 'OAuth2' and click 'Connect my account'
- 5Authorize the Slack app in the popup and confirm the green 'Connected' badge appears
n8n Canvas > Slack Node > Parameters
Configure the Slack message fields
In the Slack node, set Channel to the expression pulling from your Code node output — drag from the Input panel or type {{ $json.slackChannel }}. Set Text to {{ $json.messageText }}. Scroll down and enable 'Attachments' to add a colored sidebar (red for critical, orange for high). Map the color and fields from your Code node output. This gives the alert a scannable layout in Slack instead of a wall of text.
- 1Set Channel to {{ $json.slackChannel }} using the expression editor
- 2Set Text to {{ $json.messageText }}
- 3Toggle 'Attachments' on
- 4Set Attachment Color to {{ $json.color }}
- 5Add attachment fields: 'Account' → {{ $json.accountName }}, 'Priority' → {{ $json.priority }}, 'Case URL' → {{ $json.caseUrl }}
n8n Canvas > Slack Node > ⋯ Menu > Add Error Handler
Add an error handler node
Click the three-dot menu on the Slack node and select 'Add Error Handler'. Add a second Slack node connected to the error output, pointing to a different channel like #alerts-errors. This way, if Zoho sends a malformed payload or Slack's API is down, the on-call engineer gets notified instead of the failure disappearing silently. Set the error message text to include {{ $json.message }} so you can see the actual error.
- 1Right-click (or click ⋯) on the Slack node
- 2Select 'Add Error Handler'
- 3A red error connector appears — click '+' on it
- 4Add another Slack node connected to this error output
- 5Set its Channel to '#alerts-errors' and Text to 'VIP case alert failed: {{ $json.message }}'
n8n Canvas > Webhook Node > Production URL | Canvas Top-Right > Active Toggle
Activate the workflow and swap to Production URL
Before activating, go back to your Webhook node and copy the Production URL (not the Test URL — it starts with /webhook/ not /webhook-test/). Update your Zoho CRM webhook configuration to use this Production URL. Then toggle the workflow Active in n8n using the toggle in the top-right corner. Run one more real test in Zoho by creating a VIP case and confirm the Slack message arrives within 15 seconds.
- 1Click the Webhook node and copy the 'Production URL'
- 2Go to Zoho CRM > Setup > Automation > Workflow Rules > your rule > Edit Webhook action
- 3Replace the Test URL with the Production URL
- 4Save the webhook in Zoho
- 5Back in n8n, click the Active toggle (top right) to turn it on — it should turn blue
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 your team is comfortable maintaining a self-hosted instance or you're on n8n Cloud, you need custom filtering logic that goes beyond what Zoho's native conditions support, or you want to route alerts differently based on account owner, region, or case type without paying per-task fees. The one scenario where you'd skip n8n: if your team has zero technical staff and needs this live in 20 minutes — Zapier's Zoho CRM integration with a pre-built Slack step is faster to configure, even if it costs more at scale.
n8n Cloud costs $20/month for the Starter plan covering 2,500 executions. This workflow uses 1 execution per case. At 100 VIP cases per month, that's $20/month flat. Zapier's equivalent setup (Zoho CRM trigger + Filter + Slack action) costs $49.99/month on the Professional plan for the same volume because you need multi-step Zaps. Make sits in between at $9/month for 10,000 operations — each run uses 2-3 operations, so 100 cases costs roughly $0.03 in operations. n8n is cheaper than Zapier by $30/month here and comparable to Make, but Make doesn't require infrastructure management if you're on Make Cloud.
Zapier's Zoho CRM trigger is the most reliable of the three in terms of polling speed — it checks every 1-2 minutes on paid plans and the Zoho integration has been maintained for years with good field coverage. Make's Zoho CRM module supports instant triggers via webhooks and has a cleaner visual filter tool for the VIP condition without needing code. Power Automate has a Zoho CRM connector but it's a premium connector requiring a $15/user/month Power Automate Premium license — absurdly expensive for a single notification workflow. Pipedream offers the same webhook-based approach as n8n with slightly better built-in Slack formatting helpers but less visual debugging. n8n wins here because the Code node gives you full control over message formatting and VIP routing logic in one place, and at 100+ cases/month the per-execution pricing is predictable and low.
Two things you'll hit after setup. First, Zoho's webhook retry behavior is quiet — if your n8n instance has a 2-minute restart window during an update, cases created in that window are permanently missed with no log in Zoho after the retry window closes. Check Zoho's Notification History regularly in the first week. Second, Slack's legacy Attachments format (which n8n's Slack node uses by default) renders fine today but Slack has been nudging developers toward Block Kit for two years. If Slack removes Attachment support, your colored sidebars will break. Build using Blocks from the start if you want the workflow to be durable — it requires using the raw JSON body option in n8n's Slack node, but it takes an extra 15 minutes and saves a future migration headache.
Ideas for what to build next
- →Add a Zoho Case Reply When Slack Thread Gets a Response — Use n8n's Slack trigger to watch for replies in the #support-vip thread and automatically post a note back on the Zoho CRM case. This keeps case history complete without requiring reps to copy-paste Slack updates into Zoho manually.
- →Escalate Unacknowledged VIP Cases After 15 Minutes — Add a Wait node after the Slack alert. If the case status in Zoho hasn't changed from 'Open' after 15 minutes (checked via a Zoho CRM HTTP Request node), fire a second Slack alert tagging the support manager directly. Catches cases that slip through during shift handovers.
- →Build a Daily VIP Case Digest — Create a separate n8n workflow on a daily 9am schedule that queries Zoho CRM for all open VIP cases via the Search Records operation and posts a summary table to #support-vip. Gives the team a morning briefing without requiring anyone to open Zoho.
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