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

How to Send Zoho CRM Follow-up Reminders to Slack with Zapier

Automatically sends a Slack message to a sales rep when a follow-up task or scheduled activity is due in Zoho CRM.

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

Best for

Small to mid-size sales teams (5–30 reps) who live in Slack and need due-date nudges without checking Zoho CRM manually.

Not ideal for

Teams with more than 200 follow-up tasks per month — Make handles that volume for free and Zapier will hit task limits fast.

Sync type

scheduled

Use case type

notification

Real-World Example

💡

A 12-person B2B software sales team uses this to ping reps in a shared #follow-ups Slack channel every time a Zoho CRM task hits its due date. Before this, reps forgot to check the CRM activity tab and roughly 20% of follow-up tasks slipped past their due date by a day or more. After setup, missed follow-ups dropped to near zero within the first two weeks.

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

Before You Start

Make sure you have everything ready.

Zoho CRM account with at least one active task that has a due date set
Zoho CRM user role with read access to Tasks and Activities modules — admin or standard user with module permissions
Slack workspace admin permission or ability to authorize a Slack bot app in your workspace
Zapier account — free tier works for testing, but a paid plan is needed for polling every 5 minutes and for the Filter + Formatter steps (both require multi-step Zaps, which are paid-only)
A dedicated Slack channel already created (e.g., #follow-ups or #sales-reminders) where the bot will post messages

Field Mapping

Map these fields between your apps.

FieldAPI Name
Required
Task SubjectSubject
Due DateDue_Date
Task OwnerOwner
5 optional fields▸ show
Contact NameWho_Id
Task StatusStatus
PriorityPriority
Task IDid
DescriptionDescription

Step-by-Step Setup

1

zapier.com > Dashboard > Create Zap

Create a New Zap and Name It

Log in to zapier.com and click the orange 'Create Zap' button in the top-left sidebar. Give the Zap a specific name at the top of the editor — something like 'Zoho CRM Due Tasks → Slack Reminder'. Naming it now saves confusion if you build multiple CRM Zaps later. You'll land in the Zap editor with a trigger step waiting to be configured.

  1. 1Click 'Create Zap' in the left sidebar
  2. 2Click the untitled name field at the top and type 'Zoho CRM Due Tasks → Slack Reminder'
  3. 3Click the '1. Trigger' block to open the trigger configuration panel
What you should see: The Zap editor opens with an empty trigger block and your new Zap name appears at the top of the page.
2

Zap Editor > Trigger > App & Event

Set Zoho CRM as the Trigger App

In the trigger panel, search for 'Zoho CRM' in the app search box. Select the official Zoho CRM app published by Zoho Corporation — there are third-party variants, avoid them. Next, click the 'Trigger Event' dropdown and choose 'New Task'. This event fires whenever Zapier polls Zoho CRM and finds a task that didn't exist on the previous poll — typically every 5–15 minutes on paid plans.

  1. 1Type 'Zoho CRM' in the 'Search for apps' field
  2. 2Select 'Zoho CRM' by Zoho Corporation from the results
  3. 3Click the 'Trigger Event' dropdown
  4. 4Select 'New Task' from the list
  5. 5Click 'Continue'
What you should see: The trigger panel shows 'Zoho CRM — New Task' with a 'Continue' button active and a prompt to connect your account.
Common mistake — Zapier's Zoho CRM integration does not have a native 'Task Due Today' trigger. You're triggering on task creation, then filtering by due date in a later step. If your team creates tasks with due dates far in the future, you must add a Filter step — otherwise you'll get Slack pings the moment any task is created.
Zapier
+
click +
search apps
Slack
SL
Slack
Set Zoho CRM as the Trigger …
Slack
SL
module added
3

Zap Editor > Trigger > Account > Sign in to Zoho CRM

Connect Your Zoho CRM Account

Click 'Sign in to Zoho CRM'. A popup window opens asking you to authorize Zapier. Log in with your Zoho credentials and click 'Accept' to grant access. Once authorized, Zapier redirects back to the editor and shows your connected account email. If your organization uses a custom Zoho domain or Zoho One SSO, make sure you log in through the correct region — Zoho splits accounts by data center (US, EU, IN, AU, JP).

  1. 1Click 'Sign in to Zoho CRM'
  2. 2Enter your Zoho CRM email and password in the popup
  3. 3Click 'Accept' on the Zoho permissions screen
  4. 4Confirm your account email appears in the account selector
  5. 5Click 'Continue'
What you should see: Your Zoho CRM account email appears in the 'Account' field with a green connected indicator.
Common mistake — Zoho CRM has separate data centers. If you're on the EU or IN data center and connect via the default US login, authorization will succeed but data pulls will return empty. Match your login region to where your CRM data actually lives.
Zapier settings
Connection
Choose a connection…Add
click Add
Slack
Log in to authorize
Authorize Zapier
popup window
Connected
green checkmark
4

Zap Editor > Trigger > Test > Test Trigger

Test the Zoho CRM Trigger

Click 'Test trigger' to pull in a real task from your Zoho CRM account. Zapier fetches the three most recently created tasks and shows them as sample records. Click through the samples to find one with a realistic due date — you'll use this data to build the filter and Slack message in later steps. If no tasks appear, create a test task in Zoho CRM first, then re-run the test.

  1. 1Click 'Test trigger'
  2. 2Review the sample task records Zapier pulls in
  3. 3Click each sample to inspect the fields — look for 'Due Date', 'Subject', 'Status', and 'Contact Name'
  4. 4Select the sample that best represents a real follow-up task
  5. 5Click 'Continue with selected record'
What you should see: You see at least one task record with fields like Subject, Due Date, Status, Owner, and Contact Name populated with real data from your CRM.
Zapier
▶ Turn on & test
executed
Slack
Zoho CRM
Zoho CRM
🔔 notification
received
5

Zap Editor > + > Filter

Add a Filter: Only Tasks Due Today

Click the '+' icon between the trigger and where the action will go, then choose 'Filter'. This step prevents the Zap from sending Slack messages for every new task — only tasks due today should fire a notification. Set the filter condition to: 'Due Date' contains today's date formatted as YYYY-MM-DD. Because Zapier's filter does exact string matching, you need to use Zapier's built-in date formatting via the 'Formatter' utility or match the format Zoho CRM outputs in the Due Date field.

  1. 1Click the '+' plus icon between the trigger and action steps
  2. 2Click 'Filter' from the options
  3. 3In 'Field', select 'Due Date' from the Zoho CRM trigger data
  4. 4Set the condition to '(Text) Contains'
  5. 5In the value field, insert today's date using Zapier's date token: type {{zap_meta_human_now}} or use a Formatter step to output today in YYYY-MM-DD format
  6. 6Click 'Continue'
What you should see: The filter block shows a green checkmark and confirms 'Your Zap would have passed the filter' when tested against your sample task due today.
Common mistake — Zoho CRM returns Due Date as a string in YYYY-MM-DD format (e.g., '2025-03-14'). Zapier's {{zap_meta_human_now}} outputs a full datetime string, not just the date. Add a Formatter > Date/Time > Format step before this filter to strip the time component — otherwise the contains match will fail and no reminders will send.
Slack
SL
trigger
filter
Condition
matches criteria?
yes — passes through
no — skipped
Zoho CRM
ZO
notified
6

Zap Editor > + > Formatter by Zapier > Date / Time > Format

Add a Formatter Step to Clean the Due Date

Insert a 'Formatter by Zapier' step before the Filter step. Choose 'Date / Time' as the transformation type, then 'Format' as the action. Set the input to today's datetime (use {{zap_meta_human_now}}) and set the output format to 'YYYY-MM-DD'. This gives you a clean date string like '2025-03-14' that you can reliably compare against the Zoho CRM Due Date field. Reorder this step to sit between the trigger and the filter.

  1. 1Click the '+' icon right after the trigger step
  2. 2Search for 'Formatter by Zapier' and select it
  3. 3Choose 'Date / Time' as the event
  4. 4Set 'Transform' to 'Format'
  5. 5Set 'Input' to {{zap_meta_human_now}}
  6. 6Set 'To Format' to 'YYYY-MM-DD'
  7. 7Click 'Continue' and test — confirm output is today's date only, no time
What you should see: The Formatter step outputs a single string like '2025-03-14' — no timestamp, no timezone suffix.
Common mistake — If your Zoho CRM account is set to a non-UTC timezone and your Zapier account is UTC, the formatted 'today' date can differ by a day near midnight. Either align both to the same timezone in their respective settings, or schedule this Zap to only run during business hours using Zapier's built-in schedule filter.
Message template
📬 New entry: {{1.name}}
Email: {{1.email}}
Details: {{1.description}}

This Code by Zapier step runs after the Zoho CRM trigger and before the Filter step. It formats the task's due date, constructs a direct CRM link, and adds a priority emoji prefix — three things Zapier's standard field mapping can't do in one step. Paste this into a 'Code by Zapier' action set to 'Run Javascript', mapping inputData fields to the Zoho CRM trigger outputs for Subject, Due_Date, Priority, Owner, Who_Id, and id.

JavaScript — Code Stepconst { subject, dueDate, priority, owner, contactName, taskId } = inputData;
▸ Show code
const { subject, dueDate, priority, owner, contactName, taskId } = inputData;
// Format today's date as YYYY-MM-DD for filter comparison
const today = new Date();

... expand to see full code

const { subject, dueDate, priority, owner, contactName, taskId } = inputData;

// Format today's date as YYYY-MM-DD for filter comparison
const today = new Date();
const todayStr = today.toISOString().split('T')[0];

// Map priority to emoji prefix
const priorityEmoji = {
  'High': '🔴',
  'Medium': '🟡',
  'Low': '🟢'
};
const emoji = priorityEmoji[priority] || '⚪';

// Build the Slack message text
const slackMessage = `${emoji} Follow-up due today: *${subject}* with ${contactName} — Assigned to: ${owner} | Priority: ${priority}`;

// Build direct Zoho CRM task link (replace ORG_ID with your actual org ID)
const orgId = '3892710'; // <-- update this to your Zoho org ID
const taskLink = `https://crm.zoho.com/crm/org${orgId}/tab/Tasks/${taskId}`;

// Is this task actually due today?
const isDueToday = dueDate === todayStr;

return {
  slackMessage,
  taskLink,
  todayStr,
  isDueToday,
  priorityEmoji: emoji
};
7

Zap Editor > Filter Step > Edit > Value Field

Update the Filter to Use the Formatter Output

Go back to your Filter step and update the value field. Instead of the raw date token, map in the output from the Formatter step you just created — it should appear in the dropdown as something like '2. Formatter > Output'. Now the filter compares Zoho CRM's Due Date field against a clean YYYY-MM-DD string. Test the filter again with your sample task to confirm it passes.

  1. 1Click on the Filter step to open it
  2. 2Click into the value field on the right side of the condition
  3. 3Delete the previous date token
  4. 4Click the data picker icon and select '3. Formatter — Output' (or whichever step number applies)
  5. 5Click 'Continue' and retest the filter
What you should see: Filter test shows 'Would have passed' with the Zoho Due Date and the Formatter output both showing the same YYYY-MM-DD date string.
Common mistake — Filters are the most common place setups break. Double-check the field name and value exactly match what your app sends — a single capital letter difference will block everything.
Message template
📬 New entry: {{1.name}}
Email: {{1.email}}
Details: {{1.description}}
8

Zap Editor > + > Action > Slack > Send Channel Message

Add Slack as the Action App

Click the '+' icon after the filter and add an action step. Search for 'Slack' and select it. Choose 'Send Channel Message' as the action event if you want reminders in a shared team channel, or 'Send Direct Message' if reminders should go only to the assigned rep. For most sales teams, a dedicated #follow-ups channel works better — it creates visibility and accountability.

  1. 1Click '+' after the Filter step
  2. 2Search for 'Slack' and select the official Slack app
  3. 3Choose 'Send Channel Message' as the action event
  4. 4Click 'Continue'
  5. 5Click 'Sign in to Slack' and authorize Zapier in the popup
  6. 6Select your Slack workspace from the account dropdown
  7. 7Click 'Continue'
What you should see: Slack account shows as connected with your workspace name visible, and the action configuration panel opens.
Common mistake — Zapier sends Slack messages as the bot user 'Zapier', not as the CRM rep's identity. If your team needs to know which rep the task belongs to, include the Zoho CRM 'Task Owner' field in the message body — it won't auto-attribute to a Slack user unless you add a lookup step.
9

Zap Editor > Action > Slack > Configure > Channel + Message Text

Configure the Slack Message

Set the 'Channel' field to your target Slack channel (e.g., #follow-ups). Build the message text by mapping in fields from the Zoho CRM trigger: task Subject, Contact Name, Due Date, and Task Owner. Write the message so a rep can immediately understand what action is needed. A format like '🔔 Follow-up due today: [Subject] with [Contact Name] — assigned to [Owner]' gives all the context in one line. Optionally add a direct link to the Zoho CRM record using the Record ID.

  1. 1Click the 'Channel' field and type or select '#follow-ups' (or your preferred channel)
  2. 2Click into the 'Message Text' field
  3. 3Type: '🔔 Follow-up due today: '
  4. 4Click the data picker and insert 'Subject' from the Zoho CRM trigger
  5. 5Type ' with ' then insert 'Contact Name'
  6. 6Type ' — Assigned to: ' then insert 'Task Owner'
  7. 7Optionally add a CRM record URL: type 'https://crm.zoho.com/crm/org[YOUR_ORG_ID]/tab/Tasks/' and append the Task ID field
What you should see: The Message Text preview shows a realistic Slack message with all mapped fields filled in from your sample task data.
Common mistake — Zoho CRM's 'Task Owner' field returns the owner's full name as a string — it does not return a Slack user ID. You cannot @mention the rep automatically without adding a lookup table (e.g., a Google Sheet that maps CRM owner names to Slack member IDs) and a Zapier lookup step.
Message template
📬 New entry: {{1.name}}
Email: {{1.email}}
Details: {{1.description}}
10

Zap Editor > Action > Test > Test Action

Test the Full Zap

Click 'Test action' to send a real Slack message using your sample Zoho CRM task data. Open your Slack workspace and check the target channel — you should see the formatted reminder message appear within 10–15 seconds. Review the message carefully: confirm the task subject, contact name, owner, and date all look correct. If any fields show as 'undefined' or blank, go back to the message configuration and re-map those fields.

  1. 1Click 'Test action'
  2. 2Open your Slack workspace in a separate tab
  3. 3Navigate to the #follow-ups channel
  4. 4Confirm the test message appears with all fields populated
  5. 5If a field is blank, click 'Edit' on the action step and remap it
What you should see: A Slack message appears in your target channel with the task subject, contact name, due date, and owner all correctly filled in from real Zoho CRM data.
11

Zap Editor > Publish > Turn On

Turn On the Zap

Click the 'Publish' button in the top-right corner of the Zap editor to activate it. Toggle the Zap to 'On'. Zapier will now poll Zoho CRM for new tasks every 5–15 minutes (depending on your plan). Every new task with today's due date that passes the filter will trigger a Slack message. Monitor the Zap History tab for the first 24 hours to confirm tasks are being picked up and messages are sending without errors.

  1. 1Click 'Publish' in the top-right corner
  2. 2Click the toggle to set the Zap status to 'On'
  3. 3Navigate to 'Zap History' from the left sidebar
  4. 4Wait 15 minutes and refresh — confirm at least one successful run appears if tasks were due today
  5. 5Click any run to inspect the trigger data and action output
What you should see: The Zap shows a green 'On' status badge. Zap History begins populating with run records showing 'Success' status within the next polling cycle.
Common mistake — Zapier only triggers on tasks created after the Zap is turned on. Any tasks that already existed in Zoho CRM before activation — even if due today — will not fire. To catch existing tasks, manually send Slack messages for any open follow-ups due today on day one.

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

Use Zapier for this if your sales team is non-technical, already pays for a Zapier plan, and has fewer than 150 follow-up tasks per month. The guided Zap builder handles the Zoho CRM connection, the date filter, and the Slack message in about 25 minutes with no code required. The one scenario where you'd pick something else immediately: if your team needs reminders at a specific time of day (like 9 AM sharp), Zapier's polling model won't cut it — use a Zoho CRM workflow rule with a webhook trigger into Make or n8n instead.

Cost

The math is straightforward. This Zap uses 4 tasks per run: trigger poll, Formatter step, Filter step, Slack message. At 50 follow-up tasks per day (roughly 1,100/month), you're consuming about 4,400 tasks/month. Zapier's Starter plan includes 750 tasks/month for $19.99. Professional gives you 2,000 tasks for $49. At 1,100 tasks/month you need the Professional plan at minimum. Make's free tier handles 1,000 operations/month — the equivalent workflow in Make runs in 3 operations per task, so you'd cover about 333 tasks/month for free, or use Make's Core plan at $9/month for 10,000 operations to handle the same 1,100 tasks for under $9. Zapier costs 5x more at this volume.

Tradeoffs

Here's how the competitors compare on this specific use case. Make has a native Zoho CRM 'Watch Records' module with a real-time webhook option — no polling delay, tasks fire instantly when due. n8n has a Zoho CRM node and lets you write a single JS function to handle date formatting, filtering, and message construction in one step rather than three separate Zapier steps. Power Automate can connect to Zoho CRM only via HTTP connector (no native Zoho module), which adds significant setup complexity — skip it here. Pipedream lets you schedule a daily workflow at exactly 8:59 AM that queries Zoho CRM's API for all tasks due today and sends one Slack message per rep — far cleaner than per-task polling. Zapier still wins for one reason: if your team has a Zapier subscription already and nobody wants to learn a new tool, the time cost of switching outweighs the monthly savings.

Three things you'll hit after setup. First, Zoho CRM's Task Owner field returns a nested object in some API responses — the top-level mapping shows a user ID, not a name. You have to drill into the 'Name' sub-property in the Zapier data picker or you'll get a numeric ID in your Slack message. Second, if your sales team creates tasks in bulk (e.g., after importing a lead list), all those tasks fire through the Zap simultaneously on the next poll — this can flood your Slack channel with dozens of messages at once. Add a Delay by Zapier step to throttle them. Third, Zapier deduplication relies on task ID — if a task gets deleted and recreated in Zoho CRM (which some CRM admins do when fixing data), Zapier treats the new record as fresh and fires a second reminder for the same follow-up.

Ideas for what to build next

  • Add a Snooze or Escalation for Overdue TasksBuild a second Zap using the 'Updated Task' trigger in Zoho CRM to catch tasks that pass their due date with Status still 'Not Started'. Send a follow-up Slack message to the rep's manager if a task is more than 24 hours overdue.
  • Log Reminder Sent Back to Zoho CRMAdd a second action step after the Slack message that updates the Zoho CRM task with a note like 'Slack reminder sent on [date]'. This creates an audit trail in the CRM so managers can see which reps were notified.
  • Send a Daily Digest Instead of Per-Task MessagesReplace this per-task Zap with a scheduled Make scenario that runs once each morning, collects all tasks due that day using Zoho CRM's search module, and posts a single formatted Slack digest per rep. This reduces Slack noise significantly for teams with 10+ daily follow-ups.

Related guides

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