Hello everyone!
Welcome to this week's post in the
Kaizen Series! This week, we will discuss
GraphQL APIs, a query language that provides an efficient, powerful, and flexible method for fetching and manipulating data from Zoho CRM.
Let us consider the scenario of a large industrial equipment manufacturer, Zylker Manufacturing. They utilize Zoho CRM to streamline their sales processes and customer relationship management. Their sales support team uses a legacy system to manage their activities. When a contact seeks support, the support team must have access to the latest data from Zoho CRM to assist them better. They need:
- details of the contact, such as email, phone, and Account details
- details of the ongoing deals of the contact, including potential revenue and stages .
With GraphQL APIs, with a single API call, you can create custom unified view that combine information from multiple Zoho CRM modules. This allows the support team to view all relevant information in one place, making it easier to manage sales processes and customer interactions. To create the view, metadata of the fields is also required. This structured approach in GraphQL allows Zylker Manufacturing to efficiently aggregate data.
You need to construct a GraphQL query to fetch specific data related to a contact and associated deals, as well as metadata about the fields in the Contacts and Deals modules. Let's break down each part of the query that can achieve this.
1. Fetching Contact and Deal Information
- Records: Records comprises the records from the different Zoho CRM modules.
- Contacts: Specifies that we want to query the records of the Contacts module. The where clause filters the contacts based on their email address.
- _data: This indicates the fields we want to retrieve from the records. In this case:
- Email: Fetches the email of the contact.
- Full_Name: Fetches the full name of the contact.
- Deals__r: Fetches the related deal record of the Contact.
- Expected_Revenue: Fetches the expected revenue from each deal.
- Deal_Name: Fetches the name of each deal.
- Stage: Fetches the current stage of each deal.
|
Records {
_data { Email { value} Full_Name { value} Deals__r { _data { Expected_Revenue { value} Deal_Name { value} Stage { value }}}}}}
|
2. Fetching Metadata for Contacts
- Meta: This fetches the details of the metadata for Contacts module. It uses the alias "contact_meta"
- Modules(filter: { api_name: "Contacts" }): Specifies that we want to fetch the metadata of the Contacts module.
- _data: This indicates the fields we want to retrieve. In this case:
- id: The unique identifier for the module.
- api_name: The API name for the module.
- module_name: The name of the module.
- description: The description of the module.
- plural_label, singular_label: Labels used for the module.
- fields: Retrieves metadata for specific fields within the module. filter: { api_names: ["Last_Name", "Email"] }: Specifies which fields' metadata to retrieve.For each field, it retrieves:
- id: Field identifier.
- api_name: API name for the field.
- display_label: The display name of the field.
- json_type: The data type as represented in JSON.
- data_type: The Zoho CRM data type of the field.
| contact_meta: Meta { Modules(filter: { api_name: "Contacts" }) { _data { id api_name module_name description singular_label plural_label fields(filter: { api_names: ["Last_Name", "Email"] }) { _data { id api_name display_label json_type data_type } } } } }
|
3. Fetching Metadata for Deals
- Meta: This fetches the details of the metadata for Deals module. It uses the alias "deal_meta"
- Modules(filter: { api_name: "Deals" }): Specifies that we want to fetch the metadata of the Deals module.
- _data: This indicates the fields we want to retrieve. In this case:
- id: The unique identifier for the module.
- api_name: The API name for the module.
- module_name: The name of the module.
- description: description of the module.
- plural_label, singular_label: Labels used for the module.
- fields: Retrieves metadata for specific fields within the module.
- filter: api_names: ["Expected_Revenue", "Deal_Name","Stage"] }: Specifies which fields' metadata to retrieve.For each field, it retrieves:
- id: Field identifier.
- api_name: API name for the field.
- display_label: The display name of the field.
- json_type: The data type as represented in JSON.
- data_type: The Zoho CRM data type of the field.
| deal_meta: Meta { Modules(filter: { api_name: "Deals" }) { _data { id api_name module_name description singular_label plural_label fields(filter: { api_names: ["Expected_Revenue", "Deal_Name","Stage"] }) { _data { api_name id display_label json_type data_type } } } } }
|
The complete query will look this:
query {
Records { _data { Email { value } Full_Name { value } Deals__r { _data { Expected_Revenue { value } Deal_Name { value } Stage { value } } } } } } contact_meta: Meta { Modules(filter: { api_name: "Contacts" }) { _data { plural_label id api_name module_name description singular_label fields(filter: { api_names: ["Last_Name", "Email"] }) { _data { id api_name display_label json_type data_type } } } } } deal_meta: Meta { Modules(filter: { api_name: "Deals" }) { _data { plural_label id api_name module_name description singular_label fields( filter: { api_names: ["Expected_Revenue", "Deal_Name", "Stage"] } ) { _data { api_name id display_label json_type data_type } } } } } }
|
If you were to fetch this data using REST APIs, it will involve multiple calls to the
- Query API
- Related Records API
- Modules meta API, and
- Fields meta API.
Using the GraphQL query you can fetch the required data alone in a less round trip time. While constructing a query for your custom requirement, please note that you can query up to three levels of depth (nesting levels of a field) for Records and 7 levels of depth for Metadata.
Constructing GraphQL query using Postman
To construct a GraphQL query in Postman to suit your requirements, type {api_domain}/crm/graphql in the URL box. Postman will automatically fetch the query schema in the schema explorer, which can be used to explore the types of queries that can be made, including what fields are available on each type, what arguments those fields accept, and what other types they return.
Constructing a Zoho CRM GraphQL query in Postman using schema explorer

