Beginner~12 min setupCommunication & CRMVerified April 2026
Slack logo
Zoho CRM logo

How to Send Zoho CRM Follow-Up Reminders to Slack with Make

Polls Zoho CRM on a schedule, finds tasks or activities due today, and posts a direct Slack reminder to the assigned sales rep.

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

Best for

Sales teams of 5-50 reps who live in Slack and want due-task reminders without logging into Zoho CRM every morning.

Not ideal for

Teams needing sub-minute latency — polling runs every 15 minutes at minimum, so instant push alerts need a different approach.

Sync type

scheduled

Use case type

notification

Real-World Example

💡

A 12-person SaaS sales team was missing 20-30% of scheduled follow-up calls because reps relied on Zoho CRM's built-in email reminders, which got buried. After setting this up, Make checks Zoho every 15 minutes for tasks due within the next 2 hours and posts a DM to the assigned rep's Slack account. Missed follow-ups dropped to near zero in the first week.

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

Zoho CRM account with Tasks module enabled and at least read access for the connecting user
Zoho CRM user must have API access enabled — check under Zoho CRM > Setup > Developer Space > API
Slack workspace admin access or permission to install OAuth apps (needed to authorize the Make Slack app)
Make account — free tier works for low volume, but Core ($9/month) or above is needed for 15-minute polling intervals
Each Zoho CRM task owner's email must match their Slack account email for the user lookup to resolve correctly

Field Mapping

Map these fields between your apps.

FieldAPI Name
Required
Task SubjectSubject
Due DateDue_Date
Task Owner EmailOwner.email
Task StatusStatus
Task IDid
4 optional fields▸ show
Contact NameContact_Name.name
Task PriorityPriority
Related Deal or AccountWhat_Id.name
Task DescriptionDescription

Step-by-Step Setup

1

make.com > Scenarios > + Create a new scenario

Create a new Make scenario

Log into Make at make.com and click 'Create a new scenario' in the top right. You'll land on the visual canvas — a dark grid where you'll connect modules. Don't use a template here; start blank so you control the schedule and filters precisely.

  1. 1Log into make.com
  2. 2Click '+ Create a new scenario' in the top right corner
  3. 3Click 'Skip' if prompted to pick a template
  4. 4Click the large '+' circle in the center of the blank canvas
What you should see: You should see the app search modal open over the blank canvas.
2

Canvas > + > Zoho CRM > Search Records

Add the Zoho CRM 'Search Records' module

Search for 'Zoho CRM' in the module search box and select it. Choose the 'Search Records' action — not 'Watch Records,' which is webhook-based and won't work for scheduled polling of due tasks. This module will run your query against the Tasks module in Zoho CRM each time the scenario fires.

  1. 1Type 'Zoho CRM' in the module search box
  2. 2Select 'Zoho CRM' from the results
  3. 3Scroll to the 'Actions' section and select 'Search Records'
  4. 4Click 'Add' when prompted to create a new connection
What you should see: The Zoho CRM connection dialog appears, asking for your Zoho datacenter region and OAuth credentials.
Common mistake — Zoho CRM has region-specific endpoints — US, EU, AU, IN, JP. Picking the wrong region returns a 'No accounts found' error even with valid credentials. Match the region to where your Zoho org was created.
3

Zoho CRM Module > Connection > + Add > OAuth Flow

Authenticate Make with Zoho CRM

Click 'Add' inside the connection dialog. Make will redirect you to Zoho's OAuth screen. Log in with your Zoho admin account and grant access. After approving, you'll be returned to Make with the connection active. You need at least a Zoho CRM user with 'Tasks' module read access — a standard Sales rep profile works.

  1. 1Select your Zoho datacenter from the dropdown (e.g., 'United States')
  2. 2Click 'Save' to open the Zoho OAuth page
  3. 3Log in with your Zoho admin credentials
  4. 4Click 'Accept' on the permissions screen
  5. 5Confirm you're returned to Make with the connection name shown
What you should see: The connection dropdown in the module shows your Zoho org name with a green indicator. The module fields below become editable.
Common mistake — If your Zoho account uses SSO or two-factor authentication enforced by your org, the OAuth redirect may fail silently. Temporarily use a non-SSO admin account to create the connection, then restrict it after.
4

Search Records Module > Module (dropdown) > Tasks > Criteria

