Kaizen 213 - Workflow APIs - Part 1

Kaizen 213 - Workflow APIs - Part 1


Welcome to another week of Kaizen!

If you have ever managed complex business processes, you know that Workflows are the quiet backbone of any well-run business process. They keep things moving; assigning owners, sending alerts, keeping deals on track, and much more. But until now, you could not manage them via APIs. That changes with the release of Workflow APIs.

In this series, we will work through a real-world scenario together, showing you how to transition from manually managing workflows to governing them using APIs. We’ll look at Zylker Cloud Services, an IT solutions provider trying to bring order to its growing CRM automations.

The use case: Scaling the sales process at Zylker Cloud Services 

Zylker’s sales process touches multiple teams and modules like Leads, Deals, Calls, Appointments, etc. Over time, different team members created their own workflows. The result is familiar to anyone who has scaled fast:

  • Multiple versions of what should be the same process

  • Old, unused workflows still running.

Now, Zylker wants to bring structure and visibility to this automation sprawl. Their system administrators are building a custom admin dashboard to monitor and manage CRM workflows, without needing deep CRM expertise.

They want to:

  • Display a real-time list of all workflows with their status

  • Gain insights into workflow distribution across modules

  • Identify inactive or outdated workflows that may need cleanup.

However, the CRM UI only allows viewing one workflow at a time. There is no consolidated view to see all workflows, their triggers, and their status across modules. That makes auditing and governance tedious and error-prone, especially at scale.

This is exactly what the Workflow APIs solve. With this, they can:

  • Audit all existing workflows.

  • Review how and when they trigger.

  • Identify which modules and actions are supported before creating new rules or updating existing ones.

  • Update existing rules and create new rules.

  • Delete the rules that are no longer needed.

You can not build a dynamic admin dashboard or an automated audit system for Workflows through just clicks. But you can do this now, with Workflow APIs.

STEP 1: Discover and audit existing workflows

Before changing anything, we need to understand what we are working with. How many workflows do we have? What do they do? How many more can we create?

To get a complete inventory of Workflow rules, we can use the GET Workflow Rules API. This API returns a list of all the Workflow Rules configured for the CRM account.

Sample Request:

GET {api-domain}/crm/v8/settings/automation/workflow_rules

This initial audit acts like a master list, giving us an overall picture. It helps understand the scope of the automation landscape and identify obvious redundancies, like multiple workflows with similar names or purposes.

Sample Response:

