
Welcome back to another week of Kaizen!
Last week, we discussed how Zylker Cloud Services used the Workflow APIs to discover and audit all the automations in their CRM, listing every workflow, checking triggers, and understanding their automation limits. This week, we take the next step: understanding what configurations are valid before creating or updating workflows via APIs.
Step 4: Workflow Rule Configurations API
When you work in the CRM UI, creating workflows feels straightforward. The interface shows only valid triggers and actions. Try adding an unsupported action, and it simply will not appear. This is because the UI enforces hundreds of rules behind the scenes.
With APIs, these validations must be handled manually. That is where the Workflow Rule Configurations API comes in. It gives all the valid triggers and actions for a given module, preventing errors before they happen.
Why this API matters
Consider two examples:
You want to create a workflow for the Products module based on a Scoring Rule update. The UI hides this option because scoring rules are not supported for Products.
You try to add a Field Update action for a Record Delete trigger. This is invalid, as the record no longer exists. The UI prevents it, but via API, you would get an error if you try to create or update the workflow with this configuration.
The Configuration API removes this guesswork, allowing you to fetch and respect valid triggers and actions.
Sample Request:
GET {api-domain}/crm/v8/workflow_configurations?module=Deals
Sample Response:
{ "workflow_configurations": { "related_triggers_details": [ { "api_name": "Notes", // The API name of the related module that can trigger workflows "module": { // Details about the related module "singular_label": "Note", "plural_label": "Notes", "api_name": "Notes", "name": "Notes", "id": "4876876000000002197" }, "name": "Notes", // Module name "triggers": [ // Available triggers for this related module { "api_name": "create", "deprecated": false, "name": "Create", "scheduled_actions_supported": true, "actions": [ // List of supported actions for this trigger "add_tags", "remove_tags", "email_notifications", "tasks", "create_record", "create_connected_record", "add_meeting", "webhooks", "functions", "flow" ] }, // ... other triggers (create_or_edit, edit, delete) omitted for brevity ] } ], "triggers": [ // Primary triggers for the Deals module itself { "api_name": "score_increase", "deprecated": false, "name": "ScoreIncrease", "scheduled_actions_supported": false, // Indicates whether scheduled actions are allowed for this trigger "actions": [ // Only these instant actions are supported "field_updates", "assign_owner", "add_tags", "remove_tags", "email_notifications", "tasks", "webhooks", "functions", "circuits", "flow" ] }, // ... other triggers omitted for brevity ... ], "actions": [ // Details about available workflow actions { "is_clickable": true, "associate_action": false, "limit_per_action": null, "api_name": "schedule_call", "supported_in_scheduled_action": true, "name": "ScheduleCall", "limit": 1 // Maximum instances per workflow }, { "is_clickable": true, "associate_action": true, "limit_per_action": null, "api_name": "tasks", "supported_in_scheduled_action": true, "name": "Task", "limit": 5 }, // ... other actions omitted for brevity ... ] } } |
Interpreting and using the Workflow Configuration API
The configuration response might look complex, but it gives us all the information we need about configuring Workflow Rules in Zoho CRM, for the specific module.
4.1 "What can trigger my Workflow?"
The triggers array shows all the supported triggers for that specific module.
"triggers": [ { "api_name": "create", "deprecated": false, "name": "Create", "scheduled_actions_supported": true, "actions": [ "field_updates", "assign_owner", "add_tags", "remove_tags", "email_notifications", "tasks", "create_record", "create_connected_record", "add_meeting", "webhooks", "functions", "circuits", "flow" ] }, . . // ... other triggers omitted for brevity ... { "api_name": "score_increase", "deprecated": false, "name": "ScoreIncrease", "scheduled_actions_supported": false, "actions": [ "field_updates", "assign_owner", "add_tags", "remove_tags", "email_notifications", "tasks", "webhooks", "functions", "circuits", "flow" ] } ] |
The response lists all available triggers for the module. For each trigger type, you get:
Trigger conditions: When the workflow will be triggered (on create, edit, score change, etc.)
Action compatibility: Which actions can be used with each trigger type
Scheduled actions support: Whether scheduled actions are supported for that trigger or not.
For instance, the score_increase trigger triggers the workflow when the score of a record is increased. The scheduled_actions_supported key is false for this trigger, which means that this specific trigger type doesn't support scheduled actions. This directly translates to API behaviour: attempting to configure a Workflow Rule via API with a scheduled action for the score_increase trigger will result in an error.
This API constraint is visibly enforced in the CRM interface. When configuring a score-based trigger in the UI:

The UI proactively prevents invalid configurations by hiding unsupported options. This is the pain point that Workflow Rules Configuration API solves when you work on your workflows via APIs.
4. 2. "What can my Workflow actually do?" - Understanding Actions
The actions array defines the execution capabilities of your workflows. For each action type, you get important information like:
Limits per action instance: Maximum number of items that can be processed within a single action instance
Instance limits: How many times this specific action can be added to a condition in the Workflow rule.
Scheduled action support: Whether the action can be added as a scheduled action.
For example, in the add_tags action:
{ "is_clickable": true, "associate_action": false, "limit_per_action": 10, // Maximum 10 tags per Add Tags action "api_name": "add_tags", "supported_in_scheduled_action": true, "name": "AddTags", "limit": 1 // Maximum one Add Tags action per workflow } |
From this data, it is clear that within a single Add Tags action, you can select up to 10 specific tags to add. Similarly, you can only include one Add Tags action instance in the entire workflow rule. Also, this action cannot be used as a scheduled action.
This has direct implications for API users:
Attempting to configure a workflow that adds more than 10 tags in one action will result in an error
Trying to add two separate Add Tags actions to the same workflow will fail
Adding a Add Tags action under scheduled actions section will also result in an error.
In the UI, these constraints are proactively taken care of. As seen in the GIF, if you add fewer than 10 tags, clicking Add Tags again only lets you edit the existing action. Also it lets you add only up to 10 tags in an action. And if you have already added an action with 10 tags, the Add Tags option will no longer be available. Either way, the system prevents any possibility of adding a second Add Tags action, regardless of tag count.
This UI experience is what the Workflow Rules Configuration API replicates for developers. By checking these limits before making API calls, you can build workflows using APIs with the same confidence and error-free experience that UI users have.
4.3. “What can trigger my Workflow from a related module?” – Understanding related triggers
The related_triggers_details array shows how changes in related records can trigger workflows in your primary module. For example, in the Deals module, for the Notes related trigger:
"related_triggers_details": [ { "api_name": "Notes", // The API name of the related module "module": { // Detailed information about the related module "singular_label": "Note", "plural_label": "Notes", "api_name": "Notes", "name": "Notes", "id": "4876876000000002197" }, "name": "Notes", // Module name "triggers": [ // Available triggers for this related module { "api_name": "create", // Trigger when related records are created "deprecated": false, "name": "Create", "scheduled_actions_supported": true, "actions": [ // Supported workflow actions for this trigger "add_tags", "remove_tags", "email_notifications", "tasks", "create_record", "create_connected_record", "add_meeting", "webhooks", "functions", "flow" ] }, // ... other triggers (create_or_edit, edit, delete) omitted for brevity ] } ] |
For each related module, you get:
Module information: Details about the related module that can trigger workflows.
Available triggers: The actions on the related record (create, edit, delete, etc) that can trigger the workflow.
Supported actions: For each trigger, the actions that are supported for that specific trigger.
For instance, the Notes related trigger allows you to create workflows that execute when notes are added to deals. The configuration shows that when a note is created, your workflow can perform actions like sending email notifications, creating tasks, triggering webhooks, and more.
If you try to include an unsupported trigger or unsupported action, the API call will fail. For example, adding a field_updates action for a Notes create trigger . The configuration API response clearly shows that field_updates is not among the supported actions for Notes-related triggers.
The API also gives us important differences between trigger-action configurations. For example, while field_updates action is supported for the create trigger for the main module (Deals), the same action is not supported for the related module (Notes) create trigger. These distinctions would otherwise only be discovered through API errors.
In the UI, this limitation is enforced. When setting up a workflow triggered by Notes, the "Field Updates" action does not appear in the available actions list.
By checking the related_triggers_details section before making API calls, you can discover exactly which actions are supported for each related module trigger, thus avoiding configuration errors while creating or updating Workflow rules.
Conclusion
The Workflow Configuration API transforms how we approach automation development through APIs. Instead of discovering constraints through failed API calls, we can now design workflows with the right configuration, without any trial-and-error methods. It gives us complete visibility into all valid trigger-action combinations before a single line of code is written, enough information to build automations triggered by related records, and limit awareness to respect action constraints before they become API errors.
For Zylker, this means we can now confidently proceed with updating the old Workflow rules and creating new ones. In our next post, we will put this knowledge into action.
We hope that you found this post useful. If you have any questions or feedback, let us know in the comments below, or write to us at support@zohocrm.com. We would love to hear from you!
Recent Topics
On Edit Validation Blueprint
Hello, I have a notes field and a signature field. When the Approve button is clicked, the Signature field will appear and must be filled in. When the Reject button is clicked, the Notes field will appear and must be filled in. Question: Blueprint will
PDF Generator Upgrade
Hi Team, What will happen if I don't make any changes for existing template. Zoho just ask us upgrade but haven't tell the benefit. Zoho Corporation
Delete button
Hi, The delete button were hide into the three dot button. Can I display outside? why Zoho make this update?
Zoho Subscriptions -- Zoho Commerce integration
Is there integration between Zoho Subscriptions and Zoho Commerce? I would like to create subscription plans in Zoho Subscritpions and list them for on my Zoho Commerce store.
Synching changes to Stripe when changes are made in Zoho Billing
We have a situation where we have merged customers in Zoho BIlling and then found out later that the payment in Stripe was not updated and still associated with the old customer record. The card gets updated and billed, but that payment is still associated
How can I link Products in a Deal Subform to the Products Module
Hello, I have a pricing subform on our Deals page and use a lookup field to associate a product with each line. I want to be able to look at a product page within the Products module and see a list of the deals connected to that product. I have this working
Help Center and SEO: Any Benefit to My Domain-Mapped Website Ranking?
First of, I love the Help Center which I've just decided to integrate into my website to replace its old-fashioned FAQs. So much more to achieve there now! Lots of new benefits to the site visitors and to me in terms of organizing and delivering all the
Business Hours with lunch break
Our business hours are: mon - fri 08:30 - 13:00, 15:00 - 18:30. How can I handle the lunch break? If I use 8:30 - 18:30 it obviously breaks SLA. Thanks
Zoho Desktop App- Unable to Minimize/Freezes
I'm having issues with my Zoho Mail desktop app (PC). When go on my desktop and open the app this is what happens: - Unable to minimize and close app (in the screenshot attached you can see at the top right there is no option to minimize/close) - Unable
Can Zoho Marketing Automation send OTP codes via WhatsApp during user registration?
The flow I would like to implement is: A user signs up in the mobile app and enters their phone number. The system generates a one-time verification code (OTP). The OTP is sent to the user via WhatsApp message. The user enters the code in the app to confirm
Enable Free External Collaboration on Notecards in Zoho Notebook
Hi Zoho Notebook Team, I would like to suggest a feature enhancement regarding external collaboration in Zoho Notebook. Currently, we can share notes with external users, and they are able to view the content without any issue. However, when these external
Can I export to PDF in Zoho Learn
I have seen help pages where export to pdf options are available but I do not see that option available from the application. I see that exprt is available in my free trial version but that is only to html pages. I need to be able to export my manuals
Zoho Commerce
Hi, I have zoho one and use Zoho Books. I am very interested in Zoho Commerce , especially with how all is integrated but have a question. I do not want my store to show prices for customers that are not log in. Is there a way to hide the prices if not
Zoho Sprints iOS app update: Global view, screen capture control, file encryption, tags enhancement
Hello everyone! We are excited to introduce new features in the latest version(v2.1) of the Zoho Sprints iOS app update. Let’s take a quick look at what’s new. 1. Global view Global view brings all your project items into one centralised space. You can
Marking a meeting 'done'.
I would like to somehow mark a meeting 'done' and placed under the contact's page rather than deleting it and having no record of it. Am I missing a button that does this?
Zoho Projects Android and iOS app update: Conditional layout rules for Tasks
Hello everyone! Task conditional layout rules configured on the web app(projects.zoho.com) are now applied on the Zoho Projects Android and iOS app. Conditional layout rules can be set for the Add/ edit task form and it allows you to change the property
How to account for vat with postponed VAT accounting
Hi everyone, looking for some help with postponed VAT accounting, I use DHL express for my imports and they used to pay the VAT for me and then invoice me. I could then log this as a bill and the VAT element from import was recorded as input VAT, all
Introducing Formula Fields for performing dynamic calculations
Greetings, With the Formula Field, you can generate numerical calculations using provided functions and available fields, enabling you to derive dynamic data. You can utilize mathematical formulas to populate results based on the provided inputs. This
Zobot with Plugs
Hello, I am having a problem with Zobot using Plugs. Here is my current flow: When I run the flow, I should immediately see the messages from the initial cards (Send Message cards), then after running the plug, and finally, see the messages after the
Use URL field to populate Image in a Email Template
We have two records Record 1: Appointments (with a Lookup to Doctors module) Related Record 2: Doctors (with a URL field that is an image of the doctor) We would like to populate a CRM email template with the image of the URL field for the related doctor
Is there a way to show contact emails in the Account?
I know I can see the emails I have sent and received on a Contact detail view, but I want to be able to see all the emails that have been sent and received between all an Accounts Contacts on the Account Detail view. That way when I see the Account detail
Invalid scope choice: Workdrive integration in CRM
Bug: There is an invalid option in the permission choices for Workdrive integration in CRM. If the entry "WorkDrive.teamfolder.CREATE" is selected, it will return a message indicating invalid OAuth scope scope does not exist.
Dark Mode - Font Colors Don't Work
When editing a document in Dark Mode and selecting font colors, they don't show up on screen. Viewing/editing the same document in Light Mode shows them just fine.
Good news! Calendar in Zoho CRM gets a face lift
Dear Customers, We are delighted to unveil the revamped calendar UI in Zoho CRM. With a complete visual overhaul aligned with CRM for Everyone, the calendar now offers a more intuitive and flexible scheduling experience. What’s new? Distinguish activities
Zoho mail admin panel not opening
Zoho CRM WooCommerce Integrtation
Looking for a solution for my 50 client to show detailed analytics on source of traffic that led to events, leads, conversions. Hi all, I have not been able to find a workable guide or solution to how exactly step by step integrate the Zoho CRM with WooCommerce
Attaching files to emails within CRM Deals.
Hello, We have recently started using the extension "Workdrive for CRM" (Related List) to view/store our documents for each Deal, instead of using Attachments. Overall it feels like a better way to go but the user experience is not so great when it comes
Service line items
Hello Latha, Could you please let me know the maximum number of service line items that can be added to a single work order? Thanks, Chethiya.
500 internal server error on opening an iframe through a deluge script
Hi Team I am trying to open an external url in an iframe through my deluge script which is associated to a custom button . By doing this i am getting an "Internal Server Error" . Please can you help me with this.
Kaizen #225 - Making Query-based Custom Related Lists Actionable with Lookups and Links
Hello everyone! Welcome back to another post in the Kaizen series! This week, we will discuss an exciting enhancement in Queries in Zoho CRM. In Kaizen #190, we discussed how Queries bridge gaps where native related lists fall short and power custom related
No Need To Fix Something That Is Working
Zoho Books is a great financial tool which helps businesses to become more efficient and productive with day-to-day operations. As such, every change, upgrade, improvement needs to be carefully thought before implemented in the software and I'm sure Zoho
Filter button in the Zoho Sheet Android App doesn't toggle on
I am a new Zoho Sheets user and experiencing a specific issue with the filter functionality in the Android mobile application. Detailed Issue Description: The filter icon appears correctly in the toolbar. Upon tapping the filter icon/button, the toggle
Is Zoho Sites still actively being developed?
Hello, Is Zoho Sites still actively being developed as part of the Zoho ecosystem? I noticed that the What's New page (https://www.zoho.com/sites/whats-new.html) does not show any updates since Q1 2025. We were considering migrating our website from Squarespace
Project Notifcatiion Emails - Milestone
Hello: I cannot get myself, or most importantly my portal client user to recieve an email upon completion of a milestone. I have set up our 1st project. I have set up a test client user. (accepted the invitation and is listed in the system as a client
Zoho Forms - Feature Request - Year Field
Hi Zoho Forms Team, You currently have the following date and time fields: Date Time Date and Time Year and Month It would be useful if you could include a "Year" field For example a recent application I completed said "What year was your house built?"
Integrate Excel or Zoho Sheet functions / calculations to CRM product module
Hello Community, I hope someone more experienced can help me with this question. Our price / payment plan calculations are in an Excel spreadsheet and I would like to use all those functions / calculations in my Products module. So when we send a quote
Sync CRM Contacts to USER'S contacts on Office 365
I can see that the O365 sync is transferring contacts backwards and forwards between Zoho CRM and Office365. But it has created a separate address book in Office 365 called "Zoho CRM Contacts". This address book is not used by Office/Outlook's email function
Manage Every Customer Conversation from Every Channel inside Zoho SalesIQ
Your customers message you from everywhere. But are you really able to track, manage, and follow through on every conversation, without missing anything? With interactions coming in from websites, mobile apps, and messaging platforms like WhatsApp and
Zoho Books | Product updates | February 2026
Hello users, We’ve rolled out new features and enhancements in Zoho Books. From Advanced Reporting Tags to the ability to mark projects as completed, explore the latest updates designed to improve your bookkeeping experience. Introducing Advanced Reporting
Update latitude & longitude address field API
How do I update the coordinates of an address field from a widget? I can't modify the latitude and longitude of the address field. I think the problem is how I'm writing formdata variable. zoho_init.then(function (data) { var queryParams = ZOHO.CREATOR.UTIL.getQueryParams();
Next Page