Configure the Search Records query for due tasks

Set 'Module' to 'Tasks.' In the Criteria section, you'll build a filter that finds tasks due today or overdue. Use two criteria: 'Due Date' is 'less than or equal to' today's date, and 'Status' is 'Not Started' or 'In Progress.' Make's Zoho module uses Zoho's COQL-style criteria — pick fields from the dropdowns rather than typing raw COQL. Set 'Maximum Number of Records' to 50 to stay within a single API call.

  1. 1Set 'Module' dropdown to 'Tasks'
  2. 2In Criteria, click 'Add Criterion'
  3. 3Set Field to 'Due Date', Operator to 'less than or equal to', Value to '{{formatDate(now; "YYYY-MM-DD")}}'
  4. 4Click 'Add Criterion' again
  5. 5Set Field to 'Status', Operator to 'not equal to', Value to 'Completed'
  6. 6Set 'Maximum Number of Records' to 50
What you should see: The module shows two criteria rows and a record limit of 50. You can click 'Run once' to test and should see real task records returned in the output panel on the right.
Common mistake — Zoho CRM's 'Due Date' field stores dates in YYYY-MM-DD format but your Make formula must also output that format. If you use a different format (e.g., MM/DD/YYYY), the criteria comparison silently returns zero records.
5

Canvas > + after Search Records > Flow Control > Iterator

Add an Iterator to process tasks one at a time

The Search Records module returns an array of tasks. You need an Iterator module to split that array so each task becomes its own bundle — one Slack message per task. Click the '+' after the Search Records module and add 'Flow Control > Iterator.' Map the Array field to the output array from the Search Records module.

  1. 1Click '+' on the right side of the Zoho CRM Search Records module
  2. 2Search for 'Flow Control' and select it
  3. 3Choose 'Iterator'
  4. 4In the 'Array' field, click inside and select '1. Search Records: Records[]' from the mapping panel
What you should see: The Iterator module appears connected after Search Records. When you run once, the output panel shows each task as a separate bundle with its own set of fields.
6

Canvas > Arrow between Iterator and next module > Wrench icon > Add Filter

Add a Filter to skip already-notified tasks (optional but recommended)

Click the small wrench icon on the arrow between the Iterator and the next module to add a Filter. Set a condition to check that the task's Due Date is not more than 2 days overdue — this prevents re-notifying reps about very old tasks that are likely already handled or abandoned. Set the condition: 'Due Date' greater than or equal to '{{formatDate(addDays(now; -2); "YYYY-MM-DD")}}'.

  1. 1Right-click the arrow line between Iterator and the next module
  2. 2Select 'Add a filter'
  3. 3Set Label to 'Recent tasks only'
  4. 4Set Condition: Field = 'Due Date' (from Iterator bundle), Operator = 'Greater than or equal to (date)', Value = '{{formatDate(addDays(now; -2); "YYYY-MM-DD")}}'
  5. 5Click 'OK'
What you should see: A small filter icon appears on the connection line. Tasks older than 2 days are dropped before the Slack message is sent.
Common mistake — Make's date comparison operators are type-sensitive. If the Due Date field comes through as a string rather than a date object, 'Greater than or equal to (date)' won't match. Use 'Greater than or equal to (text)' if your test run shows 0 bundles passing the filter.
Slack
SL
trigger
filter
Condition
matches criteria?
yes — passes through
no — skipped
Zoho CRM
ZO
notified
7

Canvas > + after Filter > Slack > Look Up a User by Email

Resolve the assigned rep's Slack user ID

Zoho CRM stores the task owner as a name string (e.g., 'Sarah Kim'), but Slack's API requires a user ID (e.g., 'U04ABCDEF') to send a DM. Add a Slack 'Look Up a User by Email' module after the filter. Map the email to the task owner's email from the Zoho bundle. This converts the Zoho user record into a Slack user ID you can use in the next step.

  1. 1Click '+' after the filter
  2. 2Search for 'Slack' and select it
  3. 3Choose 'Look Up a User by Email'
  4. 4Connect your Slack workspace (OAuth flow — approve in your browser)
  5. 5Map the 'Email' field to '{{1.Owner.Email}}' from the Zoho bundle
What you should see: After running once, the Slack module output panel shows the matched user object including their Slack User ID (format: U04XXXXXXX) and display name.
Common mistake — This lookup fails if the rep's Zoho email doesn't match their Slack email exactly — even one character off returns a 'user_not_found' error. Audit both systems for email consistency before going live.
8

