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.
Hello everyone!
Welcome back to another post in the Kaizen series!
Queries in Zoho CRM can power much of what makes a customized CRM experience work—Canvas views, Kiosk pages, custom related lists, and more.
But writing effective queries goes beyond just “getting the data.” It’s about writing queries that are reusable, performant, and easy to maintain.
This Kaizen highlights some of the field-tested best practices to make your queries smarter and your CRM UI smoother.
1. Choose the right query type
Your choice of query type defines your flexibility, and matching the query type to the task reduces unnecessary complexity.
- Module-type queries work best when you need a quick fetch from a single module. For straightforward data retrieval, a simple Module query is often faster and easier to manage.
- COQL-type queries follow the SQL-like language model and allow you to filter, sort, and join data more deeply.
- REST API-type queries enable Zoho CRM to retrieve real-time data from external systems via GET requests, allowing you to display externally computed or stored information within CRM views.
2. Name your queries clearly and consistently
- Avoid query names like Get_Contacts_Test or Canvas_Query_1 as they become confusing over time.
- Instead, use names that reflect what the query actually returns and where it is used. For example, Open_Deals_By_Owner_For_Canvas, Upcoming_Activities_By_Account. This helps you or your team find and reuse queries faster.
3. Use nested lookups selectively
- Use nested lookups in COQL-type queries selectively to balance power and performance. Nested lookups in COQL help in reducing the number of API calls by fetching related records in the same query, but use only the lookup fields that are truly necessary when using queries in UI components or optimizing for speed.
- Limit yourself to the lookup fields your UI or logic actually needs. For example, do not retrieve Account.Owner.Territory.Name if you're only displaying the account name.
- If multiple nested fields are needed for display, consider flattening the data using serializers to keep the query clean and efficient.
4. Limit returned record count for list views
- For queries used in related lists or Canvas, fetch only the required number of records/rows to keep your UI focused and efficient.
- For example, in a Canvas View, it is best to fetch only the immediately relevant records like the latest notes, top deals, most recent activities etc,. This ensures that the data is concise, relevant, loads the UI quickly, and remains user-friendly across devices.
5. Use Variables to keep queries reusable
- Hard-coding values like record IDs or user names limits reusability.
- Instead, define variables like {{User_ID}}, {{Record_ID}}, or {{Account_ID}}, and pass them dynamically. This means you can use the same query across multiple records, users, or components.
6. Blend static and dynamic filters
- Not all values need to be variables.
- If a certain condition will always be true like 'Status = Open', hard-code it. But for user-specific and record-specific values, create variables. This mix of static and dynamic variables in your filters makes your query both specific and versatile.
7. Avoid fetching unnecessary fields
- Avoid selecting all fields by default. Fetching unnecessary fields increases response size and adds clutter.
- Limiting the field selection makes the query easier to maintain, especially when working with nested lookups and across modules.
- Smaller and focused responses are easier to format and bind in the UI components leading to better data handling.
- Even though CRM handles larger data well, brevity in the query leads to faster rendering and, ultimately, a better user experience.
8. Use serializer to format your output
- Don’t pass raw API data directly into your UI. Use serializers to clean, rename, and shape your response.
- For example, merge first and last names into a single full name field in the serializer.
- This keeps the UI logic clean and puts formatting responsibility where it belongs—inside the query layer.
9. Customize the schema after your query
- Zoho CRM auto-generates a schema for your query output, but it may not reflect exactly how they're used in your interface.
- Rename keys to reflect how they’re used in your interface, remove unused fields, and flatten nested objects where possible.
- A clean and relevant schema makes data binding faster and reduces errors.
10. Understand your return type: Map vs Table
- Use a Map when returning a single record (like in a summary view).
- Use a Table when returning a list (like in a data grid or related list).
- Using the wrong type and misalignment can break your Canvas component, show blank widgets or broken layouts.
11. Map queries to the right components
Design your queries with the target component in mind. This ensures clarity, reusability, and context-driven results.
- In Canvas, use queries to control what each widget displays.
- In Kiosk, tie queries to user flows or form submissions.
- In Custom Related Lists, pass record-level variables like {{Deals.Deal_ID}} for contextual filtering.
12. Use record ID-based filters properly
- Filtering with ID variables is common and useful, but too many queries filtered by IDs can lead to firing many API calls and consuming more API credits.
- Reuse queries and batch where possible.
13. Standardize REST API outputs with the 'crmAPIResponse' object
- REST API type queries give you flexibility, but may not return the response in the format that your UI expects.
- Use the 'crmAPIResponse' object to standardize the output, extract what you need, and define fallback values in case something is missing.
- This control in the output structure allows you to fit the output to your schema and maintain consistency across your queries.
14. Use Queries to supercharge related lists
- Queries can now power custom Related Lists where you are not limited to predefined module relationships.
- Use parent record variables to filter child records, apply sorting logic, and format fields for a clean display.
- Keep the row count reasonable for performance and readability.
15. Always test and monitor
Before going live
- Try the query to preview data, validate filters, and confirm variable substitution. It’s far easier to fix errors here than once the query is embedded in a Canvas view or live layout. Include user role and profile tests where needed.
- Check how schema or field updates affect the output.
- Log serializer issues or failed REST calls during development.
Good queries don’t just fetch data—they shape the user experience. Whether you’re building a dashboard or a simple record view, thoughtful query design ensures you deliver the right information, fast, and in the format that makes sense to your users.
We hope you liked today's post. We will see you next week with another one!
Cheers!
Recent Topics
Stock Count History in Product Details – Zoho Inventory
Hello Zoho Team, When I perform a Stock Count for a product in Zoho Inventory, I would like to view the history of those stock counts later — especially from the product details page. Currently, I can perform the count and update the quantity, but I’m
Create Project while winning potentials - Projects v3 api updated code
Hi all, I've been using the built in function to create a project while a deal is closed won and noticed it had some missing fields when trying to reference the zoho projects v3 api documentation. Specifically the project group had some issues when adding
[Free Webinar] Zoho RPA - OCR, PDF Automation, & More
Hello Everyone! Greetings from the Zoho RPA Training Team! We’re excited to invite you to our upcoming webinar on the latest release updates for Zoho RPA, where we’ll unveil powerful new capabilities designed to make your automation journey smarter, faster,
Merge feature parity with writer
Hello Zoho team, I have run into a workflow limitation with Zoho Contracts and the lack of merge feature parity with what Writer can do. We have created a fairly complex merge process to create a statement of work based on several fields in our CRM which
Export option in Contacts is missing
Hello - I've been clicking around Zoho all morning trying to find the export option. It formerly was in the right hand corner, above the search box, but now I don't see it. I've looked everywhere - Am I missing it somehow? I've attached a screenshot.
Formatting of cells changing by itself and formulas not always calculating automatically
I'm new to Sheets and have been setting up a budgeting template that has many linked tabs. It's going fairly well except certain quirky things have been happening from time to time. 1- sometimes when I scroll up or down I lose formatting from a random
Unable to open iOS Zoho CRM app
i am unable to open Zoho CRM iOS App in iPhone 14 Pro Max v18.5 and it is crashing immediately after i click to open
Whatsapp BOT with CRM
Hello, how do you use Whatsapp integrations in zoho CRM?
sync two zoho crm
Hello everyone. Is it possible to sync 2 zoho crm? what would be the easiest way? I am thinking of Flow. I have a Custom Module that I would like to share with my client. We both use zoho crm. Regards.
Side-by-Side view on Windows 11
Is there a way to open two notes in a side-by-side view? I'm running Notebook on a Desktop running Windows 11. If this feature doesn't exist, do you have plans for it?
Value shows in balance sheet for Goods in Transit
We have transferred goods from one warehouse to another warehouse and accepted the same at another warehouse. Although my balance sheet shows X amount as goods in transit value. I don't understand, how to clear that Can anyone guide us please?
Resolution Time Report
From data to decisions: A deep dive into ticketing system reports What are time-based reports? Time-based reports are valuable tools that help us understand how well things are going by breaking down key metrics over specific periods. By tracking, measuring,
Ask for a quote to multple vendors
We are able to send a Purchase order, but How can we Send a quote request to our vendor, once the value changes every time? I didn't see any feature like this in Zoho Books/ Inventory. Send this request with the Items that we want to know the cost, to
Bigin merge field in email template for subject line to match lead name
Hello We Are using email in to automatically create leads in our pipelines. When we want to reply from conversations, and apply an email template, it’s not matching the original subject line. It should be lead name to match. But it’s not working. Even
How to create auto-link between Invoice and Quote in CRM
It's strange that when you 'convert' a quote into an invoice, it doesn't auto-link the two. How can we develop an auto sync so we don't need to manually link each invoice to their respective quote?
Why Are Columns Reset When Deleting Entry
Hello, this is quite annoying. We use forms as a questionnaire for candidates, we filter entries by removing columns, when we delete an entry the columns reset. Every "delete" the columns reset, why!? Thank you
Pi or Pie? A slice of infinity in customer service
Hey everyone! While Pi Day is on March 14 (3.14), July 22 marks another special occasion: Pi Approximation Day! On this day, we recognize the mathematical constant π (pi ≈ 22/7); a number that's infinite, irrational, and never-ending. Pi is essential
Configuración
Hola acabo de instalar Zoho CRM y quiero configurarlo correctamente. Al respecto me surgen algunas dudas tales como la diferencia entre: Cuentas, posibles Clientes y Contactos. ¿Conceptualmente que son cada uno? ¿Como se se relacionan entre ellos? Si
Why Can't I add unicode emoji's to my signature?
Why would Zoho Mail prevent me from adding unicode emojis to my email signature? Every time I try to save the signature, Zoho Mail erases the emoji and any nearby content. Every time I setup something with Zoho, I know I'm going to run into some incredibly
GL account associated to each supplier for new bill
Hello I'm facing problem for all items of my bills that are not inventoried. The need is each time I enter new bill and after I select supplier the GL account section is autopopulated with default GL account (that I would like to add in supplier settings)
LinkedIn verification link and otp not receiving
For the last 2 to 3 weeks I'm trying to verify my LinkedIn account to access my company's LinkedIn page, Linkedin is sending verification links and codes to this email address but I have not received any codes or links. Please help me here. Looking forward
Zoho reply to not working. just reply to my self
Hello. i using on my wordpress website a contact form from Wsform. i can set the reply to email there. normally it works. but since i am using your wordpress plugin zoho mail it doesn`t work. its not using the reply to (email from customer). I just can
Mail Merge Stuck in Queue
I am trying to send Mail Merge's and it never sends out to the full list. It always hits a portion and the rest remain in the "Queue" - the emails I am sending are time sensitive, so I need this to be resolved or have a way to push the emails through
SMTP Email Sending Not Working for My Domains and Apps
Hello Zoho Support Team, I am experiencing a critical issue with sending emails via Zoho SMTP for my domain humanhup.com. Both of my applications, HumanHup and CheapUI, are unable to send emails using Zoho SMTP, even though the same setup was working
Receiving too many Spam Leads. Why?
I am receiving so many junk leads from web forms created by zoho's platform. The junk queries are increasing day by day and are affecting our business. I am continuously following up with zoho team from the past one year but not getting any satisfactory
Why is Zoho supporting the Proud Boys?
Hello. This is the only way I can find to contact your company. There is someone in Maine posing as a law enforcement officer, attempting to kidnap immigrants. They are also recruiting for a known hate group. They have an email address hosted by Zoho.com.
Composite Item - Associated/Component Items
I am trying to find the Associated Item/Component Item field in the Composite Item Table in Analytics. Has anyone been able to find and utilize this field in Analytics?
🚀 WorkDrive 5.0: Evolving from a file sharing app to an intelligent content management platform: Phase 2
Hello everyone, WorkDrive's primary focus has always been to provide an intelligent and secure content management platform, simplify collaboration, and be the central repository of files for all Zoho apps. In our previous announcement, we unveiled the
Use openUrl() to edit a specific record
I am working on a queue app for my organization. I have a master queue that is a report of meetings with workflow buttons to manipulate the records. One of these buttons I would like to open the record and edit for the purpose of changing the queue lookup
why i cant access my web without the www
please help me
Send Whatsapp with API including custom placeholders
Is is possible to initiate a session on whatsapp IM channel with a template that includes params (placeholders) that are passed on the API call? This is very usefull to send a Utility message for a transactional notification including an order number
Help Centre Articles in Desk, Zia and iframe
Hi, We embed SOP documents into articles from Scribe into using iframe. We are looking at zia indexing articles to present to agents to aid their work. Please advise if zia can view and learn from the content within the iframe?
Rich Text/WYSIWYG Input Area
I'd like to have an option on ZoHo creator to create an input text area for HTML/rich text formatting. :)
How to create a directory report from one-to-many relationship
Hi all, Newbie here. I'm converting an Access DB to Creator. I've learned Forms are tables and Reports are used to edit table rows, not Forms. I've got the data loaded and can maintain it with the Reports already done. I've done filtering and sorting,
Change Default Selection for Lookup field
I have a Lookup field that I have locked, when I unlock it - the user can select the proper Zone but I need it locked, since this may change based on user selection of another field. Example. There are 3 potential zones. User A selects the Hospital Account
Restrict visibility and user permissions Creator 5
I don't understand how restrict visibility for reports interacts with the already established role permissions. It seems that the default on restrict visibility has everything checked for all users, but I cannot set up different levels of permission for different individuals. Right now I have three different ways to manage users and their access and it's confusing because everything has not migrated to Creator 5. Don't the role permissions extend to the reports as well? Are the selections under
LMS - Why do Trainers have to be Users?
I'm not sure why the software is set up where trainers must be users (i.e., employees). This should really be changed, as there are many cases (the majority of cases for some companies) where classroom trainers are external or contractors. If this is
ZOho mail not stopped working with my domain.
i have changed my name server settings in my domain sigmasquaretec.in . After that my emails are not working with ZOHO.
Request to Cancel Zoho Mail Subscription
Hello Zoho Team, I have migrated to Google Workspace and would like to cancel my Zoho Mail subscription for my organization. Organization Name: AR Creators Media Admin Email: roman@arcreatorsmedia.com Subscription ID: RPUS2005901960812 Please cancel the
zoho smtp limit for free users
What is Zoho SMTP limit for free users?
Next Page