Hello everyone!
Welcome back to another post in the Kaizen series!
This week, we will discuss what are CRM Variables and variable groups, how to create, update, and delete them through an API and the UI, and a simple example in Deluge of using a CRM variable in a function.
Let's get started!
What are CRM Variables?
Often, we have the need to reuse certain data in CRM at various places. Instead of creating separate fields to hold such values in every module, we can create an org-level field and use the same value across the CRM system. This field is called a CRM Variable.
These variables can be of any of the following data types:
- Decimal
- Single line
- Multi line
- Integer
- Long integer
- Percent
- Currency
- Date
- DateTime
- Email
- Phone
- URL
- Checkbox
Where can you use CRM Variables?
You can use CRM variables in mail merge templates, email templates, functions, workflows, buttons etc,.
What are Variable Groups?
When you have multiple variables, you can group them together for easy accessibility. For example, it makes sense to group all the authentication variables such as access token, refresh token etc., under a group called "Auth parameters".
How can you create a CRM Variable?
You can create CRM Variables from the UI or through the CRM API.
1. From the UI
- Go to Setup > Developer Space > Zoho CRM Variables > Create New Variable.
- In the Create Zoho CRM Variable pop up, enter the following details:
a. The name of the variable in the Variable Name field.
b. The API name of the variable in the API name field.
c. A brief description of the variable in the Description field.
d. The data type of the variable from the Variable Type drop-down.
e. The group that the variable must belong to in the Grouped Under drop-down. - Click Save.
2. Creating a variable through an API
Request URL: {api-domain}/crm/{version}/settings/variables
Request method: POST
Scope: ZohoCRM.settings.variables.ALL or ZohoCRM.settings.variables.CREATE
Input JSON keys
{ "variables": [ { "name": "Company Address", "api_name": "Company_Address", "variable_group": { "api_name": "General", "id": "3652397000004992001" }, "type": "textarea", "value": "#24, Austin, TX", "description": "The address of the company when the state is Texas" } ] } |
where,
Key name and data type | Description |
| The name of the variable. |
api_name string, mandatory | The API name you want to set for the variable. |
variable_group JSON object, mandatory | The API name and the ID of the variable group you want to group your variable under. If you do not have a variable group, you can only group it under "General". Use the Get Variable Groups API to get the ID and name of the variable group. |
| The data type of the variable. The possible values are integer, text(for single line), percent, decimal, currency, date, datetime, email, phone, url, checkbox(for Boolean), textarea(for multi-line), and long. |
| The value of the variable. |
description string, optional | A short description of the variable.
|
Sample Response
How can you update a CRM variable?
1. From the UI
- Go to Setup > Developer Space > Zoho CRM Variables.
- Hover over the variable you want to edit.
- Click the "Edit" icon on the left-corner of the variable.
- In the Edit Zoho CRM Variable pop up, update the relevant details.

- Click Save.
Note
You cannot edit the Variable Type and Grouped Under fields.
2. Through an API
Request URL: {api-domain}/crm/{version}/settings/variables (or)
{api-domain}/crm/{version}/settings/variables/{variable_API_name or Variable_ID}
Request method: PUT
Scope: ZohoCRM.settings.variables.ALL or ZohoCRM.settings.variables.UPDATE
Input JSON keys
Note that besides "id", all the keys are optional based on what details you want to update.
{ "variables": [ { "id":"3652397000012482002"; "name": "Company_Address", "api_name": "Company_Address", "value": "#24, Austin, TX", "description": "The address of the company when the state is Texas" } ] } |
where,
Key name and data type | Description |
| The ID of the variable you want to update. You can get this ID from the Get Variables API. |
| The name of the variable. |
| The API name you want to set for the variable. |
| The value of the variable. |
| A short description of the variable.
|
Sample Response
How can you delete a CRM variable?
1. From the UI
- Go to Setup > Developer Space > Zoho CRM Variables.
- Hover over the variable you want to delete.
- Click the "Delete" icon on the left-corner of the variable.