Canvas > + after Slack Lookup > Slack > Send a Message

Add the Slack 'Send a Message' module

Add a Slack 'Send a Message' module after the lookup. Set 'Channel ID or Name' to the User ID returned from the previous Slack lookup module — this sends a DM directly to the rep. Compose the message text using mapped fields from the Zoho task bundle: task subject, related contact or deal name, due date, and a direct link to the CRM record.

  1. 1Click '+' after the Slack lookup module
  2. 2Select 'Slack' and choose 'Send a Message'
  3. 3Set 'Channel ID or Name' to '{{7.user.id}}' (the User ID from the lookup module)
  4. 4In the 'Text' field, compose: ':alarm_clock: *Follow-up due:* {{2.Subject}}\n*Contact:* {{2.Contact_Name.name}}\n*Due:* {{formatDate(2.Due_Date; "MMM D, YYYY")}}\n*Priority:* {{2.Priority}}\n<https://crm.zoho.com/crm/org{{2.Owner.id}}/tab/Tasks/{{2.id}}|Open in Zoho CRM>'
  5. 5Leave 'As User' toggled off unless your Slack plan supports bot posting as a user
What you should see: After running once, you should receive a Slack DM from your Make bot containing the task subject, contact name, due date, priority, and a clickable link back to the Zoho CRM task record.
Common mistake — Slack's free plan limits message history to 90 days. The DMs will send fine, but reps won't be able to scroll back to older reminders. If audit trails matter, also log the message to a dedicated Slack channel.
Message template
📬 New entry: {{1.name}}
Email: {{1.email}}
Details: {{1.description}}
message template
🔔 New Record: {{text}} {{user}}
channel: {{channel}}
ts: {{ts}}
#sales
🔔 New Record: Jane Smith
Company: Acme Corp
9

Scenario Canvas > Clock icon (bottom left) > Scheduling

Set the scenario schedule

Click the clock icon in the bottom left of the scenario canvas to open the scheduling panel. Set the scenario to run every 15 minutes during business hours. Make doesn't have a native 'business hours only' toggle, so set the interval to 15 minutes and accept that it will also fire on weekends — or use Make's scheduling with a filter on the current time at the start of the scenario to suppress off-hours runs.

  1. 1Click the clock icon in the bottom-left corner of the canvas
  2. 2Set 'Run scenario' to 'At regular intervals'
  3. 3Set interval to '15' minutes
  4. 4Click 'OK'
  5. 5Optionally, return to step 1 in the scenario and add a Router with a time-of-day filter: {{hour(now)}} >= 8 AND {{hour(now)}} <= 18
What you should see: The scenario status bar at the bottom shows the next scheduled run time. The scenario is now in 'Active' state.
Common mistake — Make counts each scheduled run as an operation, even if it returns zero tasks. At 15-minute intervals over a full month, that's 2,880 trigger operations before any task processing — factor this into your plan limits.
10

Scenario Canvas > Run once (bottom left) > Module bubbles

Run a live test and verify the Slack message

Click 'Run once' in the bottom left to trigger a manual test run. Watch the bubbles on each module light up — green means data passed through, orange means filtered out, red means an error. Click any bubble to inspect the bundle data at that stage. Confirm your Slack DM arrived with the correct task name, contact, date, and working CRM link.

  1. 1Click 'Run once' in the bottom toolbar
  2. 2Watch each module bubble for green (success) or red (error) indicators
  3. 3Click the Zoho CRM bubble to confirm tasks were returned
  4. 4Click the Slack 'Send a Message' bubble to confirm the message payload
  5. 5Check your Slack DMs to verify the message arrived and the Zoho link resolves correctly
What you should see: All module bubbles are green. You have a Slack DM showing the task subject, contact name, formatted due date, and a working link to the Zoho CRM task record.
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.
Message template
📬 New entry: {{1.name}}
Email: {{1.email}}
Details: {{1.description}}
Make
▶ Run once
executed
Slack
Zoho CRM
Zoho CRM
🔔 notification
received
11

Scenario Canvas > ON/OFF toggle (bottom left) > Scenarios > History

Activate the scenario

