Intermediate~15 min setupCommunication & CRMVerified April 2026
Slack logo
Zoho CRM logo

How to Send Zoho CRM VIP Case Alerts to Slack with Pipedream

Fires an instant Slack alert to your support channel whenever a high-value or VIP account opens a new case in Zoho CRM, so your team can respond before the customer follows up.

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 sub-minute alerting on enterprise or VIP accounts and want to add custom filtering logic without a third-party middleware tool

Not ideal for

Teams that have no developer available and need a point-and-click setup — use Zapier instead for that scenario

Sync type

real-time

Use case type

notification

Real-World Example

💡

A 25-person SaaS company manages 80 enterprise accounts worth $50K+ ARR each. Before this workflow, support reps refreshed Zoho CRM manually and sometimes took 3-4 hours to notice a VIP case. Now, the moment a contact tagged 'VIP' or 'Enterprise' opens a case, a formatted Slack message hits #vip-support with the account name, case subject, priority level, and a direct link to the record — average first response dropped from 2.5 hours to under 12 minutes.

What Will This Cost?

Drag the slider to your expected monthly volume.

/mo
505005K50K

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

Skip the setup

Import this workflow directly into Pipedream

Copy the pre-built Pipedream blueprint and paste it straight into Pipedream. 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.

Zoho CRM admin account with the Cases module enabled and API access turned on under Setup > Developer Space > APIs
Slack workspace admin or a user with permission to add apps to the workspace and post to the target support channel
Pipedream account (free tier works for up to ~333 workflow runs/month before hitting the 10,000 credit limit)
A defined list of VIP or high-value account names, tags, or IDs in Zoho CRM that your filter logic will check against — the workflow is only as good as this list
The exact Slack channel name (e.g., #vip-support) already created in your workspace before building the workflow

Field Mapping

Map these fields between your apps.

FieldAPI Name
Required
Case NumberCase_Number
Case SubjectSubject
Account NameAccount_Name.name
PriorityPriority
Case IDid
5 optional fields▸ show
StatusStatus
Contact NameContact_Name.name
Case OwnerCase_Owner.name
DescriptionDescription
Created TimeCreated_Time

Step-by-Step Setup

1

pipedream.com > Dashboard > New Workflow

Create a new Pipedream workflow

Go to pipedream.com and sign in. Click the blue 'New Workflow' button in the top-right corner of the dashboard. You'll land on the workflow canvas with an empty trigger slot at the top. Give the workflow a name like 'Zoho CRM VIP Case → Slack Alert' by clicking the pencil icon next to 'Untitled' at the top of the page. This name will appear in your logs, so make it descriptive.

  1. 1Click 'New Workflow' in the top-right of the dashboard
  2. 2Click the pencil icon next to 'Untitled' at the top of the canvas
  3. 3Type a workflow name: 'Zoho CRM VIP Case → Slack Alert'
  4. 4Press Enter to save the name
What you should see: You should see a blank workflow canvas with a grey 'Add a trigger' block at the top and your custom workflow name displayed.
Common mistake — Pipedream free tier limits you to 10 active workflows. If you hit that cap, you'll see a 'Workflow limit reached' error when saving — archive an unused workflow first.
2

Workflow Canvas > Add a trigger > Zoho CRM > New Case

Add Zoho CRM as the trigger source

Click the 'Add a trigger' block on the canvas. In the search box that appears, type 'Zoho CRM' and select it from the results. You'll see a list of available trigger events. Select 'New Case' (listed under Cases). This trigger fires via Zoho's webhook notification system, giving you near-instant delivery rather than polling on a schedule.

  1. 1Click the 'Add a trigger' block at the top of the canvas
  2. 2Type 'Zoho CRM' in the search field
  3. 3Click 'Zoho CRM' in the results list
  4. 4Select 'New Case' from the trigger event list
What you should see: The trigger block expands to show a Zoho CRM configuration panel with an account connection prompt and a 'New Case' label displayed.
Common mistake — Zoho CRM's webhook notification for Cases requires the 'Cases' module to be enabled in your Zoho CRM edition. Free and Standard plans may not have Cases — check under Setup > Modules & Fields before proceeding.
Pipedream
+
click +
search apps
Slack
SL
Slack
Add Zoho CRM as the trigger …
Slack
SL
module added
3

Trigger Panel > Connect Account > Zoho OAuth

Connect your Zoho CRM account

Click 'Connect Account' inside the Zoho CRM trigger panel. Pipedream opens a popup that redirects you to Zoho's OAuth authorization page. Sign in with your Zoho CRM admin credentials and click 'Accept' to grant Pipedream read access to your CRM data. After authorizing, you'll return to Pipedream and see your account listed by email address.

  1. 1Click 'Connect Account' in the trigger configuration panel
  2. 2Sign in with your Zoho CRM admin email and password in the popup
  3. 3Click 'Accept' on the Zoho OAuth permissions page
  4. 4Confirm your account email appears in the 'Connected Account' dropdown
What you should see: Your Zoho CRM account email appears in the 'Connected Account' field with a green checkmark, and the trigger panel shows additional configuration options.
Common mistake — If you connect a non-admin Zoho account, the OAuth scope for Cases may be restricted and the trigger will fail silently. Use an admin account or verify the connected user has Cases read permission under Zoho CRM > Setup > Roles.
Pipedream settings
Connection
Choose a connection…Add
click Add
Slack
Log in to authorize
Authorize Pipedream
popup window
Connected
green checkmark
4

Trigger Panel > Select Event > Choose a recent case record

Configure the trigger and load test data

With the trigger connected, click 'Select Event' or 'Generate Test Event' to pull a real case record from your Zoho CRM. Pipedream will show a list of recently created cases. Select any case record — preferably one tied to a VIP or enterprise account — to use as your test payload. This populates the data object you'll reference in later steps.

  1. 1Click 'Select Event' in the trigger configuration panel
  2. 2Click 'Generate Test Event' if no events appear automatically
  3. 3Select a case record from the list that appears
  4. 4Click 'Continue' to confirm the test event
What you should see: You should see a JSON payload in the trigger panel containing case fields like Case_Number, Subject, Status, Account_Name, Priority, and Contact_Name.
Pipedream
▶ Deploy & test
executed
Slack
Zoho CRM
Zoho CRM
🔔 notification
received
5

Workflow Canvas > + > Run Node.js code

Add a Node.js code step to filter VIP accounts

Click the '+' button below the trigger to add a new step. Select 'Run Node.js code' from the step type list. This is where you write the filter logic that checks whether the case belongs to a VIP or high-value customer. Without this filter, every new case triggers a Slack message — which will spam your channel fast. Paste the filter code from the Pro Tip section into the code editor.

  1. 1Click the '+' button below the trigger block
  2. 2Click 'Run Node.js code' from the step options
  3. 3Delete the default placeholder code in the editor
  4. 4Paste your VIP filter and message-formatting code into the editor
What you should see: A code step appears on the canvas with a Node.js editor. When you run the test, the console shows either the formatted message object or a 'Not VIP — skipping' log line.
Common mistake — Pipedream code steps time out after 30 seconds on the free plan and 60 seconds on paid. This filter runs in under 100ms so timeout isn't a risk here — but if you later add an API lookup (e.g., fetching account tier from a database), account for that latency.

Paste this code into the Node.js code step (Step 5). It checks the incoming case against your VIP account list, formats a Slack Block Kit message with a direct CRM link, and calls `$.flow.exit()` to silently halt non-VIP cases without logging an error — keeping your Pipedream logs clean.

JavaScript — Code Stepexport default defineComponent({
▸ Show code
export default defineComponent({
  async run({ steps, $ }) {
    // Pull case data from Zoho CRM trigger

... expand to see full code

export default defineComponent({
  async run({ steps, $ }) {
    // Pull case data from Zoho CRM trigger
    const caseData = steps.trigger.event;

    // Define your VIP / high-value account names (exact match, case-insensitive)
    const VIP_ACCOUNTS = [
      "meridian financial group",
      "thornfield logistics",
      "apex ventures",
      "northgate healthcare",
      "solaris capital"
    ];

    const accountName = (caseData.Account_Name?.name || "").trim().toLowerCase();
    const isVIP = VIP_ACCOUNTS.includes(accountName);

    if (!isVIP) {
      $.flow.exit(`Skipping: '${caseData.Account_Name?.name}' is not a VIP account`);
    }

    // Build the Zoho CRM direct link (replace YOUR_ORG_ID with your actual org ID)
    const ORG_ID = process.env.ZOHO_ORG_ID || "YOUR_ORG_ID";
    const caseUrl = `https://crm.zoho.com/crm/org${ORG_ID}/Cases/${caseData.id}`;

    // Truncate description to keep Slack message scannable
    const rawDescription = caseData.Description || "No description provided.";
    const description = rawDescription.length > 300
      ? rawDescription.substring(0, 300) + "..."
      : rawDescription;

    // Format created time to readable string
    const createdAt = new Date(caseData.Created_Time).toLocaleString("en-US", {
      dateStyle: "medium",
      timeStyle: "short",
      timeZone: "America/New_York"
    });

    // Build Slack Block Kit payload
    const blocks = [
      {
        type: "header",
        text: {
          type: "plain_text",
          text: `\uD83D\uDEA8 VIP Case Alert — ${caseData.Case_Number}`,
          emoji: true
        }
      },
      {
        type: "section",
        fields: [
          { type: "mrkdwn", text: `*Account:*\n${caseData.Account_Name?.name || "Unknown"}` },
          { type: "mrkdwn", text: `*Contact:*\n${caseData.Contact_Name?.name || "Unknown"}` },
          { type: "mrkdwn", text: `*Priority:*\n${caseData.Priority || "Not set"}` },
          { type: "mrkdwn", text: `*Status:*\n${caseData.Status || "Open"}` },
          { type: "mrkdwn", text: `*Opened:*\n${createdAt}` },
          { type: "mrkdwn", text: `*Owner:*\n${caseData.Case_Owner?.name || "Unassigned"}` }
        ]
      },
      {
        type: "section",
        text: {
          type: "mrkdwn",
          text: `*Subject:* ${caseData.Subject}\n\n*Description:* ${description}`
        }
      },
      {
        type: "actions",
        elements: [
          {
            type: "button",
            text: { type: "plain_text", text: "View Case in Zoho CRM", emoji: true },
            url: caseUrl,
            style: "primary"
          }
        ]
      },
      { type: "divider" }
    ];

    return {
      blocks,
      fallback_text: `VIP Case ${caseData.Case_Number} from ${caseData.Account_Name?.name}: ${caseData.Subject}`
    };
  }
});
Slack
SL
trigger
filter
Condition
matches criteria?
yes — passes through
no — skipped
Zoho CRM
ZO
notified
6

Workflow Canvas > + > Slack > Send Message to Channel

Add a Slack step to send the channel alert

Click '+' below the code step and search for 'Slack'. Select the Slack app and choose 'Send Message to Channel' as the action. Connect your Slack account via OAuth when prompted. In the 'Channel' field, type the name of your VIP support channel (e.g., #vip-support). In the 'Message Text' field, reference the formatted message object your code step outputs.

  1. 1Click '+' below the Node.js code step
  2. 2Search for 'Slack' and select the Slack app
  3. 3Choose 'Send Message to Channel' as the action
  4. 4Click 'Connect Account' and authorize with your Slack workspace
  5. 5Set the Channel field to your VIP support channel name (e.g., #vip-support)
What you should see: The Slack step shows your workspace name in the Connected Account field and the channel name in the Channel field. The message preview renders your template text.
Common mistake — Slack channel names are case-sensitive in the Pipedream Slack action. '#VIP-Support' will fail if the actual channel is '#vip-support'. Copy the exact channel name from Slack's sidebar.
message template
🔔 New Record: {{text}} {{user}}
channel: {{channel}}
ts: {{ts}}
#sales
🔔 New Record: Jane Smith
Company: Acme Corp
7

Slack Step > Message Text > {} Expression Builder

Map the Zoho CRM fields to the Slack message

In the Slack step's 'Message Text' field, reference the output of your code step using Pipedream's expression syntax. Click the '{}' icon next to the field to open the data explorer and browse available properties from previous steps. Map Case_Number, Subject, Account_Name, Priority, and a direct Zoho CRM case URL into the message body. The code step in Step 5 already formats these into a clean message string — reference that output here.

  1. 1Click inside the 'Message Text' field in the Slack step
  2. 2Click the '{}' icon to open the expression/data explorer
  3. 3Navigate to your code step's output in the left panel
  4. 4Select the 'message' property your code step exports
  5. 5Click 'Select' to insert the reference into the Message Text field
What you should see: The Message Text field shows a reference like {{steps.nodejs.$return_value.message}} and the preview below renders the full formatted Slack message with real data from your test case.
Common mistake — The Zoho CRM API returns Account_Name as a nested object like `{"name": "Acme Corp", "id": "1234567"}`. Reference `Account_Name.name` in your code — not `Account_Name` directly — or the Slack message will show `[object Object]`.
Slack fields
text
user
channel
ts
thread_ts
available as variables:
1.props.text
1.props.user
1.props.channel
1.props.ts
1.props.thread_ts
8

Slack Step > Blocks field > {} Expression Builder

Add optional Block Kit formatting for richer alerts

For a more actionable Slack message, switch from plain text to Slack Block Kit JSON in the 'Blocks' field of the Slack step. Block Kit lets you add bold headers, color-coded sections, and a direct 'View Case' button linking to Zoho CRM. Your code step can return a blocks array instead of a plain message string. Reference the blocks output in the Slack step's 'Blocks' field instead of 'Message Text'.

  1. 1Scroll down in the Slack step configuration to find the 'Blocks' field
  2. 2Click the '{}' icon next to 'Blocks'
  3. 3Reference your code step's blocks output property
  4. 4Leave the 'Message Text' field with a fallback string like 'New VIP case created'
What you should see: When you test the Slack step, you receive a Slack message in the target channel with a formatted header, priority label, and a clickable 'View Case in Zoho CRM' button.
Common mistake — Map fields using the variable picker — don't type field names manually. Hand-typed variable names often have invisible spacing errors that produce blank output.
9

Workflow Canvas > Test Workflow button (top right)

Test the full workflow end to end

Click 'Test Workflow' at the top of the canvas. Pipedream runs each step sequentially using the test event from Step 4. Watch the step results panel on the right — green checkmarks mean the step passed, red X marks mean it failed. Check your #vip-support Slack channel for the actual message. If the code step returns 'Not VIP — skipping', create a new test case in Zoho CRM tagged with your VIP account name to get a matching payload.

  1. 1Click 'Test Workflow' in the top-right of the canvas
  2. 2Watch each step turn green or red in the step results panel
  3. 3Open your Slack #vip-support channel to confirm the message arrived
  4. 4If the filter step skips, create a test case on a VIP account in Zoho CRM and re-run
What you should see: All steps show green checkmarks. Your #vip-support Slack channel receives a formatted message with the case number, subject, account name, priority, and a Zoho CRM link.
Common mistake — Pipedream's 'Test Workflow' button uses the stored test event, not a live trigger. The production webhook will fire separately when a real case is created. Don't confuse a successful test with a confirmed live trigger — deploy the workflow first.
10

Workflow Canvas > Deploy button (top right)

Deploy the workflow to production

Click the grey 'Deploy' button in the top-right corner of the canvas. Pipedream activates the Zoho CRM webhook listener and your workflow goes live. From this point, every new case created in Zoho CRM hits the workflow within seconds. The workflow status indicator in the top-left switches from 'Inactive' to 'Active' in green. Pipedream logs every execution under the 'Logs' tab — check it after your first real case is created.

  1. 1Click the 'Deploy' button in the top-right corner
  2. 2Confirm the status indicator shows 'Active' in green
  3. 3Click the 'Logs' tab to verify the listener is running
  4. 4Create a test VIP case in Zoho CRM and watch the log for a live execution
What you should see: The workflow status shows 'Active'. Within 30 seconds of creating a new case in Zoho CRM, the Logs tab shows a new execution and your Slack channel receives the alert.

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

VerdictWhy n8n for this workflow

Use Pipedream for this if your team has at least one person comfortable reading Node.js. The filter logic — checking case account names against a VIP list — is genuinely easier to write and maintain as code than as a chain of visual filter modules. Pipedream also gives you instant webhook processing from Zoho CRM with no polling lag, which matters when VIP customers expect a response in under 10 minutes. If nobody on your team will touch code and you need a point-and-click setup in under 20 minutes, Zapier is the better call for this specific workflow.

Cost

Pipedream's credit model: each workflow run costs roughly 5-30 credits depending on execution time. A support team handling 200 new cases/month with a 15% VIP rate triggers about 30 Slack alerts — that's under 900 credits/month, well inside the free tier's 10,000 credit monthly allowance. If your case volume scales to 2,000/month, you're at roughly 9,000 credits — still free. Zapier at the same volume would cost $19.99/month on the Starter plan. Pipedream wins on cost at every realistic volume for this use case.

Tradeoffs

Zapier has a pre-built 'New Case in Zoho CRM' trigger that works out of the box with zero configuration — if your team is non-technical, Zapier gets you live in 8 minutes versus Pipedream's 25. Make's router module handles branching to multiple Slack channels by account tier more cleanly than Pipedream's code approach — you'd use a Router module with filter conditions rather than if/else in Node.js. n8n's IF node and Function node combo gives you the same code flexibility as Pipedream but with self-hosting options, which some compliance-heavy teams need. Power Automate integrates natively with Teams rather than Slack, making it the wrong tool here unless your company already runs on Teams instead. Pipedream wins for this specific use case because the webhook speed plus Node.js in a single tool is the right tradeoff for a developer-adjacent support team that wants real-time alerting and filter logic they can actually read six months later.

Three things you'll hit after setup. First: Zoho CRM sometimes fires the case creation webhook twice — once when the record is saved, once when an automation rule modifies it a second later. Add deduplication using Pipedream's $.service.db to store the case ID for 60 seconds and exit early on duplicates. Second: Zoho's API returns timestamps in UTC. Your code step needs to convert them to your team's local timezone or the 'Opened: 3:22 AM' in the Slack message will confuse agents. Use JavaScript's toLocaleString() with an explicit timeZone option. Third: Slack's Block Kit 'button' element with a URL requires the URL to use HTTPS — Zoho CRM URLs do, but if you're ever constructing a custom link to an internal tool, HTTP will silently cause the button to not render.

Ideas for what to build next

  • Escalate unacknowledged VIP cases after 15 minutesAdd a Pipedream delay step after the Slack alert. If the case status hasn't changed to 'In Progress' in Zoho CRM after 15 minutes, fire a second Slack message tagging the support manager directly — turns a notification into an escalation system.
  • Route alerts by account tier to separate Slack channelsExtend the code step to check account tier (Enterprise vs. Strategic) and send to different Slack channels like #enterprise-support and #strategic-support. Add each tier's account list as a separate Pipedream environment variable.
  • Log every VIP case alert to a Google Sheet for reportingAdd a Google Sheets step after the Slack step to append a row with case number, account name, priority, and timestamp. After 30 days you'll have a clean dataset showing VIP case volume and response patterns without touching Zoho's reporting module.

Related guides

Was this guide helpful?
Slack + Zoho CRM overviewPipedream profile →