{

    "workflow_rules": [

        {

            "created_time": "2024-01-15T14:20:30+05:30",

            "execute_when": {

                "details": {

                    "trigger_module": {

                        "api_name": "Deals",

                        "id": "4876876000000002181"

                    },

                    "repeat": false

                },

                "type": "create_or_edit"

            },

            "editable": true,

            "module": {

                "api_name": "Deals",

                "id": "4876876000000002181"

            },

            "deprecated": false,

            "deletable": true,

            "description": "Alert VP of Sales for high-value opportunities",

            "source": "crm",

            "created_by": {

                "name": "Matthew Mayers",

                "id": "4876876000001360001"

            },

            "last_executed_time": null,

            "modified_time": "2024-01-23T12:23:12+05:30",

            "name": "VP Alert - High Value Deal",

            "modified_by": {

                "name": "Matthew Mayers",

                "id": "4876876000001360001"

            },

            "lock": {

                "locked_by": null,

                "message": null,

                "status": false

            },

            "id": "4876876000016390024",

            "category": "default",

            "conditions": [

                {

                    "sequence_number": 1,

                    "instant_actions": {

                        "actions": [

                            {

                                "related_details": null,

                                "name": "VP notified",

                                "details": {

                                    "module": {

                                        "api_name": "Deals",

                                        "id": "4876876000000002181"

                                    }

                                },

                                "id": "4876876000016390063",

                                "type": "field_updates"

                            },

                            {

                                "related_details": {

                                    "best_time": true

                                },

                                "name": "High value deal alert",

                                "id": "4876876000016390015",

                                "type": "email_notifications"

                            }

                        ]

                    },

                    "scheduled_actions": [

                        {

                            "execute_after": {

                                "period": "business_days",

                                "unit": 1

                            },

                            "id": "4876876000016390074",

                            "actions": [

                                {

                                    "related_details": null,

                                    "name": "Confirm VP follow-up",

                                    "id": "4876876000016390067",

                                    "type": "tasks"

                                }

                            ]

                        }

                    ],

                    "criteria_details": {

                        "relational_criteria": {

                            "module_selection": null,

                            "criteria": null,

                            "module": null

                        },

                        "criteria": {

                            "group_operator": "AND",

                            "group": [

                                {

                                    "comparator": "equal",

                                    "field": {

                                        "api_name": "Amount",

                                        "id": "4876876000000002557"

                                    },

                                    "type": "value",

                                    "value": "50000"

                                },

                                {

                                    "comparator": "equal",

                                    "field": {

                                        "api_name": "Stage",

                                        "id": "4876876000000002565"

                                    },

                                    "type": "value",

                                    "value": "Negotiation/Review"

                                }

                            ]

                        }

                    },

                    "id": "4876876000016390025"

                }

            ],

            "status": {

                "active": true

            }

        },

        {

            "id": "4876876000012015001",

            "name": "Lead Assignment - North Region",

            "module": {"api_name": "Leads"},

            "status": {"active": true},

            "execute_when": {"type": "create"},

            "last_executed_time": "2025-10-14T11:56:20+05:30"

            // ... other keys omitted for brevity

        },

        {

            "id": "4876876000012020001",

            "name": "Lead Assignment - South Region",

            "module": {"api_name": "Leads"},

            "status": {"active": true},

            "execute_when": {"type": "create"},

            "last_executed_time": "2025-10-14T10:30:15+05:30"

            // ... other keys omitted for brevity

        }

        // ... additional workflows

    ],

    "info": {

        "per_page": 200,

        "count": 71,

        "page": 1,

        "more_records": false

    }

}


The response gives us a comprehensive overview of all configured workflows. For each rule, we get the metadata including its unique ID, name, description, the module it operates on, its activation status, and details about when it triggers. We also get audit information like creation timestamps and which user made changes.

Working with large results

When you have hundreds of workflows, pagination helps. The response includes an info object with pagination details:

  • count: The number of workflows on the current page

  • per_page: The maximum number of records per page (default and max is 200)

  • page: The current page number

  • more_records: Indicates if there are additional records to fetch.

If the more_records key is true, we can retrieve the next page by using the page parameter in the request.

While getting all workflows gives you the big picture, we may often want to focus on specific areas. This API offers several parameters to narrow down our search:

Parameter type

Description

module
string

Filters workflows by the primary module they operate on.

trigger_module
string

Filters by related modules that can trigger workflows. Use this when you want workflows that are triggered by changes in related records.
Note: Requires the module parameter.
For example: module=Leads&trigger_module=Notes - Get lead workflows triggered by note activities

execute_on
string

Filters by the specific action that triggers the workflow.
Note: Requires the module parameter.

status_active
Boolean

Filters by activation status to see only active or inactive workflows. Useful for audits and cleanup operations.

filter
string

Searches workflows by name using a JSON filter.
Note: The value of this parameter must be URL-encoded.

page
integer

Specifies which page of results to return. Use this for pagination when you have a large number of workflows.

per_page
integer

Limits the number of workflows returned per page. The default and maximum value is 200.

sort_by
string

Sorts the workflows based on a specific field. The only supported value is modified_time.

sort_order
string

Sorts the workflows in ascending (asc) or descending (desc) order.

include_inner_details
string

Includes the inner details like conditions and actions of the workflows in the response.
Note: Requires the module parameter.

 

For example, to find all active lead workflows containing "Assignment" in their name, use:

https://www.zohoapis.com/crm/v8/settings/automation/workflow_rules?module=Leads&status_active=true&filter={"field":{"api_name":"name"},"comparator":"contains","value":"Assignment"}

 

Here is the API-call-ready version of the same, after URL encoding the filter value:


Now, if you inspect the response closely, you can see that we have two similar workflows: "Lead Assignment - North Region" and "Lead Assignment - South Region." And there is also an older workflow named "VP Alert - High Value Deal."

This workflow was created almost a year ago by a former team member, and it has not been modified for a long time. Is it still relevant? What exactly does it do? What criteria define a "high-value deal," and who exactly gets notified?

To answer these questions and understand the workflow's complete logic, we must examine it closely using the Get a Workflow API. This API returns the full configuration including all conditions, criteria thresholds, and specific actions for an individual workflow.

STEP 2: Inspect a single workflow using Get a Workflow API

Sample Request:

GET {api-domain}/crm/v8/settings/automation/workflow_rules/4876876000016390024

Here, 4876876000016390024 is the unique ID of the Workflow rule whose details we want to fetch, obtained from the response of Get all Workflows API.

Sample Response:

{

    "workflow_rules": [

        {

            "created_time": "2024-01-15T14:20:30+05:30",

            "execute_when": {

                "details": {

                    "trigger_module": {

                        "api_name": "Deals",

                        "id": "4876876000000002181"

                    },

                    "repeat": false

                },

                "type": "create_or_edit"

            },

            "editable": true,

            "module": {

                "api_name": "Deals",

                "id": "4876876000000002181"

            },

            "deprecated": false,

            "deletable": true,

            "description": "Alert VP of Sales for high-value opportunities",

            "source": "crm",

            "created_by": {

                "name": "Matthew Mayers",

                "id": "4876876000001360001"

            },

            "last_executed_time": null,

            "modified_time": "2024-01-23T12:23:12+05:30",

            "name": "VP Alert - High Value Deal",

            "modified_by": {

                "name": "Matthew Mayers",

                "id": "4876876000001360001"

            },

            "lock": {

                "locked_by": null,

                "message": null,

                "status": false

            },

            "id": "4876876000016390024",

            "category": "default",

            "conditions": [

                {

                    "sequence_number": 1,

                    "instant_actions": {

                        "actions": [

                            {

                                "related_details": null,

                                "name": "VP notified",

                                "details": {

                                    "module": {

                                        "api_name": "Deals",

                                        "id": "4876876000000002181"

                                    }

                                },

                                "id": "4876876000016390063",

                                "type": "field_updates"

                            },

                            {

                                "related_details": {

                                    "best_time": true

                                },

                                "name": "High value deal alert",

                                "id": "4876876000016390015",

                                "type": "email_notifications"

                            }

                        ]

                    },

                    "scheduled_actions": [

                        {

                            "execute_after": {

                                "period": "business_days",

                                "unit": 1

                            },

                            "id": "4876876000016390074",

                            "actions": [

                                {

                                    "related_details": null,

                                    "name": "Confirm VP follow-up",

                                    "id": "4876876000016390067",

                                    "type": "tasks"

                                }

                            ]

                        }

                    ],

                    "criteria_details": {

                        "relational_criteria": {

                            "module_selection": null,

                            "criteria": null,

                            "module": null

                        },

                        "criteria": {

                            "group_operator": "AND",

                            "group": [

                                {

                                    "comparator": "equal",

                                    "field": {

                                        "api_name": "Amount",

                                        "id": "4876876000000002557"

                                    },

                                    "type": "value",

                                    "value": "50000"

                                },

                                {

                                    "comparator": "equal",

                                    "field": {

                                        "api_name": "Stage",

                                        "id": "4876876000000002565"

                                    },

                                    "type": "value",

                                    "value": "Negotiation/Review"

                                }

                            ]

                        }

                    },

                    "id": "4876876000016390025"

                }

            ],

            "status": {

                "active": true

            }

        },

        {

            "id": "4876876000012015001",

            "name": "Lead Assignment - North Region",

            "module": {"api_name": "Leads"},

            "status": {"active": true},

            "execute_when": {"type": "create"},

            "last_executed_time": "2025-10-14T11:56:20+05:30"

            // ... other keys omitted for brevity

        },

        {

            "id": "4876876000012020001",

            "name": "Lead Assignment - South Region",

            "module": {"api_name": "Leads"},

            "status": {"active": true},

            "execute_when": {"type": "create"},

            "last_executed_time": "2025-10-14T10:30:15+05:30"

            // ... other keys omitted for brevity

        }

        // ... additional workflows ...

    ],

    "info": {

        "per_page": 200,

        "count": 71,

        "page": 1,

        "more_records": false

    }

}

 

