Queries
In today’s fast-paced business environment, immediate access to relevant data is essential for informed decision-making.
Queries is a powerful feature that allows you to dynamically retrieve data from CRM as well as third-party services directly within our platform. With Queries, you can streamline your workflow, gain deeper insights, and make data-driven decisions without leaving the product.
Whether you fetch records from CRM or data from any other third-party services, the Queries feature gives you the power to present that data the way you want. For example, displaying only closed deals of a contact on a canvas or displaying the details of a ticket from Zoho Desk on a screen(Kiosk) in Zoho CRM.
All you have to do is write a query that solves your business need and associate that query with the relevant CRM feature like Canvas, Kiosk etc. This helps you leverage the power of data retrieval using REST API and COQL, along with schema management, serialization of responses, and other functionalities in data handling.
For example, consider that Deals is a related list in the Contacts module. A contact can have multiple associated deals, but you want to display only those that are won on your canvas.
To achieve this, you can create one of the following queries and associate that query with Canvas' Detail View.
Modules
This type allows you to retrieve the records from a module by selecting the module and its fields. You can also specify the conditions to filter records.
For our use case, create a query for the Deals module and use criteria to filter the deals by "Stage" and give the contact ID as a variable. This means that you want to filter only the deals associated with that contact and by their stage.
COQL
Create a COQL query for the Deals module. The COQL statement is as follows.
{ SELECT Deal_Name, Closing_Date, Stage, Related_Contact from Deals WHERE Stage = "Closed_Won" and Related_Contact = {{contact_id}} }
Here {{contact_id}} is the variable to pass the contact ID dynamically to the query during execution. To know more about variables in your queries, go to the Variables section on this page.
So, Queries is a hub to fetch data with advanced configurations and display data from within CRM and third-party applications, and use them at various places.
Components of Queries
Sources
A source is the data provider. Zoho CRM provides pre-configured sources like Module and COQL in Queries. Apart from this, you can also create your own source to fetch data from third-party as well as other Zoho services.
Currently, Queries supports REST API standard while creating a source.
Note
Currently, you can add a source as a REST API. Future enhancements will allow you to have sources like GraphQL, Databases like MYSQL & PostgreSQL, Cloud Databases from AWS, Azure and Google Cloud, OData Protocols, etc. This broadens the range of services you can connect with Zoho CRM and simplifies data handling.
Follow the steps to add a source.
- Go to Setup -> Developer Hub -> Queries. The Queries window opens.
- Click the Sources tab.
- Click Add Source.
- Under Information, enter the following:
- The name of the resource.
- The Base URL of the resource. This will be the URL of the other Zoho service or third-party, which Queries will make API calls to fetch data from. This URL must be available in the Trusted Domain.
- The default parameters and headers of the request.
- Under Connection, you can choose the connection of the data provider. You can also create a connection from here. For more details on creating connections, refer to this page.
Click Save.
Queries
Queries allow you to fetch data from various sources and use them as necessary at various places. Query configuration depends on the type of source. For example, if you choose the Source as "Module", your query can fetch data from that module. If your Source type is "COQL", you must write a query using COQL(CRM Object Query Language) to fetch data, and for the "REST API" Source type, you can use endpoints, headers, and other parameters to fetch data from a third-party service.
You can also perform sorting the response based on a field.
For more information on different types of queries, go to the Query Types page.
Variables
Queries supports variables at various places like the criteria, COQL statement, values, endpoints, etc. While associating the Queries query in components like Canvas, the variables should be mapped to the required fields.
These variables allow you to pass dynamic values to the query during execution(runtime).
You must declare a variable in curly braces in the format {{VARIABLE_NAME}}.
Schema
For every query, the schema will be generated and will be available in the result path.
Schema contains the path of each field, its CRM field type, and the label. You can traverse through this result to get to each field in the query. You can edit the field type and the label to suit your needs in the response of your query.
You can change the schema while creating or updating a query, or later. Hover over a query in the Queries tab. Click the three-dot icon and click Manage Schema.
Serializer
Serializer allows you to manipulate the response of a query using JavaScript, and alter it to suit your needs or use it for further processing.
Create a Query
Let us see how to create a query for the Source type CRM - Module. The criteria for the query is to fetch all deals of a contact, whose "Stage" is "Closed Won".
- Go to Setup -> Developer Hub -> Queries. The Queries window opens.
- Click Add Query.
- In the "Add Query" pop up, enter the following details:
- Under Source, choose the source of the query as CRM Module.
- Under Information, enter the name and API name. This API name will be referenced at places where the query is used.
- Choose the module in CRM for which you want to create the query. You can also create queries for Subforms.
- If your module has lookup fields, you can also include them in your query. Choose the required lookups in the Related Module drop down. Note that you can choose a maximum of two fields in this drop down.
Select the required fields for your query from the Fields drop down. Note that you can choose a maximum of 50 fields here.
- Under Criteria, you can choose to get all records, or filter the response by the record ID or apply criteria.
- None - This option does not apply any criteria.
Criteria - You can apply criteria over different fields for which you are creating the query. Criteria supports various comparators and you can also group the conditions using AND or OR operators. You can also choose to give the value for the criterion or choose a dynamic value. Dynamic value means that the value will be taken for this field when the query is used at some place. In this example, we are assigning a variable to get the ID of the contact record that is associated with the deal that meets the criteria.
- Record ID - Choose this option if you want to apply the query to a specific record. You can assign a variable to this field and pass the record ID during execution.
Under Serializer, click Add Serializer to modify the response through JavaScript. You can then use this modified response for further processing. The following image shows an example of a serialized response. Click Save.
- You can also sort the response based on a field either in the ascending or descending order. Under Advanced, choose the field to be sorted on in the Order by drop down and the order in which it has to be sorted.
- Click Next. If your query has a dynamic value in criteria, you will get a pop up asking for its value. Specify the value and click Save. You will see the response of the query you created. Click Next.
In the next pop up, you can see the Path, CRM Field Type, and the Label. Path indicates the JSON path in the response that the field is available in, CRM field type indicates it's field type in CRM such as long int, int, and the label indicates the label/name of the field. You can edit these values based on what you need in the query's response.
- Click Save to save your query.
Limits
- Query Limits
- Enterprise Edition - 250 queries
- Ultimate Edition - 500 queries
- Sources - 200 sources for both Enterprise and Ultimate editions