

How to Send Zoho CRM Follow-up Reminders to Slack with Power Automate
A scheduled Power Automate flow checks Zoho CRM for tasks or activities due today and sends a direct Slack message to the assigned sales rep with the contact name, task subject, and due time.
Steps and UI details are based on platform versions at time of writing — check each platform for the latest interface.
Best for
Sales teams already inside the Microsoft ecosystem who need daily task reminders pushed to Slack without building custom integrations.
Not ideal for
Teams that need reminders fired within seconds of a task being created — this scheduled approach runs on a fixed interval, not in real time.
Sync type
scheduledUse case type
notificationReal-World Example
A 12-person SaaS sales team uses this flow to send each rep a 9 AM Slack message listing every follow-up task due in Zoho CRM that day. Before this, reps logged into Zoho manually each morning, and tasks due after lunch were regularly missed until the next day. Missed follow-ups dropped by about 40% in the first month after turning this on.
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 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.
Field Mapping
Map these fields between your apps.
| Field | API Name | |
|---|---|---|
| Required | ||
| Task Subject | Subject | |
| Due Date | Due_Date | |
| Task Status | Status | |
| Assigned To | Owner | |
4 optional fields▸ show
| Contact Name | Contact_Name |
| Description | Description |
| Priority | Priority |
| Activity Type | Activity_Type |
Step-by-Step Setup
make.powerautomate.com > My flows > + New flow > Scheduled cloud flow
Open Power Automate and create a Scheduled cloud flow
Go to make.powerautomate.com and sign in. In the left sidebar, click 'My flows', then click '+ New flow' at the top of the page. Select 'Scheduled cloud flow' from the dropdown. Give the flow a name like 'Zoho CRM Follow-up Reminders to Slack'. Set the start time to 9:00 AM and the recurrence to 'Day' so it runs every weekday morning.
- 1Click 'My flows' in the left sidebar
- 2Click '+ New flow' in the top toolbar
- 3Select 'Scheduled cloud flow'
- 4Enter flow name: 'Zoho CRM Follow-up Reminders to Slack'
- 5Set start time to 9:00 AM and repeat interval to 1 Day
- 6Click 'Create'
Flow editor > + New step > Search: Zoho CRM > Sign in
Connect Zoho CRM as a connection
Click '+ New step' below the Recurrence trigger. In the action picker search bar, type 'Zoho CRM'. Select the 'Zoho CRM' connector from the results. If you have no existing connection, Power Automate will prompt you to sign in. Click 'Sign in' and authenticate with the Zoho account that has CRM access. The connection is saved automatically and available for all future steps.
- 1Click '+ New step'
- 2Type 'Zoho CRM' in the search bar
- 3Click the Zoho CRM connector
- 4Click 'Sign in' in the connection panel
- 5Log in with your Zoho CRM admin or sales manager account
- 6Click 'Allow' on the Zoho permissions screen
Flow editor > Zoho CRM > Search Records
Add the 'Search Records' action to pull today's due tasks
With the Zoho CRM connector selected, search for the action 'Search Records' and select it. Set the Module Name to 'Tasks'. In the Criteria field, you will build a filter to return only tasks due today that are not yet marked complete. Use the Power Automate expression editor to build the due date filter dynamically so it always targets the current day.
- 1In the Zoho CRM action picker, select 'Search Records'
- 2Set Module Name to 'Tasks'
- 3In the Criteria field, click 'Enter custom value'
- 4Type the criteria: (Due_Date:equals:@{formatDateTime(utcNow(), 'yyyy-MM-dd')})
- 5Set the 'Per Page' field to 200 to avoid truncation on busy days
Flow editor > + New step > Control > Apply to each
Add an 'Apply to each' loop to process each task
Click '+ New step' and search for 'Apply to each' (it is a Control action, not a connector). In the 'Select an output from previous steps' field, select the 'data' array output from the Zoho CRM Search Records action. Everything you add inside this loop will run once per task returned. This is how you send one Slack message per due task rather than a single bulk message.
- 1Click '+ New step'
- 2Click 'Control' in the connector categories
- 3Select 'Apply to each'
- 4Click inside the 'Select an output' field
- 5Select 'data' from the Zoho CRM dynamic content panel
Apply to each loop > + Add an action > Control > Condition
Add a condition to filter only open tasks
Inside the 'Apply to each' loop, click '+ Add an action' and select 'Condition' from the Control group. Set the left side to the 'Status' dynamic content field from the Zoho CRM task. Set the operator to 'is not equal to' and type 'Completed' in the right field. Place all Slack actions inside the 'Yes' branch (meaning status is not Completed). This prevents reminders from firing on tasks already closed.
- 1Inside the loop, click '+ Add an action'
- 2Select 'Control', then 'Condition'
- 3In the left field, select 'Status' from Zoho CRM dynamic content
- 4Set the operator dropdown to 'is not equal to'
- 5Type 'Completed' in the right field
- 6Confirm the 'If yes' branch is where you will add Slack actions
Apply to each > Condition > If yes > + Add an action > Slack > Send message
Connect Slack inside the 'If yes' branch
Inside the 'If yes' branch, click '+ Add an action'. Search for 'Slack' and select the Slack connector. Choose the action 'Send message'. If no Slack connection exists, click 'Sign in with Slack' and authenticate. You will need to authorize the Power Automate Slack app in your Slack workspace — this requires Slack admin approval if your workspace restricts third-party apps.
- 1Inside the 'If yes' branch, click '+ Add an action'
- 2Type 'Slack' in the search bar
- 3Select the Slack connector
- 4Choose 'Send message' from the action list
- 5Click 'Sign in' and authorize with your Slack account
- 6Click 'Allow' on the Slack OAuth screen
Slack > Send message > Channel Name + Message Text
Configure the Slack message content and recipient
In the 'Send message' action, set the Channel Name to the Slack user ID or channel of the assigned rep. For direct messages, use the format '@firstname.lastname' or pull the assigned user's email from Zoho CRM and map it. In the Message Text field, build the reminder message using dynamic content from Zoho CRM — pull in the task Subject, Due Date, Contact Name, and any notes. Write a message that gives the rep everything they need without opening Zoho.
- 1Set Channel Name to the Slack handle or use '@' followed by dynamic email from Zoho
- 2Click in the Message Text field
- 3Type: '🔔 Follow-up Due Today: '
- 4Insert dynamic content: Subject (from Zoho CRM task)
- 5Add a new line and insert: 'Contact: ' + Contact Name dynamic field
- 6Add: 'Due: ' + Due_Date dynamic field
- 7Add: 'Description: ' + Description dynamic field
Apply to each > + Add an action > Data Operation > Parse JSON
Add a Parse JSON step to extract nested Zoho fields
Zoho CRM's Search Records action returns some related fields (like Contact Name linked to the task) as nested JSON objects, not flat strings. Add a 'Parse JSON' action before the Slack step to extract the Contact Name cleanly. Click '+ Add an action' inside the loop (before the Condition), select 'Data Operation', then 'Parse JSON'. Paste a sample Zoho task JSON response as the schema so Power Automate can map the nested fields into usable dynamic content tokens.
- 1Inside the loop, click '+ Add an action' above the Condition
- 2Search 'Data Operation' and select 'Parse JSON'
- 3In the Content field, select 'Current item' from dynamic content
- 4Click 'Generate from sample'
- 5Paste a sample Zoho task JSON object from your CRM API response
- 6Click 'Done' to generate the schema automatically
Flow editor > Test (top right) > Manually > Run flow
Test the flow with a real Zoho task
Before saving, create a test task in Zoho CRM with today's date and a status of 'Not Started'. Then click 'Test' in the top right of the Power Automate flow editor and select 'Manually'. Click 'Run flow'. Power Automate will execute the flow immediately, ignoring the schedule. Watch the run history expand in real time — each step shows a green checkmark or a red X with an error message.
- 1Create a test task in Zoho CRM with today's due date
- 2In the flow editor, click 'Test' in the top right corner
- 3Select 'Manually'
- 4Click 'Run flow'
- 5Watch each step expand and confirm green checkmarks
- 6Check Slack to confirm the reminder message arrived
Flow editor > Save > My flows > [flow name] > Flow detail page
Enable the flow and confirm the schedule
Click 'Save' in the top toolbar. The flow status changes from 'Draft' to 'On'. Go to 'My flows' in the left sidebar and locate your new flow. Click on it to see the flow detail page. Confirm the 'Next run' timestamp matches your intended time — 9:00 AM in your local timezone (converted to UTC as set in Step 1). If the next run shows an incorrect time, click 'Edit' and adjust the Recurrence trigger's time zone setting.
- 1Click 'Save' in the top toolbar
- 2Click 'My flows' in the left sidebar
- 3Click on your flow name to open the detail page
- 4Check the 'Next run' field under the Run history section
- 5If the time is wrong, click 'Edit' and fix the Recurrence trigger timezone
Paste this expression into a Power Automate 'Compose' action inside the Apply to each loop, before the Slack step. It builds the full Slack message string with conditional emoji based on task priority and formats the due date as a readable string. Reference the Compose output in the Slack 'Message Text' field using the 'Outputs' dynamic content token.
JavaScript — Code Stepif(▸ Show code
if(
equals(items('Apply_to_each')?['Priority'], 'High'),
concat(... expand to see full code
if(
equals(items('Apply_to_each')?['Priority'], 'High'),
concat(
'🔴 *High Priority Follow-up Due Today*\n',
'Task: ', items('Apply_to_each')?['Subject'], '\n',
'Contact: ', items('Apply_to_each')?['Contact_Name']?['name'], '\n',
'Due: ', formatDateTime(items('Apply_to_each')?['Due_Date'], 'MMMM d, yyyy'), '\n',
'Notes: ', if(empty(items('Apply_to_each')?['Description']), 'No notes added.', items('Apply_to_each')?['Description'])
),
concat(
'🔔 Follow-up Due Today\n',
'Task: ', items('Apply_to_each')?['Subject'], '\n',
'Contact: ', items('Apply_to_each')?['Contact_Name']?['name'], '\n',
'Due: ', formatDateTime(items('Apply_to_each')?['Due_Date'], 'MMMM d, yyyy'), '\n',
'Notes: ', if(empty(items('Apply_to_each')?['Description']), 'No notes added.', items('Apply_to_each')?['Description'])
)
)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 Power Automate for this if your organization already has Microsoft 365 licenses — the Zoho CRM and Slack connectors are included, so you pay nothing extra. It also makes sense if your IT team manages automation centrally and needs flows stored inside a Microsoft tenant with full audit logs and data loss prevention policies. If you are an individual sales ops person without Microsoft 365 and you just want reminders working by end of day, Make or Zapier will get you there faster.
Power Automate's pricing for this workflow: a Scheduled flow running once daily with 20 tasks in the loop uses roughly 60 actions per run (trigger + search + 20 iterations × 2 actions each). At 30 days that is 1,800 actions per month. Microsoft 365 Business Basic includes 6,000 actions per month per user — this workflow costs you nothing extra on that plan. If you are on a standalone Power Automate Free plan (the 750-run limit plan), you will hit the wall in about 12 days with a team of 20 reps. The per-user Power Automate plan at $15/month gives 40,000 actions and removes that risk entirely. Zapier's equivalent would cost $49/month on the Team plan to support a multi-step workflow at this volume.
Zapier's Zoho CRM trigger for tasks is more reliable at catching new records in real time — it polls every 1–2 minutes versus Power Automate's minimum 1-minute polling on premium connectors. Make handles the conditional message formatting with less friction — the if() formula in Make's scenario editor is more forgiving than Power Automate's expression language, which requires exact JSON path syntax. n8n lets you run this entire flow self-hosted for free, and its Zoho CRM node supports more filter operators out of the box. That said, Power Automate is the right call when the IT requirement is Microsoft-only tooling, when you need native integration with SharePoint or Teams alongside Slack, or when compliance means your data cannot leave the Microsoft cloud.
Three things you will hit after setup. First, Zoho CRM's Search Records API caps at 200 records per call with no native pagination in the Power Automate connector — if you have more than 200 tasks due on any day (unlikely but possible for large teams), some tasks will be silently skipped. Second, the Slack connector in Power Automate sends messages as the authenticated user, so recipients see reminders coming from a real person's account, not a bot. This confuses reps who try to reply. Set expectations early or switch to the HTTP connector with a dedicated Slack bot token. Third, if a Zoho CRM field you are mapping (like Contact Name) is empty on some tasks, Power Automate throws a null reference error and stops that loop iteration — the rest of the tasks still process, but the failed ones leave no trace in Slack. Add a null check using the empty() expression before mapping any optional field.
Ideas for what to build next
- →Add a Slack button to mark tasks complete in Zoho — Use the HTTP connector to call the Slack API with Block Kit interactive components, adding a 'Mark Complete' button to each reminder. Wire up a separate flow triggered by a webhook to update the Zoho CRM task status when a rep clicks it.
- →Send a daily digest instead of per-task messages — Replace the Apply to each loop with a Compose action that concatenates all due tasks into a single bulleted message, then sends one Slack DM per rep. This reduces Slack noise when reps have 5+ tasks due in a day.
- →Escalate overdue tasks to managers — Add a second Zoho CRM query in the same flow that pulls tasks with a due date of yesterday and a status of not completed. Send those to the sales manager's Slack with the rep's name attached so overdue items get visibility.
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