The detailed response gives us a complete blueprint of the workflow. We can now see the exact business logic: the workflow triggers when deals are edited and meet two specific conditions; when the amount equals exactly $50,000 AND the stage is Negotiation/Review.

More importantly, we can see all the actions that execute: an immediate field update to mark deals as "VP notified," an email notification sent at the optimal time, and a follow-up task scheduled for one business day later. Here's what is really interesting about this detail; this workflow has never actually executed, despite being active for nearly a year, because the last_executed_time is null in the response.

Now we are left with some important questions. Is that $50,000 threshold too narrow? What if a $49,000 deal is just as important? And is the VP still the right person to alert? Are there additional stakeholders who should be notified beyond just the VP? These are the type of questions you can start answering once you inspect your workflows closely.

STEP 3: Check limits and distribution

Before making any changes, we must understand our automation capacity and how workflows are distributed across the organization. The Workflow APIs provide two key endpoints for this:

1. Get Workflow limits API

This API provides a comprehensive view of your organization's workflow capacity across multiple dimensions.

Sample Request:

GET {api-domain}/crm/v8/settings/automation/workflow_rules/actions/rules_count

Sample Response:

{

    "rules_count": {

        "scheduled_actions_per_rule_limit": 5,

        "total_rules_limit": 2500,

        "active_rules_configured": 71,

        "rules_per_process_limit": 10,

        "total_actions_per_rule_limit": 50,

        "total_rules_limit_per_module": 125,

        "active_rules_limit": 2000,

        "total_rules_configured": 82,

        "active_rules_limit_per_module": 75

    }

}

 

This response gives the following information:

  • Total Capacity: Zylker has a generous limit of 2,500 total workflows, with only 82 currently configured. This means that they are using just 3 percent of their total capacity.

  • Active Workflows: There are 71 active workflows, well below their 2,000 active workflow limit

  • Module-level Limits: Each module can support up to 125 total workflows, with 75 of those allowed to be active simultaneously.

  • Action Limits: Each condition in the Workflow can contain up to 50 total actions, with a maximum of five scheduled actions.

For Zylker, this is excellent news. Only 71 active workflows out of a 2,000 limit. This means we have substantial room for growth and can confidently create new workflows without worrying about capacity constraints.

2. Get module-wise counts API

This API tells you exactly how many workflow rules you have in each module. It shows both the total number of rules and how many are currently active. This helps you see where your automations are concentrated and where you might be missing opportunities.

Sample request:

GET  {api-domain}/crm/v8/settings/automation/workflow_rules/actions/module_specific_count

Sample Response:

{

    "module_specific_count": [

        {

            "active_rules_configured": 2,

            "module": {

                "api_name": "Products",

                "id": "4876876000000002213"

            },

            "total_rules_configured": 2

        },

        {

            "active_rules_configured": 2,

            "module": {

                "api_name": "Deals",

                "id": "4876876000000002181"

            },

            "total_rules_configured": 2

        },

        {

            "active_rules_configured": 4,

            "module": {

                "api_name": "Contacts",

                "id": "4876876000000002179"

            },

            "total_rules_configured": 5

        },

        {

            "active_rules_configured": 2,

            "module": {

                "api_name": "Appointments__s",

                "id": "4876876000002362026"

            },

            "total_rules_configured": 3

        },

        {

            "active_rules_configured": 4,

            "module": {

                "api_name": "Calls",

                "id": "4876876000000033015"

            },

            "total_rules_configured": 5

        },

        {

            "active_rules_configured": 43,

            "module": {

                "api_name": "Leads",

                "id": "4876876000000002175"

            },

            "total_rules_configured": 51

        },

        {

            "active_rules_configured": 14,

            "module": {

                "api_name": "Emails",

                "id": "4876876000000014163"

            },

            "total_rules_configured": 15

        }

    ]

}

 

