Kaizen #100 - A Special Q & A for Our 100th Post

Kaizen #100 - A Special Q & A for Our 100th Post

Hello Everyone! 

Today marks a significant milestone – our 100th Kaizen post! We are beyond thrilled to have shared this journey with you!  Your engagement, feedback, and support have been pushing us forward. Thank you! 

We recently asked you for your feedback on our Kaizen series through this form, and we are so grateful for the thoughtful responses we received. We asked, and you answered! We are excited to share our answers to some of your questions in our 100th Kaizen post.

1. Please add a function to get the API Name of the field that caused the onChange in the page processing. For example, if I want to do an automatic string modification process, I cannot get the field name changed by the user, so I have to do the process for all fields, which is slow. That said, setting it up in "Item Processing" is difficult if there are a lot of items and is not very maintainable. 
To get the API Name of the field that cause onChange event in a page, you can simply use the field_name argument.

To get the API Name of the field that cause onChange event in a page, you can simply use the field_name argument.



In Client Script, based on the event that you configure, you can use the appropriate arguments while you code the script. Click here to know the arguments available for various event types. 

Now let us execute the above log script for create page of Leads module using the Run component.



In the below gif, you can see that for every field that the user enters data, the log statement will give the api name of the corresponding field updated by the user.



Note:
The field_name argument for onChange Page event is available for Create, Clone, Edit, Create(Wizard), Edit(Wizard), Detail Page(Canvas)

For a scenario where there are requirements for multiple fields present in the same page, let us see how to write a single Client Script efficiently. Check the Best Practices of Client Script documentation for more details.

At Zylker, a manufacturing company, consider that you want to achieve the following using Client Script. In the create page of Orders module, whenever the field Product is Ignition box, Category should get auto-populated as Ignition System. If the Product is Voltmeter then Category should get auto-populated as Gauges and meters.
Whenever the user edits or adds the Phone Number with length less than 10, display an error message near the field. If the field Country is India, the maximum number of digits that the user can enter the field Phone Number should be limited to 10. 