Update 25th Sep 2024:
GraphQL APIs are now open across all DCs including IN DC for Enterprise, Zoho One Enterprise, CRM Plus and Ultimate edition orgs. Please note that GraphQL APIs are not available for Trial Edition of these editions.
We hope you found this post useful. We will meet you next week with another interesting topic!
If you have any questions, let us know in the comment section or reach out to us directly at
support@zohocrm.com.
Recent Topics
Update Regarding Zoho Finance Applications' Domains For API Users
Hi users, Until now, both the Zoho Finance apps and their APIs shared a common domain. We've recently introduced separate domains for APIs. You can now start using the new domains for API calls. The old domains will not work for API users starting April
Ability for Agents to Initiate Voice Calls With Site Visitors Without Active Chat Session
Dear Zoho SalesIQ Team, Greetings, We would like to request a feature enhancement related to the voice call functionality in Zoho SalesIQ. Current Limitation: At the moment, voice calls can only be initiated by agents after a chat session has been started
Add new Card
How do you add a new credit card to a contact with Zoho API as can be done on web. I am not able to find way to do this with Books API, CRM API or Subscriptions API. This is an issue for our company as we do migration from a different system. I can add card to a subscription through Subscriptions API, but some of our customers may not have a subscription, but only invoices set up in Zoho Books. Is there any way in Zoho API to add new credit card to contact/customer?
Benchmark for Using Mail Merge in Service Order Scopes
Hello, I was wondering if Zoho CRM has a benchmark or best practices for utilizing Mail Merge in service order scopes. Specifically, I'm looking for guidance on how to effectively integrate this feature for creating and managing service orders, especially
This user is not allowed to add in Zoho. Please contact support-as@zohocorp.com for further details
Hello, Just signed up to ZOHO on a friend's recommendation. Got the TXT part (verified my domain), but whenever I try to add ANY user, I get the error: This user is not allowed to add in Zoho. Please contact support-as@zohocorp.com for further details I have emailed as well and writing here as well because when I searched, I saw many people faced the same issue and instead of email, they got a faster response here. My domain is: raisingreaderspk . com Hope this can be resolved. Thank you
Why don't we have better integration with Mercado Pago or Pagseguro?
Currently, the integration between Zoho Commerce and Mercado Pago for Brazil is very poor... Since it is old, it does not include the main payment method in Brazil today, which is PIX. Is there a date for this to finally be launched? There are numerous
two columns layout
it's actually frustrating to not have this feature, I actually had to convince my employer to subscribe to zoho forms and integrate it with zoho crm, but because of this feature not beeing provided, our forms looks unnecessarly long and hideous.
Sync Zoho Desk Help Center Category Icons to SalesIQ Articles
Dear Zoho SalesIQ Team, Greetings, We are using the integration between Zoho SalesIQ and Zoho Desk to sync articles from our Zoho Desk Knowledge Base into SalesIQ. While this integration works well for syncing article content, we’ve noticed a visual inconsistency:
Company Name not pre-populating when using Quick Create: Contact
Hi Devs, This has bugged me for a long time, and it's a simple UX design change to solve it. Problem: Users creating Contacts not linked to Companies/Accounts Cause: When a user creates an Opportunity where after browsing the Contacts they realise they
Spell Checker in Zoho desk
Is there a way to set always check spelling before sending? Outlook does this and it is a handy tool to avoid typos
Enable Sync of SalesIQ Article Interactions to Zoho Analytics for Unified Knowledge Base Reporting
Dear Zoho SalesIQ and Zoho Analytics Teams, Greetings, We’d like to formally request an enhancement to enable SalesIQ article interaction data to be synced with Zoho Analytics, so that we can obtain a unified view of our knowledge base performance metrics
How to enter membership share, sold or reimburse
Hello, First, I am just begining taking care of the accounting of my organisation, and new also to Books. In Books, our accounting plan has an account #3900 - Share capital, that cumulates the share our member pay. How do I write a sale or a reimbursement
Ability for me to take the issued PDF certification on successful completion of a course then push to zoho sign in order that it is digitally certified
How can I take the issued PDF certification on successful completion of a Zoho Learn course then trigger a workflow to push to Zoho Sign in order that it is digitally certified, hosted on the blockchain and then push to Zoho Workdrive to be hosted off
Candidates rejection process
Is there a way to get ZOHORecruit to automatically send out an email to candidates that are rejected?
Multi file upload
Hi, I just wonder if one could upload multiple files in one shot, say between one and three files, without adding multiple File Upload fields? Thanks, Alalbany
Passing the image/file uploaded in form to openai api
I'm trying to use the OpenAI's new vision feature where we can send image through Api. What I want is the user to upload an image in the form and send this image to OpenAI. But I can't access this image properly in deluge script. There are also some constraints
Calendar Year View?
Is there a way I can view the calendar in year view? Maybe create a page with a view like this?
ABN Amro
Hi, We are trying to add Abn AMRO as a bank in Zoho Books. However we get the following error: Type of Error: User Action Required Description: The request cannot be completed because the site is no longer supported for data updates. Possible workaround: Please deactivate or remove the account. Suggested Action: The site will no longer be supported by Zoho Books and should be removed. Does that mean it's no longer supported? Thanks!
Add bank transfers via a webhook or API
Hello ZOHO Books Community, is there anyway to add single transactions to bank accounts via an API or webhook? I found in docs to upload a bank statement. But i want to add a transaction from an external (unsupported bank) in the moment there is a transaction
Books does not allow 19% tax rate for invoice - Please help!
Hi there, I need to do an import of invoices into Zoho Books. The process worked smoothly before we migrated to the Books Germany Edition in December 2024. It does import 13 out of 14 invoices from my csv-file. For the one it does not import I get the
When will Zoho Books offer native NFS-e issuing, now with Brazil's National Standard?
Hello Zoho Team and Community, I'd like to follow up on my previous suggestion regarding the critical need for Zoho Books to natively issue Brazilian Service Invoices (NFS-e). My original idea was that this could be achieved by extending the same integration
API 500 Error
Hello amazing ZOHO Projects Community, I get this message. How can we solve this? { "error": { "status_code": "500", "method": "GET", "instance": "/api/v3/portal/2010147XXXX/projects/2679160000003XXXX/timesheet", "title": "INTERNAL_SERVER_ERROR", "error_type":
Admin Access to Subscriber Information for System/Default Bots in Zoho Cliq
Dear Zoho Cliq Team, Greetings, We would like to request an enhancement to Zoho Cliq's bot management capabilities. Specifically, we are asking for the ability for organization administrators to view the list of subscribers for system/default bots, such
zoho webmail keeps opening an empty tab when on log in/vist webmail
as the the title says, whenever i log in or visit the page in a new tab, zoho webmail with open a new tab, but it errors out (see attachment). how do you stop it from doing this?
FSM work order creation on books quote approval
I have followed https://help.zoho.com/portal/en/kb/fsm/custom-integrations/zoho-books/articles/perform-actions-in-zoho-fsm-on-estimate-approval-in-zoho-books#Step_1_Create_a_connection_for_Zoho_FSM_in_Zoho_Books in order to create a work order in FSM
Tip of the week #46 - Stay more organized by moving threads between inboxes
Have you ever come across a thread in your inbox that should have been handled by a different team or inbox? Or maybe you've wrapped up your part of the conversation, but another team needs to step in to finish the task or assist further? Keeping such
Text summarization and field detection with Zia, Zoho's AI assistant
Have lengthy documents that take forever to read and sign? Tired of placing fields into hundreds of pages? Here's a single solution to solve both challenges: Zia, Zoho's AI assistant. With Zia's integration with OpenAI, you can summarize long documents
Sending Links to Functions in CRM
Maybe I'm crazy, but currently there's no way to send someone a link to a custom function. The only link you can get is to the myfunctions page, which is very frustrating. This should work like workflow rules where when you click on one, it should have
zohoからの自動メールについて
zohoからの自動メールにおいてちょっと困ったことが起こっており、サポートにも相談中なのですが ほかの方にも同現象が発生していないか相談したい。 ▼事象 zohoからの自動メールにおいて時折「このメールが送信者からのものであると確認できないため、このメールに安全に返信できない可能性があります」とメーラーから警告が出る。 ▼状況 発信元:設定した独自ドメイン SPF/DKIM設定:済 利用メーラー:outlook 発生頻度:稀(連続するときもあるが、パタッとでなくなる時もある) サポートへの連絡:ただいま継続相談中
Using Deluge scripting to create/update data in TabularSections
I am having following Form structure with some other usual fields, and a tabular section which allows putting question, self rating and lead rating. (pic below) I am trying to create a record of this form via Deluge, but can't figure out way to populate
Zoho Recruit: How to link lookup fields using record ID instead of name during import?
Hi, I'm having an issue with lookup fields in Zoho Recruit during data import. When I import records into a module that includes a lookup field (e.g., to an Interview record), Zoho Recruit matches the lookup by the display name (string) instead of the
Add a "Success" Route to the "Forward to Operator" Card in Zobot
Hello Zoho SalesIQ Team, We hope you're doing well. We would like to request an enhancement to the "Forward to Operator" card in Zobot. Current Limitation: At present, the "Forward to Operator" card provides the following routes: Operator Not Available
Power of Automation :: Auto-update Project status based on Tasklist completion
Hello Everyone, A Custom function is a user-written set of code to achieve a specific requirement. Set the required conditions needed as when to trigger using the Workflow rules (be it Tasks / Project) and associate the custom function to it. Requirement:
Multi Module Lookup Fields
🎯 Use Case: In many custom implementations, especially those involving financial tracking, service operations, or project-based work, a single record (e.g. an invoice or bill) often relates to one of several different modules — but only one at a time.
How to Download a File from Zoho WorkDrive Using a Public Link
How to Download a File from Zoho WorkDrive Using a Public Link If you're working with Zoho WorkDrive and want to download a file using a public link, here's a simple method to do so using API or a basic script. This approach helps developers or teams
Facturation électronique 2026 - obligation dès le 1er septembre 2026
Bonjour, Je me permets de réagir à divers posts publiés ici et là concernant le projet de E-Invoicing, dans le cadre de la facturation électronique prévue très prochainement. Dans le cadre du passage à la facturation électronique pour les entreprises,
Introducing AI Modeler—a no-code approach to adding AI to your business applications
Forward-thinking businesses today are embracing AI to make life easier for themselves, their employees, and their customers. But if you haven't started yet, you might be concerned that your business will be left behind. Or maybe you're worried because
Tip #20 - Three things you probably didn't know you can do with picklists
Hello Zoho Sheet users! We’re back with another quick tip to help you make your spreadsheets smarter. Picklists are a great tool to maintain consistency in your spreadsheet. Manually entering data is time-consuming and often leaves typos and irregular
Zoho People how do i view the history of leave taken
Hi All What is the report that i am unable to view the history of the leave taken for an individual and team?
UK Registration for VAT with existing stock/inventory
We have an existing inventory of stock and are investigating how to handle the conversion from a UK VAT unregistered company to a UK VAT registered company. Enabling VAT registered status looks extremely easy, but we cannot find any way within Books to
Next Page