Kaizen 214 - Workflow APIs - Part 2

Kaizen 214 - Workflow APIs - Part 2


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

    • The Social Wall: September 2025

      Hello everyone, As we step into the fall season, some major updates are on the horizon. Meanwhile, here are the exciting updates we rolled out this September. Approvals in iOS Managing approvals just got more seamless on mobile. With this update, the
    • Introducing Detailed View for Candidates in Vendor Portal

      We’ve added a new Details sub-tab inside the Vendor Portal to help vendors easily view complete candidate information after submission. With this update, vendors can now access all candidate details, from personal information to associated job openings,
    • Zoho One Down

      Zoho Team, Checking if when the services up - currently Zoho One is down
    • How can I track which zoho users are actively using Zoho CRM

      I have several licenses of Zoho CRM. We now need to add a new user. I could purchase a new license, but before I do, I would like to see if any of our existing users are not actively using the license assigned to them. How can I determine the activity
    • Access to Detail View From HTML Snippet

      Zoho Creator displays a detail view that slides out from the right onClick of a record in a report. Am I able to access that detail view from an html snippet, e.g. click a record in a list and display the detail view? The zc_LoadIn dialog is a bit clunky,
    • Billing Management: #10 Solving Common Mistakes in Billing

      Over the past few weeks, we have explored different facets of billing, from the simplicity of traditional one-time billing to the evolving landscape of subscriptions, retainers, and usage-based models. We've unpacked how billing isn't just about sending
    • 【開催間近 - 10/17】東京 ユーザー交流会 Vol.3 参加登録 受付中!(参加無料)

      ユーザーの皆さま、こんにちは。コミュニティチームの藤澤です。 10/17(金)に、東京・新橋で「東京 ユーザー交流会 Vol.3」を開催します! ZOHOLICSよりも小規模なイベントですので、「リアル開催はちょっと緊張する…」という方も、安心してご参加いただけます✨ 当日は、初公開の事例を2つご紹介予定です! なお、セッション映像のアーカイブ配信は予定していないため、会場にお越しいただいた方だけが、登壇者へ直接質問したり、リアルな声を聞いたりできる貴重な機会となっています。 ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
    • Loading CSS Stylesheets into HTML Snippet

      Combining html/css into a single snippet can grow quite large for a UI that has a lot of functionality/styling. To keep things tidy, are we able to pull files into an html snippet using a <link> tag? If so, what are some best practices?
    • Notes Attachments

      Two things it would be nice to have the attachment size the same as the attachments sections and it would be nice to be able to attach links like you can in the attachments section. Thank you
    • Canvas: empty images

      Hello. If I add an image field like contact photo in a Canvas design, and the field is empty, there is an ugly placeholder in its place. This doesn't happen in the standard view. In the standard view, if the contact photo is empty, nothing appears in
    • Google enhanced conversions not working

      Hi guys, I've connected Zoho CRM through Google Ads interface with the goal to setup the enhanced conversion tracking in Google Ads. I have to Zoho related conversion goals which you can see in the images below: For the conversion goal above I've setup
    • MS Teams Meeting to Zoho CRM

      Has anyone figured out a good way to push MS Teams meeting info on a trigger of "meeting end" to Zoho CRM? We're looking for a way to take attendees of a meeting and meeting duration and push it into Zoho CRM after the meeting has ended. If I can just
    • Font Size 11 - Zoho CRM Email Templates

      Our company communicates with our vendors exclusively using Calibri Font Size 11, as this is the standard formatting for professional emails. Since the CRM only allows for the selection of font sizes 10 & 12, we have been unable to utilize the CRM email
    • Subforms in stateless forms

      I think the title says it all. We need to be able to add subforms to stateless forms. Currently the only workaround is to create a Form and delete each record upon submission of the form. I need to build an interface to update our inventory. Basically
    • Calling Function via REST API with API Key gives 401 using Zoho Developer

      Hi, I created a couple of functions using the one month trial of Enterprise edition, which I was able to call using the API Key method from Postman and from an external site. Now that my trial has expired, I have created the same functions in the Developer
    • How do I move a section or element from one page to another in the NEW Zoho Sites UI

      I have a section on my home page with numerous elements within it and I'd like to move the entire section to a different page on my site so I don't have to recreate it from scratch.  Is there a way for me to do that easily? I could use a quick answer on this please.
    • Zoho Projects app update: Global Web Tabs support

      Hello everyone! In the latest version(v3.10.10) of the Zoho Projects app update, we have brought in support for Global Web Tabs. You can now access the web tabs across all the projects from the Home module of the app. Please update the app to the latest
    • Export as MP4 or GIF

      Hi, Just wondering if there's a way to export/convert a presentation to an MP4 video file or even a GIF. One use case would be to use the animation functionality to create social media graphics/charts/gifs/videos. Thanks for a great tool... Rgds Jon
    • Page Layout- Horizontal Rule

      When editing the layout of, for instance, the Potentials page, is there a way to insert a horizontal rule or white space in between fields?  I'd like to keep a group of fields in the same Section, but would like to create some seperation in order to further group together certain fields within the Section.  If this is not possible, does anybody have any other suggestions on how to create this same effect?   Thank you!
    • Zoho Books will discontinue support for older browser versions soon

      Hello users, Starting from May 15, 2024, Zoho Books will no longer support the following browser versions: Browsers Version Restrictions Firefox Browser Versions older than 100 Google Chrome Versions older than 100 Microsoft Edge Versions older than 100
    • Zoho Projects - Q3 Updates | 2025

      Hello Users, The final quarter of the year 2025 has begun, and we at Zoho Projects are all set with a plan. New targets to achieve and new milestones to reach, influenced by the lasting imprint of the past quarter. 2025's Q3 saw some new features and
    • Zoho Sheet - Printing - Page Breaks and Printing Customization

      I think the title is descriptive enough in that I cannot find help documentation on a simple task of adding in page brakes for separating pages on print. Thanks
    • Issue with Trident exe file

      Hello Team, Exe Setup file It's showing harmful for user pc please check and do needful. this message for developer team. Thanks Bhargav Purohit
    • Different languages for users

      Hello, Do you plan to enable individual users to select their languages for interface? Currently language can be changed for everyone - it looks like a settings for a whole portal, which is not good when you are working internationally. Best regards,
    • Transaction Locking with the dynamic date

      Is it possible to dynamically update dates on transaction locking. We want to lock transaction x days from today
    • Unable to change sales_order status form "not_invoiced" to "invoiced"

      I am automating process of creating of invoice from sales_orders by consolidated sales_orders of each customer and creating a single invoice per customer every month. I am doing this in workflow schedule custom function where i create invoice by getting
    • Apply Vendor Credits Automatically

      We are bulk importing Vendor credits in Zoho Books!!! Is there a way to apply vendor credits automatically to the first UNPAID bill of the Vendor?
    • Apply Vendor Credit Automatically

      Hello!!! Is there a way where in we can apply vendor credits automatically on the FIRST OUTSTANDING BILL of the vendor?? We have lots of VENDOR CREDITS ISSUES mostly!!! Applying it manually is a pain for us. Would be great if we have a way to apply the
    • Need Easy Way to Update Item Prices in Bulk

      Hello Everyone, In Zoho Books, updating selling prices is taking too much time. Right now we have to either edit items one by one or do Excel export/import. It will be very useful if Zoho gives a simple option to: Select multiple items and update prices
    • Creator problem: Edit form View not displaying whole form

      I'm having problems with the form in my database. The edit view is not showing the whole form: This is how it looks in the normal view: As you can see, there is a whole section in the bottom right of the form which is not displaying in the Edit View. This means that I can't change or delete any of these fields... Anybody had a similar problem or know a solution? Any help would be appreciated.   Cheers,
    • Vendor Master Enhancements for Faster Purchase Entry

      I’d like to suggest a few features that will improve accuracy and speed during purchase voucher entry: Automated Item Tax Preference in Vendor Master Add an option to define item tax preference in the vendor master. Once set, this preference should automatically
    • Quick Item Search & Auto-suggestion for Invoices

      Hi Team, I am facing an issue while creating invoices in Zoho Books. Currently, I have to type the full item name in the correct sequence and spelling for it to appear. For example, my item name is: "Distemper Acri Silk Special White 10kg" If I type something
    • Function #53: Transaction Level Profitability for Invoices

      Hello everyone, and welcome back to our series! We have previously provided custom functions for calculating the profitability of a quote and a sales order. There may be instances where the invoice may differ from its corresponding quote or sales order.
    • Integrating Chatbot with Zoho Creator Application

      Is it possible to integrate a chatbot with a Zoho Creator application?
    • Average Costing / Weighted Average Costing

      Hello fellow maadirs. I understand Zoho Books uses FIFO method of dealing with inventory costing, but do you guys have any plans to introduce average costing? We indians need average costing. It's part of our culture. Please. I beg thee. Thanks.
    • 'Add Tax To Amount' not reflected in Invoice

      Hi Zoho Support, I'm experiencing an issue with tax calculation display in my invoice template. Despite having "Add tax to amount" box checked in the template settings, the Amount column is not showing the tax-inclusive total for line items. Current behaviour:
    • "Subject" or "Narration"in Customer Statement

      Dear Sir, While creating invoice, we are giving in "Subject" the purpose of invoice. For Example - "GST for the month of Aug 23", IT return FY 22-23", "Consultancy", Internal Audit for May 23". But this subject is not coming in Customer Statement. Only
    • A real WYSIWYG field instead of the limited rich text

      Hi to everyone A "real" WYSIWYG or HTML field that outputs good HTML code when accessed through the API would be excellent. I tried to use the rich text field, but the styling options are limited. For example, there are no heading tags (h1 to h6), and
    • Delete my store of Zoho commerce

      Hi Team, I want to delete my stores of commerce. Please help me asap. Looking for the positive response soon. Thanks Shubham Chauhan Mob: +91-9761872650
    • Delete Inactive Zoho Accounts - Access Cleanup_User Id: 60001640923

      As part of our Zoho access hygiene, we’ve reviewed and deactivated several inactive user accounts. These accounts have not been used in the past year and are no longer tied to active operations. All access rights have been revoked, and records retained
    • Next Page