Instead of creating 3 separate Client Scripts with field event , you can create a single Client Script with onChange Page event.
You can use the "field_name" argument to check which field was changed by the user.
Here is the Script.


 switch (field_name) {
    case 'Product':
        var product_name = ZDK.Page.getField('Product').getValue();
        var category_field = ZDK.Page.getField('Category');
        // requirement - 1
        if (['Ignition box', 'Ignition coil', 'Spark plug'].includes(product_name)) {
            // Populate value for picklist field 'Category' based on the condition
            category_field.setValue("Ignition system");
            ZDK.Page.getField('Number_of_Boxes').setMandatory(true); // requirement - 2
        } else if (['Speedometer', 'Odometer', 'Voltmeter','].includes(product_name)) {
            // Populate value for  picklist field 'Category' based on the condition
            category_field.setValue('Gauges and meters');
        }
        break;

  case 'Phone_Number':
        var phone_field = ZDK.Page.getField('Phone_Number');
        if (phone_field.getValue().length < 10) {
            phone_field.showError('Enter a valid phone number'); // requirement - 4
        }
        break;

 case 'Country':
       ZDK.Page.getField('Phone_Number').setMaxLength(10);
       break;
    case 'Category':
        if (ZDK.Page.getField('Category').getValue() === 'Ignition system') {
            ZDK.Page.getField('Number_of_Boxes').setMandatory(true); // requirement - 2 when category is changed in ui
        }
        break;
}


In the above script, based on the field updated by the user, execution will happen.



2. I would like to be able to retrieve sub-form records with COQL.

Subform is a data section embedded in the primary form to collect details related to the parent record. It  helps in maintaining multiple records under a single parent record. These subform records cannot be fetched via the parent module in the Query API. Since subforms are treated as individual modules, you should state their API names to access their records or fields. Consider a manufacturing company, Zylker, which uses Zoho CRM for effective maintenance of customer relationships. The suggestions and feedback from each of their clients are tracked with the help of a subform called Client Review in the Accounts module.
Consider a manufacturing company, Zylker, which uses Zoho CRM for effective maintenance of customer relationship. The suggestions and feedback of each of their clients is tracked with the help of a subform called Client Review in the Accounts module. 
Now the Manager wants to fetch the suggestions from all the Accounts. Let us see how he can achieve this using COQL API. 
Step 1: Make a GET Modules metadata API call to get the api_name of the subform.
Step 2: Using the api_name of the subform, make a GET Fields metadata API call to get the api_name of the fields in the subform. 
Step 3: Use the api_name of subform and subform fields to construct a query. 

{
    "select_query": "select Suggestions from Client_Review where Suggestions is not null"

Step 4: Use this query in the COQL API. 

Request URL: {api-domain}/crm/{version}/coql

Request Method: POST

Scope: To access COQL API, you need to pass two scopes - ZohoCRM.coql.READ and ZohoCRM.modules.all. You can also use ZohoCRM.modules.{module_name}.{operation_type} in the place of ZohoCRM.modules.all. 

Request Body : 

{
    "select_query": "select Suggestions from Client_Review where Suggestions is not null"
}


Response :



Using the parent record id, you can fetch the subform records related to a particular Account.  Following is the request body to fetch the subform details particular to a parent record, 

{
    "select_query": "select Suggestions, Feedback from Client_Review where ((Parent_Id=5545974000003933016) and ((Suggestions is not null) and (Feedback is not null)))"
}

This query will fetch all the subform records of the specified record whose Suggestions and Feedback fields are not null as shown below. 





3. I want to discuss Subform in Zoho CRM.  Can the user filter subform record in Deal or Lead?

We can filter the records that have subform fields in them using COQL. Consider the example of the above manufacturing company, Zylker. The manager wants to fetch the details of those records in the Accounts modules that have Client Review details. This can be achieved by the following COQL query.

{
    "select_query":"select Parent_Id.Account_Name from Client_Review where id is not null  group by Parent_Id.Account_Name "
}

Response : 

In case you missed out our newsletter and announcement and could not fill out the feedback form, it is not too late to do it now. We invite you to take a few minutes, fill out the feedback form and share your queries and thoughts. We will continue to reply to your questions in our upcoming Kaizen posts.

Cheers!
    • Sticky Posts

    • Kaizen #197: Frequently Asked Questions on GraphQL APIs

      🎊 Nearing 200th Kaizen Post – We want to hear from you! Do you have any questions, suggestions, or topics you would like us to cover in future posts? Your insights and suggestions help us shape future content and make this series better for everyone.
    • Kaizen #198: Using Client Script for Custom Validation in Blueprint

      Nearing 200th Kaizen Post – 1 More to the Big Two-Oh-Oh! Do you have any questions, suggestions, or topics you would like us to cover in future posts? Your insights and suggestions help us shape future content and make this series better for everyone.
    • Celebrating 200 posts of Kaizen! Share your ideas for the milestone post

      Hello Developers, We launched the Kaizen series in 2019 to share helpful content to support your Zoho CRM development journey. Staying true to its spirit—Kaizen Series: Continuous Improvement for Developer Experience—we've shared everything from FAQs
    • Kaizen #193: Creating different fields in Zoho CRM through API

      🎊 Nearing 200th Kaizen Post – We want to hear from you! Do you have any questions, suggestions, or topics you would like us to cover in future posts? Your insights and suggestions help us shape future content and make this series better for everyone.
    • Client Script | Update - Introducing Commands in Client Script!

      Have you ever wished you could trigger Client Script from contexts other than just the supported pages and events? Have you ever wanted to leverage the advantage of Client Script at your finger tip? Discover the power of Client Script - Commands! Commands
    • Recent Topics

    • Billing Management: #4 Negate Risk Free with Advances

      In the last post, we explored how unbilled charges accumulate before being invoiced. But what happens when businesses need money before service begins? Picture this: A construction company takes on a $500,000 commercial building project expected to last
    • Is there an equivalent to the radius search in RECRUIT available in the CRM

      We have a need to find all Leads and/or Contacts within a given radius of a given location (most likely postcode) but also possibly an address. I was wondering whether anyone has found a way to achieve this in the CRM much as the radius search in RECRUIT
    • Zoho CRM Inventory Management

      What’s the difference between Zoho CRM’s inventory management features and Zoho Inventory? When is it better to use each one?
    • Cannot Enable Picklist Field Dependency in Products or Custom Modules – Real Estate Setup

      Hello Zoho Support, I am configuring Zoho CRM for real estate property management and need picklist field dependency: What I’ve tried: I started by customizing the Products module (Setup > Modules & Fields) to create “Property Type” (Housing, Land, Commercial)
    • Get Workflow Metadata via API

      Is there a way to get metadata on workflows and/or custom functions via API? I would like to automatically pull this information. I couldn't find it in the documentations, but I'm curious if there is an undocumented endpoint that could do this. Moderation
    • Zoho Projects - Q2 Updates | 2025

      Hello Users, With this year's second quarter behind us, Zoho Projects is marching towards expanding its usability with a user-centered, more collaborative, customizable, and automated attribute. But before we chart out plans for what’s next, it’s worth
    • FSM setup

      So we have been tinkering with FSM to see if it is going to be for us. Now is the time to bite the bullet and link it to our zoho books and zoho crm. The help guides are good but it would really help if they were a bit more in depth on the intergrations.
    • Upcoming Updates to the Employees Module in Zoho Payroll (US)

      We've made a couple of updates to the Employees module in Zoho Payroll (latest version of the US edition). These changes will go live today. While creating an employee Currently, the Compensation Details section is part of the Basic Details step, where
    • Possible to Turn Off Automatic Notifications for Approvals?

      Hello, This is another question regarding the approval process. First a bit of background: Each of our accounts is assigned a rank based on potential sales. In Zoho, the account rank field is a drop-down with the 5 rank levels and is located on the account
    • ZOHO Creator subform link

      Dear Community Support, I am looking for some guidance on how to add a clickable link within a Zoho Creator subform. The goal is for this link to redirect users to another Creator form where they can edit the data related to the specific row they clicked
    • Allow Resource to Accept or Reject an Appointment

      I have heard that this can be done, is there any documentation on how?
    • Create new Account with contact

      Hi I can create a new Account and, as part of that process, add a primary contact (First name, last name) and Email. But THIS contact does NOT appear in Contacts. How can I make sure the Contact added when creating an Account is also listed as a Contact?
    • Custom Fonts in Zoho CRM Template Builder

      Hi, I am currently creating a new template for our quotes using the Zoho CRM template builder. However, I noticed that there is no option to add custom fonts to the template builder. It would greatly enhance the flexibility and branding capabilities if
    • Python - code studio

      Hi, I see the code studio is "coming soon". We have some files that will require some more complex transformation, is this feature far off? It appears to have been released in Zoho Analytics already
    • Sync desktop folders instantly with WorkDrive TrueSync (Beta)

      Keeping your important files backed up and accessible has never been easier! With WorkDrive desktop app (TrueSync), you can now automatically sync specific desktop folders to WorkDrive Web, ensuring seamless, real-time updates across devices. Important:
    • How To Insert Data into Zoho CRM Organization

      Hi Team I have this organization - https://crm.zoho.com/crm/org83259xxxx/tab/Leads I want to insert data into this Leads module, what is the correct endpoint for doing so ? Also I have using ZohoCRM.modules.ALL scope and generated necessary tokens.
    • Where can I get Equation Editor por Zoho Writer?

      I need to use Math Formulas in my document. Thank you.
    • How can I get base64 string from filecontent in widget

      Hi, I have a react js widget which has the signature pad. Now, I am saving the signature in signature field in zoho creator form. If I open the edit report record in widget then I want to display the Signature back in signature field. I am using readFile
    • Creator roadmap for the rest of 2022

      Hi everyone, Hope you're all good! Thanks for continuing to make this community engaging and informative. Today we'd like to share with you our plans for the near future of Creator. We always strive to strike a good balance of features and enhancements
    • Filtering repport for portal users

      Salut, I have a weird problem that I just cannot figure out : When I enter information as administrator on behalf of a "supplier" portal user (in his "inventory" in a shared inventory system), I can see it, "customer" portal users can see it, but the
    • Zoho Inventory. Preventing Negative Stock in Sales Orders – Best Practices?

      Dear Zoho Inventory Community, We’re a small business using Zoho Inventory with a team of sales managers. Unfortunately, some employees occasionally overlook stock levels during order processing, leading to negative inventory issues. Is there a way to
    • Zoho One - Syncing Merchants and Vendors Between Zoho Expense and Zoho Books

      Hi, I'm exploring the features of Zoho One under the trial subscription and have encountered an issue with syncing Merchant information between Zoho Expense and Zoho Books. While utilizing Zoho Expense to capture receipts, I noticed that when I submit
    • Is Zoho Sheet available for Linux ?

      Is Zoho Sheet available for Linux ?
    • Zoho Sheet for Desktop

      Does Zoho plans to develop a Desktop version of Sheet that installs on the computer like was done with Writer?
    • BUTTONS SHOWN AS AN ICON ON A REPORT

      Hi Is there any way to create an action button but show it as an icon on a report please? As per the attached example? So if the user clicks the icon, it triggers an action?
    • Dropshipping Address - Does Not Show on Invoice Correctly

      When a dropshipping address is used for a customer, the correct ship-to address does not seem to show on the Invoice. It shows correctly on the Sales Order, Shipment Order, and Package, just not the Invoice. This is a problem, because the company being
    • RFQ MODEL

      A Request for quotation model is used for Purchase Inquiries to multiple vendors. The Item is Created and then selected to send it to various vendors , once the Prices are received , a comparative chart is made for the user. this will help Zoho books
    • Will zoho thrive be integrated with Zoho Books?

      title
    • Product Updates in Zoho Workplace applications | August 2025

      Hello Workplace Community, Let’s take a look at the new features and enhancements that went live across all Workplace applications this August. Zoho Mail Delegate Email Alias Now you can let other users send emails on your behalf—not just from your primary
    • Notebook audio recordings disappearing

      I have recently been experiencing issues where some of my attached audio recordings are disappearing. I am referring specifically to ones made within a Note card in Notebook on mobile, made by pressing the "+" button and choosing "Record audio" (or similar),
    • Unable to send message; Reason:554 5.1.8 Email Outgoing Blocked

      Hi, I sent few emails and got this: Unable to send message; Reason:554 5.1.8 Email Outgoing Blocked And now I have few days since I cant send any email. Is there something wrong I did? Also can someone fix this please
    • Want to use Zoho Books in Switzerland. CHF support planned?

      Hi, We're a Swiss company using other Zoho suite software and I discovered Zoho Books and other accounting SaaS when looking for an accounting tool. Do you intend to cover Switzerland and CHF based accounting anytime soon? Roy
    • Zoho sheet desktop version

      Hi Zoho team Where can I access desktop version of zoho sheets? It is important as web version is slow and requires one to be online all the time to do even basic work. If it is available, please guide me to the same.
    • Weekly Tips : Teamwork made easy with Multiple Assignees

      Let's say you are working on a big project where different parts of a single task need attention from several people at the same time—like reviewing a proposal that requires input from sales, legal, and finance teams. Instead of sending separate reminders
    • Best way to share/download presentation files in Zoho without losing formatting?

      Hello Zoho Community, I often work with PPT/PDF files in Zoho Docs and share them with colleagues. While PDFs usually give a direct download option, I’ve noticed that PPT/PPTX files sometimes only open in the viewer without a clear download link. Is there
    • Celebrating Connections with Zoho Desk

      September 27 is a special day marking two great occasions: World Tourism Day and Google’s birthday. What do these two events have in common (besides the date)? It's something that Zoho Desk celebrates, too: making connections. The connect through tourism
    • What is Resolution Time in Business Hours

      HI, What is the formula used to find the total time spent by an agent on a particular ticket? How is Resolution Time in Business Hours calculated in Zohodesk? As we need to find out the time spent on the ticket's solution by an agent we seek your assistance
    • How use

      Good morning sir I tried Zoho Mail
    • Adding Overlays to Live Stream

      Hello folks, The company I work for will host an online event through Zoho Webinar. I want to add an overlay (an image) at the bottom of the screen with all the sponsors' logos. Is it possible to add an image as an overlay during the live stream? If so,
    • Email Sending Failed - SMTP Error: data not accepted. - WHMCS Not sending emails due to this error

      I have been trying to figure out a fix for about a week now and I haven't found one on my own so I am going to ask for help on here.  After checking all the settings and even resetting my password for the email used for WHMCS it still says: Email Sending Failed - SMTP Error: data not accepted.  I have no clue how to fix it at this point. Any insight would be lovely. 
    • Next Page