Toggle the scenario from 'OFF' to 'ON' using the switch in the bottom left of the canvas. Make will now run this scenario automatically on the 15-minute schedule. Monitor the first 2-3 automatic runs in the Scenario History tab (left sidebar > Scenarios > History) to confirm it's firing correctly and no errors appear.

  1. 1Click the toggle switch in the bottom-left of the canvas from OFF to ON
  2. 2Confirm the scenario status bar shows 'Active' and a next-run timestamp
  3. 3Navigate to Scenarios in the left sidebar
  4. 4Click 'History' to watch the first automated run complete
What you should see: The scenario status shows 'Active' with a countdown to the next run. The History tab logs each run with a green checkmark and the number of operations used.
Common mistake — If you edited the scenario after clicking 'Run once' but before activating, Make may prompt you to save. Always save before activating — unsaved changes don't carry into scheduled runs.

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 Make for this workflow

Use Make for this if your team wants visual debugging without writing code. Make's canvas lets you click any module bubble after a test run and see exactly what Zoho returned and what Slack received — that's critical when troubleshooting why rep Sarah got a reminder but Marcus didn't. Make also handles the Iterator pattern natively (splitting a batch of Zoho tasks into individual Slack messages) without any code. The one case where you'd pick something else: if your team already runs n8n self-hosted and wants to avoid another SaaS subscription. n8n handles this workflow identically and the self-hosted version has no operation limits.

Cost

Real cost math: each scenario run hits 1 operation for the Zoho poll + 1 per task returned + 1 per Slack lookup + 1 per Slack message sent. A team with 10 reps averaging 5 due tasks per poll = 52 operations per run. At 15-minute intervals, 8 hours/day, 5 days/week, that's roughly 2,000 runs/month = 104,000 operations/month. Make's Core plan ($9/month) includes 10,000 operations — you'd need the Pro plan ($16/month, 40,000 ops) or Teams ($29/month, 150,000 ops). Zapier's equivalent would run $49/month (Professional) for the same volume. Make wins on price here by $20-33/month.

Tradeoffs

Zapier has one edge: their 'Schedule by Zapier' trigger lets you set business-hours-only schedules with a checkbox UI — no filter formula needed. That's 5 minutes vs. 20 minutes of setup. n8n's Cron node gives you full cron syntax (e.g., run only Mon-Fri 8am-6pm in one expression) and zero operation limits on self-hosted. Power Automate has native Zoho CRM connectors in its Premium tier but the connector lags — it doesn't expose the Tasks module search with date-range criteria cleanly, so you'd need custom HTTP calls anyway. Pipedream handles this well with its scheduled source + Node.js, and the free tier is generous, but it requires code for the Slack message formatting that Make handles visually. Make is still the right call for non-coding teams that need operational visibility and predictable costs.

Three things you'll hit after go-live. First: Zoho's API rate limit is 5,000 calls/day per org on the Standard plan. If multiple Make scenarios also hit the Zoho API (e.g., a separate lead sync), you can exhaust that limit mid-day and get 429 errors — monitor Zoho's API usage dashboard under Setup > Developer Space > API Dashboard. Second: Zoho's 'Owner' field on Tasks sometimes returns only the owner's ID rather than their full user object, depending on which Zoho plan you're on. If your email lookup fails because {{2.Owner.email}} is empty, add a second Zoho CRM 'Get a User' module between the search and the Slack lookup, passing the owner ID to retrieve the full user record including email. Third: Slack DMs from a bot account show as coming from your Make app name — reps sometimes ignore or filter these. Rename your Slack app to something human like 'CRM Reminders' in the Slack API dashboard at api.slack.com/apps to improve open rates.

Ideas for what to build next

  • Add a morning digest instead of per-task DMsModify the scenario to run once at 8am and bundle all of a rep's due tasks into a single Slack message using Make's Array Aggregator module. This reduces notification noise for reps with 5+ tasks due daily.
  • Post to a shared #sales-followups channel with rep mentionsInstead of DMs, route reminders to a shared channel and mention the rep with @{{slackUserId}}. Sales managers get visibility into what's due without asking reps to report manually.
  • Update Zoho task status when a rep reacts to the Slack messageAdd a second Make scenario triggered by a Slack emoji reaction (e.g., :white_check_mark:) on the reminder message and use the Zoho CRM 'Update a Record' module to mark the task as Completed — no CRM login needed.

Related guides

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