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

How to Send Zoho CRM Lead Alerts to Slack with Power Automate

Automatically posts a Slack channel message whenever a new lead is created in Zoho CRM, giving sales teams an instant heads-up to act fast.

Steps and UI details are based on platform versions at time of writing — check each platform for the latest interface.

Best for

Microsoft-stack sales teams already using Power Automate who want Slack alerts the moment a new Zoho CRM lead lands without writing code.

Not ideal for

Teams needing sub-60-second notification latency — Power Automate polls Zoho CRM on a minimum 1-minute interval, so use Make or n8n with webhooks for true real-time.

Sync type

scheduled

Use case type

notification

Real-World Example

💡

A 12-person SaaS sales team runs paid ads that dump leads into Zoho CRM around the clock. Before this flow, reps refreshed Zoho manually two or three times a day and routinely let fresh inbound leads sit for hours. After setting up the flow, every new lead fires a message into #new-leads within 1-3 minutes with the lead's name, company, phone, and source — and reps claim it within seconds using a Slack thread reply.

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 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.

Zoho CRM account on Standard plan or higher with API access enabled under Settings > Developer Space > OAuth Apps
Power Automate account — Microsoft 365 Business Basic or higher, or a standalone Power Automate Per User plan that includes premium connectors (the Zoho CRM connector is premium)
Slack workspace admin access, or permission to add OAuth apps to the workspace, so Power Automate can post messages on behalf of a user
A dedicated Slack channel already created for lead notifications (e.g. #new-leads) with the relevant sales team members added
The Zoho CRM user account used for the Power Automate connection must have at least read access to the Leads module

Field Mapping

Map these fields between your apps.

FieldAPI Name
Required
Full NameFull_Name
CompanyCompany
EmailEmail
Record IDid
5 optional fields▸ show
PhonePhone
Lead SourceLead_Source
Lead OwnerOwner/name
Lead StatusLead_Status
Created TimeCreated_Time

Step-by-Step Setup

1

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. In the left sidebar click 'My flows', then click '+ New flow' at the top left of the page. From the dropdown select 'Automated cloud flow'. A dialog box appears asking you to name the flow and choose a trigger — type 'New Lead Notifications - Zoho to Slack' in the name field. You will pick the trigger in the next step, so click 'Skip' for now.

  1. 1Navigate to make.powerautomate.com and sign in
  2. 2Click 'My flows' in the left sidebar
  3. 3Click '+ New flow' in the top left
  4. 4Select 'Automated cloud flow' from the dropdown
  5. 5Enter 'New Lead Notifications - Zoho to Slack' as the flow name and click 'Skip'
What you should see: The flow canvas opens showing an empty trigger block labeled 'Choose how to start your flow'.
Common mistake — Do NOT select 'Instant cloud flow' or 'Scheduled cloud flow'. Instant requires a manual button press. Scheduled fires on a fixed timer but won't filter only new records cleanly. Automated cloud flow is the correct type for event-style CRM triggers.
2

Flow canvas > Trigger block > Search: 'Zoho CRM' > When a record is created

Add the Zoho CRM 'When a record is created' trigger

In the trigger block, click inside the search box and type 'Zoho CRM'. Select 'Zoho CRM' from the connector list — the icon is an orange Z. From the list of triggers, click 'When a record is created'. Power Automate will immediately prompt you to sign in to Zoho CRM to create a Connection if one does not already exist.

  1. 1Click inside the empty trigger block on the canvas
  2. 2Type 'Zoho CRM' in the connector search bar
  3. 3Click the orange Zoho CRM connector icon
  4. 4Click 'When a record is created' from the trigger list
What you should see: The trigger block expands showing a 'Module Name' dropdown and a sign-in prompt or a pre-existing Connection name.
Common mistake — Power Automate's Zoho CRM connector uses OAuth. The account you authenticate with must have API access enabled in Zoho CRM under Settings > Developer Space > API > OAuth Apps. Personal free Zoho accounts do not have API access — you need at least a Standard plan.
Power Automate
+
click +
search apps
Slack
SL
Slack
Add the Zoho CRM 'When a rec…
Slack
SL
module added
3

Flow canvas > Zoho CRM trigger > Sign in > Zoho OAuth popup

Authenticate your Zoho CRM connection

Click 'Sign in' in the trigger block. A browser popup opens pointing to Zoho's OAuth page. Enter your Zoho CRM admin credentials and click 'Accept' to grant Power Automate read access. After accepting, the popup closes and you return to the flow canvas. You will see your email address listed as the active Connection in the trigger block.

  1. 1Click 'Sign in' inside the Zoho CRM trigger block
  2. 2Enter your Zoho CRM admin email and password in the popup
  3. 3Click 'Accept' on the Zoho permissions screen
  4. 4Confirm the popup closes and your email appears in the Connection field
What you should see: The Connection field in the trigger block displays your Zoho CRM email address with a green checkmark. The 'Module Name' dropdown is now active.
Common mistake — If you manage multiple Zoho data centers (US, EU, AU, IN, CN), the OAuth endpoint differs. Power Automate's default connector points to the US (.com) data center. If your org is on .eu or .in, the connection will fail silently — you'll need to use a custom connector or contact Microsoft support.
4

Flow canvas > Zoho CRM trigger > Module Name dropdown > Leads

Configure the Zoho CRM trigger to watch Leads

In the 'Module Name' dropdown inside the trigger block, scroll down and select 'Leads'. This tells Power Automate to fire the flow each time a new lead record is created in Zoho CRM. Power Automate polls Zoho CRM on a 1-minute minimum interval for new records matching this module. No additional filter is needed here unless you want to scope to a specific lead source — that comes later.

  1. 1Click the 'Module Name' dropdown in the Zoho CRM trigger block
  2. 2Scroll down and select 'Leads' from the module list
  3. 3Leave all other trigger fields at their defaults
What you should see: The trigger block shows 'Module Name: Leads' and the trigger is labeled 'When a record is created (Leads)'.
5

Flow canvas > + New step > Search: 'Slack' > Post message (V2)

Add a Slack connection and action

Below the trigger block, click '+ New step'. In the action search bar type 'Slack'. Select the 'Slack' connector from the list. From the list of actions, click 'Post message (V2)'. Power Automate will prompt you to create a Slack Connection if one does not exist. Click 'Sign in to Slack', authorize the app in the Slack OAuth browser popup, and select the workspace where you want notifications to appear.

  1. 1Click '+ New step' below the Zoho CRM trigger block
  2. 2Type 'Slack' in the action search bar
  3. 3Click the Slack connector
  4. 4Click 'Post message (V2)' from the action list
  5. 5Click 'Sign in to Slack' and authorize Power Automate in the Slack OAuth popup
What you should see: The Slack action block expands showing a 'Channel Name' field and a 'Message Text' field. Your Slack workspace name appears in the Connection label.
Common mistake — Use 'Post message (V2)' — not the older 'Post message' action. The V1 action is deprecated and missing the 'blocks' field you need for formatted messages. If you only see V1 in search results, scroll down — V2 appears lower in the list.
6

Flow canvas > Slack action > Channel Name dropdown

Set the target Slack channel

In the Slack action block, click the 'Channel Name' dropdown. Power Automate loads all channels your authenticated Slack user has access to. Scroll or type to find the channel where lead alerts should post — for example #new-leads or #sales. Select it from the list. The channel ID populates automatically behind the scenes.

  1. 1Click the 'Channel Name' dropdown in the Slack action block
  2. 2Type the channel name or scroll to find it
  3. 3Click the correct channel to select it
What you should see: The Channel Name field shows the selected channel name, such as '#new-leads'.
Common mistake — The Slack connection authenticates as the user who signed in, not as a bot. If that user leaves the workspace or loses access to the channel, the flow will fail. Consider creating a dedicated Slack app or service account for this connection to avoid breakage when team members change.
7

Flow canvas > Slack action > Message Text > Dynamic content panel

Build the Slack message using Zoho CRM dynamic fields

Click inside the 'Message Text' field in the Slack action block. Type the static label text first, then click the lightning bolt icon (or click inside the field and press the dynamic content button that appears) to insert Zoho CRM fields. Build a message that includes lead name, company, phone, email, and lead source. Each field you insert appears as a blue token in the message box.

  1. 1Click inside the 'Message Text' field
  2. 2Type: '🔔 New Lead: '
  3. 3Click the dynamic content icon and select 'Full Name' from the Zoho CRM trigger outputs
  4. 4Press Enter and type 'Company: ', then insert 'Company' from dynamic content
  5. 5Continue adding: 'Phone: ' + Phone, 'Email: ' + Email, 'Source: ' + Lead Source
What you should see: The Message Text field shows a mix of static labels and blue dynamic content tokens, forming a readable message template like '🔔 New Lead: [Full Name] | Company: [Company] | Phone: [Phone] | Email: [Email] | Source: [Lead Source]'.
Common mistake — Zoho CRM returns the Lead Owner as an object with a nested 'name' and 'id'. If you insert the raw 'Lead Owner' token, Power Automate may render it as a JSON object string in Slack instead of just the person's name. Use the expression 'triggerOutputs()?[''body/Owner/name'']' to extract the readable name specifically.
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

Flow canvas > + New step > Control > Condition

Add a condition to skip duplicate notifications

Because Power Automate polls Zoho CRM on an interval, there is a small chance the same record gets picked up twice in back-to-back poll cycles. Add a safeguard by clicking '+ New step' and selecting 'Control' then 'Condition'. Set the left value to the Zoho CRM 'ID' field (a unique record identifier), the operator to 'is not equal to', and the right value to empty string. This ensures the flow only proceeds when a valid record ID exists — a blank ID indicates a poll with no real new record.

  1. 1Click '+ New step' below the Slack action
  2. 2Search for 'Control' and select it
  3. 3Click 'Condition'
  4. 4In the left value field, insert the Zoho CRM 'ID' dynamic content token
  5. 5Set operator to 'is not equal to' and leave the right value blank
What you should see: A Condition block appears with two branches: 'If yes' (ID exists, proceed) and 'If no' (skip). The Slack Post message action should be moved into the 'If yes' branch.
Common mistake — Move the Slack 'Post message (V2)' action into the 'If yes' branch of the condition BEFORE saving. If you add the condition after the Slack action without restructuring, the Slack message will fire regardless of the condition result.
Slack
SL
trigger
filter
Condition
matches criteria?
yes — passes through
no — skipped
Zoho CRM
ZO
notified
9

Flow canvas > Save > Test > Manually > Test

Test the flow with a real Zoho CRM lead

Click 'Save' in the top right of the canvas. Once saved, click 'Test' in the top right and select 'Manually' then 'Test'. Power Automate will wait for a trigger event. Go to Zoho CRM and manually create a new lead with a test name like 'Test Lead - Power Automate'. Wait up to 2 minutes for the poll cycle to fire. When the flow detects the new lead, the test run completes and you can inspect each step's input and output.

  1. 1Click 'Save' in the top right corner of the canvas
  2. 2Click 'Test' in the top right corner
  3. 3Select 'Manually' and click 'Test'
  4. 4Switch to Zoho CRM and create a new lead named 'Test Lead - Power Automate'
  5. 5Return to Power Automate and wait up to 2 minutes for the run to complete
What you should see: Each step in the flow shows a green checkmark. The Zoho CRM trigger block shows the test lead's raw data. The Slack block shows a 200 OK response. Check your Slack channel — the notification message should be visible.
Power Automate
▶ Test flow
executed
Slack
Zoho CRM
Zoho CRM
🔔 notification
received
10

My flows > [Flow name] > Run history

Review the run history and turn the flow on

After a successful test, click the back arrow to return to the flow detail page. You will see a 'Run history' section showing the test run with a green 'Succeeded' status. Click the run row to inspect the full input/output of every step — this is useful for confirming all Zoho CRM fields mapped correctly into the Slack message. If everything looks correct, make sure the flow status shows 'On' at the top of the page. Power Automate turns Automated cloud flows on by default after saving.

  1. 1Click the back arrow from the canvas to return to the flow detail page
  2. 2Scroll down to 'Run history' and click the test run row
  3. 3Verify all steps show green checkmarks and confirm field values look correct
  4. 4Return to the flow detail page and confirm the flow status toggle reads 'On'
What you should see: The flow detail page shows status 'On' and the run history shows at least one 'Succeeded' entry. The Slack channel has the test notification message with the correct lead data populated.

Paste this into the Message Text field using the Expression editor (click the 'fx' button in the Slack action's Message Text field). This single expression builds the full formatted Slack message with null-safe fallbacks for optional fields and a clickable deep link to the Zoho CRM lead record — no separate Compose steps needed.

JavaScript — Code Stepconcat(
▸ Show code
concat(
  '🔔 *New Lead: ', triggerOutputs()?['body/Full_Name'], '*', '
',

... expand to see full code

concat(
  '🔔 *New Lead: ', triggerOutputs()?['body/Full_Name'], '*', '
',
  '*Company:* ', if(empty(triggerOutputs()?['body/Company']), '_Not provided_', triggerOutputs()?['body/Company']), '
',
  '*Email:* ', triggerOutputs()?['body/Email'], '
',
  '*Phone:* ', if(empty(triggerOutputs()?['body/Phone']), '_Not provided_', triggerOutputs()?['body/Phone']), '
',
  '*Source:* ', if(empty(triggerOutputs()?['body/Lead_Source']), '_Unknown_', triggerOutputs()?['body/Lead_Source']), '
',
  '*Owner:* ', triggerOutputs()?['body/Owner/name'], '
',
  '*Status:* ', triggerOutputs()?['body/Lead_Status'], '
',
  '*Created:* ', triggerOutputs()?['body/Created_Time'], '
',
  '*CRM Link:* <https://crm.zoho.com/crm/org/tab/Leads/', triggerOutputs()?['body/id'], '|Open in Zoho CRM>'
)

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 Power Automate for this if your team already lives in the Microsoft 365 ecosystem and has Per User licenses that cover premium connectors. The setup is genuinely straightforward — no JSON payloads, no webhook endpoints to configure — and if your IT team manages connections centrally, Power Automate's admin governance tools make it easier to hand off than Zapier or Make. The one scenario where you'd pick something else immediately: if your Zoho leads come in via bulk CSV import. Power Automate's polling trigger misses those. Use Make with a Zoho webhook in that case.

Cost

The cost math is simple. The Zoho CRM connector is premium, so you need a Power Automate Per User plan at $15/user/month. Each lead creates exactly 1 flow run. At 200 leads/month, that's 200 runs — a rounding error against the 40,000 run/month limit on Per User. The Slack connector is standard so no extra cost there. Compare that to Zapier, where 200 tasks/month sits comfortably on the free tier, or Make, where 200 operations/month is free. If you don't already have a Power Automate Per User license, Zapier is cheaper by $15/month for this specific use case alone.

Tradeoffs

Here is how the competition stacks up for this exact workflow. Zapier has a native Zoho CRM 'New Lead' trigger that is simpler to configure and fires in about 2 minutes — comparable to Power Automate's polling speed, and the setup takes 5 minutes versus Power Automate's 20. Make supports Zoho CRM webhooks, which means genuinely instant notifications under 10 seconds — Power Automate cannot match that without a custom HTTP trigger workaround. n8n gives you full control over the Slack message format using JavaScript transforms, which beats Power Automate's expression editor for complex conditional formatting. Power Automate is still the right call when your org's IT policy requires all integrations to go through Microsoft-managed connectors, or when you need audit logging baked into the platform.

Three things you will hit after setup. First, the Lead Owner field returns a nested JSON object — if you drop the raw dynamic token into the Slack message, reps will see raw JSON in the channel. Use the expression triggerOutputs()?['body/Owner/name'] to extract just the name. Second, Zoho CRM occasionally throttles API polling responses during peak hours, which causes the trigger to skip a poll cycle. You'll see a gap in run history with no failure — just a missed trigger. Third, if your Zoho org is on the EU or AU data center (.eu or .in domain), the Power Automate Zoho CRM connector defaults to the US endpoint and will fail to authenticate silently. There is no built-in data center selector in the connector — you need a custom connector or you switch to Zapier which handles multi-region Zoho accounts cleanly.

Ideas for what to build next

  • Add Lead Assignment Routing by SourceExtend the flow with a Switch condition that reads the Lead Source field and posts to different Slack channels — #google-leads, #referral-leads — or @mentions a specific rep based on territory rules.
  • Log Notifications to a SharePoint List for DeduplicationAdd a SharePoint 'Create item' action after the Slack post that writes the Zoho lead ID to a SharePoint list. Add a prior 'Get items' action to check if the ID already exists before posting, giving you a reliable deduplication layer.
  • Build a Daily Lead Digest Instead of Per-Lead PingsCreate a second Scheduled cloud flow that runs every morning at 8am, queries Zoho CRM for all leads created in the last 24 hours, and posts a single summary message to Slack — useful for high-volume days when per-lead pings create noise.

Related guides

Was this guide helpful?
Slack + Zoho CRM overviewPower Automate profile →