- Click Delete in the pop up that asks for confirmation.
2. Through an API
Request URL: {api-domain}/crm/{version}/settings/variables/{variable_id} (or)
{api-domain}/crm/{version}/settings/variables?ids=id1,id2..
Request method: DELETE
Scope: ZohoCRM.settings.variables.ALL or ZohoCRM.settings.variables.DELETE
Sample Response
Use cases
Here are a few use cases where you can use CRM Variables.
- Consider that you have integrated with RazorPay and want to send payment links to deals that you have won. Here, you can store the payment link in a variable and use it in the function that sends the link to the deal through an email.
- You can improvise the above function, and have a condition that checks whether the payment link is valid or has expired. If it is invalid or expired, you can send an alternate payment link that is stored in another CRM variable.
- Consider you have scheduled a function to run everyday. Now, you want to run this function except on Saturday and Sunday of a particular month. In this case, you can hard-code the Saturday and Sunday in CRM variables of the DateTime type, and check this while running your function. You case would be "if datetime =={CRM variable}, stop execution".
- Another classic example of using CRM Variables would be in the banking sector. Consider that you have multiple modules that deal with the rate of interest. This rate will differ based on the tenure, the type of loan, the age of a person etc, and used at multiple places across the org. Here, you can set up variables for the different rates of interests and use them in various places. The best part is, when the rate of interest changes, you have to just change it at one place - CRM Variable.
Let us see this example in detail.
I have a module called Loans. For home loans, the rate of interest is 10% for all, irrespective of the tenure.
So, I have created a CRM variable called Interest, whose data type is decimal, and has the value 10.
In the Loans module, I have the following fields:
- Customer Name(single line) to represent the name of the customer who has opted for the loan.
- Principal(decimal) to represent the principal they have borrowed.
- Tenure(number) that depicts the number of years they will repay the loan in.
- EMI(decimal) to represent the monthly installment.
- Total(decimal) to represent the total amount they will repay including the interest.
I have a function that calculates the EMI and the Total. Here is the code.
// In this function, we are getting principal, tenure and record id from the record and Interest from CRM Variables. //Calculate Total Total = Principal + Principal * Interest / 100 * Tenure; info Total; //Calculate EMI EMI = Total / (Tenure * 12); info EMI; //Variable with MAP type to hold the fields and values record_info = {"EMI":EMI,"Total":Total}; info record_info; info zoho.crm.getRecordById("Loans",record_id); //Updating the record zoho.crm.updateRecord("Loans",record_id,record_info); |
The following image shows the function argument mapping.
I have now set up a workflow that is triggered upon record creation. This workflow has the Calculate EMI function associated to it as shown in the following image.
As you can see, in Argument Mapping, I have chosen the CRM variable Interest.
Here is a demo of how the workflow is triggered and function execution.
As you can see, based on the value in the CRM variable, the Total and EMI is calculated through the function triggered by the workflow upon record creation.
We hope you liked this post. We will see you next week with another interesting topic.
Please let us know if you have any questions in the comment section or write to us at
support@zohocrm.com.
Cheers!
Recent Topics
Final Reminder: Discontinuation of Older ASAP Widgets and Mobile SDK Support
We launched the new ASAP Help Widget last year, introducing a unified and enhanced experience. Since then, older configurations have been placed in read-only mode, with all major updates and improvements built exclusively on the new version. As part of
Zoho Subscriptions -- Zoho Commerce integration
Is there integration between Zoho Subscriptions and Zoho Commerce? I would like to create subscription plans in Zoho Subscritpions and list them for on my Zoho Commerce store.
Website show Blank white screen
Customer called me to tell me my website is currently down upon review it shows a white screen however I can access everything via editor. JITCADCAM.com
How manufacturing analytics can transform your enterprise with Zoho Projects Plus
Did you know that every single car is made up of 30,000 to 40,000 individual parts? All of these are manufactured meticulously in various facilities before being assembled into one. The global manufacturing industry spans a wide range from delivering
Customize your SalesIQ live chat with Custom CSS and blend it with your website design
Hi everyone. Hope you all are having a great day! SalesIQ offers various inbuilt customization choices for your chat widget and window like changes in colour, theme, font etc. Although these choices are many, sometimes they may not match with the design
From Email Address When Replaying to Missed Chats
One of the most common things we do is follow up on every missed chat. Missed chats are like money in the bank, people just waiting for your response and to start a relationship with our companies. However, SalesIQ only lets you respond from 1 email address from your entire account?! We have happily paid for 4 subscriptions, but our users cannot reply from their own email address? How are we supposed to build customer relationships? The fix to this issue is so simple, just load in the logged in
Narrative 6 - The impact of rebranding
Behind the scenes of a successful ticketing system - BTS Series Narrative 6 - The impact of rebranding Every organization has invested in branding to set itself apart, and that should be reflected in the help desk. Zoho Desk enables organizations to apply
custom color palette for picklist in Sheet
Migrating over from Google Sheets and missing the ability to customize the individual item colors of my picklist/dropdown menus. Is this something that is possible? A search showed me creating a custom color palette in Analytics is possible but I am not
What's New - July 2025 | Zoho Backstage
Start smart, end strong. From knowing who’s coming to celebrating who showed up, July’s updates help you run events that feel organized from the first invite to the final thank you. Planning an event used to be like writing a choose-your-own-adventure
Image Upload Field API get encrypted ID and sequence number
Hello is there a way to extract the encrypted id and sequence number from image upload fields through the Zoho CRM API? I created a custom script with javascript within Zoho CRM, but I want to extract the encrypted id and sequence number for all my images
Attention: Changes to 10DLC TCR pricing and new authentication requirements
Hi everyone, Starting August 1, 2025, The Campaign Registry (TCR) is introducing new pricing changes and a mandatory brand verification process called Authentication+ 2.0, which will affect how you register and manage your 10DLC messaging services. These
Better Time Tracking
We need better time tracking customization for IT MSPs. We also need reporting that is built in, rather than having to try and fumble with creating custom reports. We also need to be able to mark whether a ticket has been billed or not, I don't think
Scheduled Tickets Need Updated
There is a very clunky manual way to create reoccurring scheduled tickets. This should be created to be easy for the administrator to create. We create several (10 to 12) reoccurring tickets per account for biweekly and monthly auditing purposes.. The
Team Feeds Improvements
Team Feeds needs to show a feed of every action within the department. Currently it seems that the feed will only show a ticket that I've personally commented on or interacted with/followed. A feed should be that, a feed. As a manager I would like to
Better Security, Better User Experience | Help Center Update | June'25
As part of our commitment to enhancing user experience and security, we are happy to announce updates to our authentication mechanism. This update introduces several key enhancements designed to improve the password recovery process and streamline the
Upload Logo to Account Page
It would be nice to set a logo for an Account
View Agent Collision on Ticket List Page
It would be nice from the ticket listing page (views) to see what agents are working on what tickets rather than having to click into each ticket throughout the day to see what agents are working on what tickets. This functionality would also be desired
Restrict user from viewing the detail standard view
Is there any way to restrict a user(it can be user-field-based) from viewing the detail standard view? Basically, I have created a canvas detailed view so that on some conditions I can hide some data from the users but the standard view client script
Upload Picture to Contact
It would be nice to upload a profile picture to a contact.
Allowing Pictures for Client Contacts
Do you have any plans to allow us to add pictures of our client contacts? There is a silhouette of a person there now, but no way that I can see where I can actually add a picture of the individual.
Agent name Alias
I am seeing that Full name of my staffs are written on every ticket response which is not good for some reasons. It is possible to user like this: Manny P. (First Name with Last Name's First Letter) or Manny (First Name) This is want we want to show
Unable to add attachments to tickets through Desk API
I able to use the Desk API to generate tickets. However when I try to use the tickets/{ticketId}/attachments endpoint, I always get an Unauthorized error. My app has Desk.Tickets.ALL included in its scope so this should not be an issue
What's wrong with this COQL?
What's wrong with this COQL? Code returns "invalid operator found". SELECT id, Name, Stage, Account, Created_Time, Tag FROM Production_Orders WHERE (Account = '4356038000072566002' AND Stage NOT LIKE '%customer%') ORDER BY Created_Time DESC LIMIT 200
[Feature Request] Add support for internationalized top-level domains mail hosting
This is an important request to add support for internationalized domains mail hosting to https://www.zoho.com/mail/ In this case, that is only limited to domain name/mail address however currently it's already possible for us send mails etc using below
Add Enable/Disable to Field Rules and other Rules
Hi, Sometimes I have rules setup for fields, and until I want to enable them for use, I can set the fields to Hidden but rules still show them, today you have to delete rules and then recreate them again, would be nice to have a toggle for Enabled/Disabled
Syncing stuck for days
Hello when I made an account a few days ago and synced all my notes to it, it is still syncing. My app is only 400mb so I do not know why it is taking so long. Please help
Workflow runs on every edit despite not ticking the field repeat this workflow whenever a parent is edited.....
Hi, It is my understanding that this workflow should only trigger once. Why is this triggering on every edit of the field? Based on another support query - directly from Zoho, If i tick the box 'repeat this workflow whenever a parent is edited' it should
How do you add or update tags on Zoho CRM records via n8n? (Workarounds or best practices?)
Hi all, I’m running into some limitations with the Zoho CRM node in n8n and was wondering how others have handled this: From what I see, the standard Zoho CRM node in n8n doesn’t allow you to add or update tags when creating or updating contacts/leads.
API PARAMETER FOR TICKET CLOSED TIME
Hi, Is there a parameter for filtering tickets by closed time in zoho api, i can see closed time in the API response i get, but can't get tickets by that field while calling. Regards, Anvin Alias
Reply to email addresses wrong.
I have setup my Zoho mail account using my main domain and I also have an Alias setup from a different domain. In Settings - Mail - Compose I have selected to the option "For replies, send using The same email address to which the email was sent to".
Meeting integration with Otter.ai
Would love for an integration with an AI transcription service like Otter.ai to be integrated with Zoho Meeting. Thanks
How to close/delete a free creator account?
I have a free zoho creator account associated with my email address that is not being used. I want to become a user of another paid zoho creator account but I can not associate with the paid account with the same email. I assume if I can close or delete the free account I will be able to use the paid account. I have emailed support but no response. Suggestions?
Zoho books and zapier causes Invalid data provided
I have been using zoho books with zapier for over 2 years now, everything was working fine. On September 13th my zaps stopped working. Now on step create sales invoice in zoho books i get an error: Failed to create a create_invoice_v2 in Zoho Books The
CRM report
Is it possible to pull a contacts report that also includes the company industry, as well as the company name? I’m having trouble combining company and contact fields – any help is appreciated. Thank you, Sam
Enhancements to Client script?
Hi Zoho CRM, I've been extensively using Client Scripts to enhance our Deal form experience, particularly for real time validations and auto updating fields based on specific logic. However, I've encountered a challenge regarding permission boundaries.
Add views to new CRM UI navigation + Unlimited Webtabs
Zoho CRM is so close now to being the ultimate business application with the new UI, as soon as this one feature is added. This is probably where Zoho is headed but if it's not I want to BEG for this to be incorporated. What we need is to be able to put
E-Mail Distribution List
How do I create an e-mail distribution list in Zoho Mail?
Custom "create meeting" button with more functionality than Zoho currently has?
I'm looking for a little help/direction in how to do this. Even just some general high level pointers on how this might be able to be done. The current Zoho Meeting Activity functionality is not ideal for my org's workflow. I'd like to try and create
Error Code 4: Invalid value passed for JSONString
Okay, I want to start by saying I know I'm a terrible scripter, so sorry if this is a dumb mistake. I just can't figure it out, even with LLM help. Here's my code: // --- Input Variables --- customer_id = salesorder.get("customer_id"); so_id = salesorder.get("salesorder_id");
Organizing contacts/members by company
I work for a membership organization (representing businesses) and am trying to use Zoho CRM more effectively for managing the points of contact for our members. Currently, our members are listed in our CRM by the primary point of contact's name, but
Next Page