Looking at this response, we can see 43 active workflows in Leads but only two in Deals. This tells us that Zylker is heavily focused on lead management but might be missing opportunities to automate their sales process later in the pipeline.

Together, these two APIs give a complete picture of the automation capacity and distribution.

What's next: From understanding to action 

Now that we have our foundation, we are ready to start building and refining.

In the next part of this Kaizen series, we will move from discovery to design. We’ll use the Workflow Configuration, Create, and Update APIs to standardize Zylker’s automation management, create new workflow rules, and update existing ones for consistency and efficiency.

We hope that you find this post on Workflow APIs useful. If you have any feedback, or if there are any pain-points that you would like us to address in our Kaizen series, please let us know in the comments, or reach out to us via support@zohocrm.com. We will be happy to help!

Until we meet again next Friday, Happy coding!

    Nederlandse Hulpbronnen


      • Recent Topics

      • Zoho CRM button to download images from image upload field

        Hello, I am trying to create a button in Zoho CRM that I can place in my record details view for each record and use it to download all images in the image upload fields. I tried deluge, client scripts and even with a widget, but feel lost, could not
      • Mass Update Contacts In Zoho Campaigns

        Is there a way to mass update contacts in zoho campaigns? I want to be able to change the content of a field for a few hundred contacts, and can't go through all of them individually.
      • report showing assignment type

        Hi, We've created a number of workflows to allow us to auto assign tickets to agents based on keywords and other criteria. I'm struggling to create a report that would show me what is the percentage of tickets that are assigned automatically via workflows
      • Option to Disable Knowledge Base Section in Feedback Widget Popup Hello Zoho Desk Team

        Hello Zoho Desk Team, How are you? We are actively using Zoho Desk and would like to make more use of the Feedback Widget. One of the ways we implement it is through the popup option. At the moment, the popup always displays the Knowledge Base section,
      • Placeholders in Ticket Templates

        We should be able to use placeholders in ticket templates. When we create a new ticket, our description field is shown to the client in the email they receive.  It would be very handy to be able to personalize that description field in our ticket templates to pull in the name of the client that the ticket is for. Using them in the subject field as well, so we can auto populate Account Names, etc. 
      • when the record is created the tag want to Show as Opportunity how i achive this using Deluge Script

        In the quotation i have the work flow schedule for create opportunity record in the module , on that time the quotation tag select as opportunity created. How i achive this using Deluge Script . this like i want to Do tag1 = Map(); tag1.put("name","Nurturing
      • Delete a channel

        I need delete a channel in tickets.
      • Copy / Duplicate Workflow

        I have workflows setup that are very similar to each other. We have a monitoring system watching servers, and all notifications - no matter what client it is about - will come from a  noreply@ address which is not very helpful in having it auto assigned to the right account. I have setup a workflow that will change the contact name of the ticket (currently it would say noreply@) to the correct customer which is based on the subject line, as that mentions which server the alert it is about. I need
      • Subtasks don't update parent task's times

        Hi there: I've recently upgraded to premium and check that subtasks completion % don't update the proportional completion of the parent tasks related to it.  We've been challenging with the problem of having to update twice or sometimes 3 times the completion of the related tasks. I've seen posts similar to this, of 3 years old.  Is there any roadmap for making this happen in a future release? Thanx César Ratto Lima, Perú.
      • Should I Use DMARC?

        When I configure Zoho Mail's DMARC settings, it's mandatory to fill in the RUA and RUF (Aggregate notification email address*, Forensic notification email address*) addresses. When we enter an email address in these fields, we receive reports from the
      • IMAP Server not responding.

        Trying to connect a phone via IMAP and getting "imap.zoho.com not responding." Is the server down, for maintenance or otherwise? I've tried this on two different devices and got the same error on both.
      • Tip #44 – Get Deeper Insights with Zoho Assist’s Custom Reports – ‘Insider Insights’

        In today’s fast-paced IT environment, having a clear view of your remote support activities is more important than ever. Zoho Assist’s Custom Reports feature gives IT teams the ability to generate tailored reports that provide actionable insights and
      • Message "...does not support more than 100 distinct values..." WHY????

        I get this message on one of my reports: Sorry, Zoho Reports currently does not support more than 100 distinct values in columns. 'Account Name * Sum(Amount),Count(Amount Tier)' contains more than 100 distinct values.  Possibly, you can apply filter to reduce the number of distinct values in 'Account Name' or drop the 'Account Name' field in Rows. I want to list all ACCOUNT NAMES (about 500) with SALES BY ACCOUNT.  What is blocking this?
      • Let's Talk Recruit: Super-charge hiring with Zoho Recruit add-ons

        Welcome back to our Let’s Talk Recruit series! This time, we’re diving into something that might seem like a small upgrade but has a huge impact on recruiter productivity: Zoho Recruit add-ons. Think about how much of your day is spent in your inbox or
      • Vendor Signatures Needed for Purchase Orders

        Hello everyone, We have a unique requirement that necessitates that Vendors & Suppliers formally acknowledge our Purchase Orders upon receipt. I was hoping that there would be an option to do so in Zoho Books, but that does not appear to be the case.
      • Is there an API to "File a Ticket" in Desk

        Hi, Is there an API to "File a Ticket" in Desk to zoho projects?
      • Store "Sign in with Google/Microsoft/GitHub etc." details

        Quite often now, users are using a sign-in provider like Google or Microsoft to sign into various apps and services. It would be great if Vault could remember which providers you use for each website and sign you in with that provider instead of a username
      • Tip of the Week #72– Assign thread ownership to avoid confusion.

        When teams handle a large volume of emails, managing threads becomes important to stay organized. Without a clear system, duplicate replies, missed follow-ups, or confusion over responsibilities can happen. Thread assignment solves this by designating
      • Unarchive tickets

        How can I manually unarchive tickets?
      • Optimize your Knowledge Base for enhanced accessibility by adding alt tags for images

        Let's learn why alt tags are crucial for your articles. You can add alternative tags (alt tags) and alternative text (alt text) to the images you share on your community forums or when embedding them in articles. Alt tags refer to the HTML attribute,
      • FSM trying again

        have not linked FSM yet to the rest of out Zoho suit. It certainly looks like the apointment and service part is more manageable for our staff. The question is that our engineers multi task examples 1. deliver products to customers not fitted 2. Service
      • Feature Request: Conditional Field Mandatoriness Based on Display Status

        Hello Zoho Creator Team, I would like to suggest an enhancement to improve the flexibility of form validations. Currently, when we need a field to be mandatory only if it's displayed on the form, the only option is to: Set the field as not mandatory in
      • Data Migration Strategies for Moving to a Cloud Solution

        Hi everyone, I’ve been working on moving some of our critical systems, including CRM and project data, to a Zoho cloud solution, and one of the biggest challenges I’ve encountered is data migration. Transferring large volumes of data while keeping it
      • Commerce Order as Invoice instead of Sales Order?

        I need a purchase made on my Commerce Site to result in an Invoice for services instead of a Sales Order that will be pushed to Books. My customers don't pay until I after I add some details to their transaction. Can I change the settings to make this
      • How to set different item selling prices for Zoho Commerce and Zoho Books

        Item selling prices for Zoho Commerce and Zoho Books are in sync. If we update the Item selling price in Books, the same will happen in commerce and vice versa. I need a separate commerce selling price for online users and a separate books selling price
      • How to report 'Response violation' OR 'Resolution violation'

        Hi, I want to report on SLA Violation Type. I grouped my tickets on this column. It seems I only get 'Response and Resolution Violation' or 'Not Violated'. The former seems to be given to a ticket if only the Response Time was violated. I would expect
      • [Webinar] Automate sales and presales workflows with Writer

        Sales involves sharing a wide range of documents with customers across the presales, sales, and post-sales stages: NDAs, quotes, invoices, sales orders, and delivery paperwork. Generating and managing these documents manually slows down the overall sales
      • Date triggering Workflow rule

        I have a function triggered by a workflow rule. The function takes a date and creates a task for that date and fills in a field with the name of the day for that date. It also updates the status field of the record. The workflow rule is set to run whenever
      • Restricting contact creation

        Hi all! I am looking to use Zoho Desk in a part of the business that takes end user enquiries. These are generally single interactions, and not linked to an account name. As Desk is Account centric, has anyone designed a way to manage these incoming emails
      • Import Holiday Calendars

        HI Zoho Is there anyway of importing an online calendar like https://www.calendarlabs.com into the business hours calendars, to speed up setup of holiday calendars. Also could we also request a feature where you can specify a Holiday as hours, i.e it could be that the company is on a 1/2 day due to a holiday or when it is Eid in the UAE and they are only allowed to work restricted hours so we need the calendar to be flexible to allow for this. Regards Jamie
      • Filtering Tickets based on Email headers

        We're starting to get a lot more junk coming into our Zoho Desk, which is then triggering unnecessary email alerts to agents. Once thing we could do to cut this junk in half, is to filter tickets based on email headers. Any email containing the `List-Unsubscribe`
      • Error 550 5.4.1

        I’ve tried sending an email to someone but keep receiving this back. Any help would be greatly appreciated 
      • Billing Management: #2 Fair way of Billing- Prorated Billing

        Hello, From speaking about the traditional ways of billing in the previous post, we are moving into the deep sea of billing. We are now in a zone to break out the most complex yet, I would call it the fairest way of billing, the Prorated Billing. Prorated
      • Has Anyone successfully integrated Zoho and Sage Intact?

        Hey all, We’re evaluating Zoho One + Sage Intacct and I’m trying to connect with anyone who has actually implemented the two together.Specifically, I’d love to know: -- Which functions you kept in Zoho vs. Intacct (e.g., Product Catalog, AR/AP, invoicing,
      • Adding image in HTML report page

        Hi, I want to know two things: 1. Can anyone advise how to add an image in HTML report. The tagged used is <img> but what path do I mention for the image to be added in the HTML report. 2. Also, I want to know if I am creating an application for the market
      • How to change view of HTML report based on device but always print in A4

        Hello everyone, I am aware that HTML report view can be configured to adjust according to the screen size like Laptop, Tablet and mobile using media queries. But my concern is no matter on which device the reports is opened when printed should always
      • Age Calculation

        I've attempted to calculate the age of someone based on their birthday input by using the formula field. It works but I don't want all those decimals on there. I then tried to use "set variable" after birthday input but I get a field type mismatch, long vs. floating. Any ideas would be wonderful.
      • Search on Custom Field

        We're working on an integration with the Zoho FSM API and are trying to retrieve companies based on a custom field we added to the Companies module. However, we can't find a way to filter or query records using custom fields through the API. We have a
      • Sendmail function / custom action?

        I've setup a function hoping to email various business departments the details of a record once all work in that record is complete so gone about setting up a custom action in such way that each record line on the report has a button to click. Question is how do I actually include data from that record in the email that is sent when the button is clicked? I had thought that since this were being sent per record the email would include the data which had been entered
      • API to post drafts for social media

        I we want to post draft posts to our zoho social account and then approve and schedule them within Zoho social. is this possible with for example: https://apis.zoho.com/social/v2/post TIA Jon
      • Next Page