Kaizen #90 - CRM Variables and APIs

Kaizen #90 - CRM Variables and APIs

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

  1. Go to Setup > Developer Space > Zoho CRM Variables > Create New Variable.
  2. 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.
  3. 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
name
string, mandatory
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.
type
string, mandatory
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.
value
string, mandatory
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

  1. Go to Setup > Developer Space > Zoho CRM Variables.
  2. Hover over the variable you want to edit. 
  3. Click the "Edit" icon on the left-corner of the variable.
  4. In the Edit Zoho CRM Variable pop up, update the relevant details.

  5. 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
id
string, mandatory
The ID of the variable you want to update. You can get this ID from the Get Variables API.
name
string
The name of the variable.
api_name
string
The API name you want to set for the variable.
value
string
The value of the variable.
description
string
A short description of the variable.

Sample Response

How can you delete a CRM variable?

1. From the UI

  1. Go to Setup > Developer Space > Zoho CRM Variables.
  2. Hover over the variable you want to delete. 
  3. Click the "Delete" icon on the left-corner of the variable.

  4. 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!

    • Sticky Posts

    • 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.
    • Kaizen #226: Using ZRC in Client Script

      Hello everyone! Welcome to another week of Kaizen. In today's post, lets see what is ZRC (Zoho Request Client) and how we can use ZRC methods in Client Script to get inputs from a Salesperson and update the Lead status with a single button click. In this
    • Kaizen #222 - Client Script Support for Notes Related List

      Hello everyone! Welcome to another week of Kaizen. The final Kaizen post of the year 2025 is here! With the new Client Script support for the Notes Related List, you can validate, enrich, and manage notes across modules. In this post, we’ll explore how
    • Kaizen #217 - Actions APIs : Tasks

      Welcome to another week of Kaizen! In last week's post we discussed Email Notifications APIs which act as the link between your Workflow automations and you. We have discussed how Zylker Cloud Services uses Email Notifications API in their custom dashboard.
    • Kaizen #216 - Actions APIs : Email Notifications

      Welcome to another week of Kaizen! For the last three weeks, we have been discussing Zylker's workflows. We successfully updated a dormant workflow, built a new one from the ground up and more. But our work is not finished—these automated processes are
    • Recent Topics

    • Create project (flow) and assign to person without account (company)

      Hi Zoho Support & Community, I'm trying to automate a process using Zoho Flow to create a Zoho Project and link it directly to a Zoho CRM Contact. This reflects our B2C workflow where we primarily deal with individual Contacts, not Companies/Accounts.
    • Mail and OS

      Jai Hind! Zoho is doing good by creating good software (made in india) on par with other tech giants. 🥰 Suggestion: 1. Whenever we sign up on zoho mail its asking for other mail id. It shouldn't be like that. You should ask general details of a user
    • Need Help to setup plugs along with codeless bot buidler. To send sms OTPs to users via Zoho Voice and to verify it

      Need Help to setup plugs along with codeless bot buidler. To send sms OTPs to users via Zoho Voice and to verify it. I get leads from our website and we need to make sure those are not junk. So we are using proactive chat bot and we need mobile OTPs to
    • Direct Integration Between Zoho Cliq Meetings and Google Calendar

      Dear Zoho Team, We’d like to submit the following feature request based on our current use case and the challenges we’re facing: 🎯 Feature Request: Enable meetings scheduled in Zoho Cliq to be automatically added to the host's Google Calendar, not just
    • Zoho sheet

      Unable to share zoho sheet with anyone on internet with editer option only view option is show
    • Personal account created under org account

      Hi there, I am Jayesh. We are using ME Central, and we have an account by the email ID soc@kissht.com.. Now I have created a personal account., jayesh.auti@zohomail.in, accidentally. Can you help me to remove this jayesh.auti@zohomail.in from my organization
    • Add another account

      How to add another mail account to my zoho mail.
    • Recover deleted user

      Hi by mistake i have deleted an added user and his email associated. Please help me recover it thank you.
    • No connection to the server

      Hello! I can't add a new email address to my mailbox because your server is rejecting me. Please help. I took and added a screenshot of this problem Marek Olbrys
    • Emails missing from desktop but visible on phone

      Subject says it all. Windows 11 laptop. Apple phone. all systems up to date.
    • Website Hosting

      Hello, I want to host my domain on Hostinger, and I want my emails to run through Zoho Mail. Please provide me with the SPF record, MX record (Type: TXT), and A record, so that I don’t face any issues with my emails. My website is on Hostinger hosting,
    • Can not search zoho mail after update V.1.7.0

      i can not search mail on to and cc box from attached picture and then search contacts box can't click or use anything. include replay mail too.
    • How to retreive the "To be received" value of an Item displayed in Zoho inventory.

      Hi everyone, We have our own Deluge code to generate a PO according to taget quantity and box quantity, pretty usefull and powerful! However, we want to reduce our quantity to order according to "To be received" variable. Seems like this might not even
    • Kaizen #211 - Answering your Questions | Using Canvas and Widgets to Tailor CRM for Mobile

      Howdy, tech wizards! We are back with the final post in addressing the queries you shared for our 200th milestone. This week, we are focusing on a couple of queries on Zoho CRM mobile configurations and custom payment gateway integration. 1. Mobile SDK
    • Remove "Invalid entries found. Rectify and submit again" modal

      Following up on a post from a few years back, but can the Zoho team consider either removing the 'Invalid entries found. Rectify and submit again' modal that displays for empty mandatory fields OR allow an admin to change it? I've built a custom error
    • Cadence reports as front-end reports

      Hello everyone, We have built a cadence which is connected to the Leads module. There are 11 steps in total, 7 are automatic emails and 4 are tasks for the Lead owners. As admins, we have access to this (very nicely made) 'View Reports' tab where we can
    • Show elapsed time on the thank-you page?

      Is it possible to display the total time a user spent filling out a Zoho Form on the thank-you? I’d like to show the difference between the `form submission timestamp` and the `start time` (currently have a hidden Date-Time field set to autofill the date
    • I need to do crud with snippet html

      I need to implement a form with an improved user interface. I would like to use snippets to build a CRUD that allows me to create and update records. How could I achieve this using snippets?
    • Incorrect “correct” password on email client apple mail

      I have troubleshot this account several times. I have deleted and re added account. It keeps saying incorrect password. Can you check that it is not locked on your end?
    • Is it possible to lock editing subform rows?

      Ideally editing would only be locked after the form has been updated but I still want them to be able to add new subform records at any time and they should be able to delete rows from the subform. It is a named subform if that's relevant however the
    • What is the maximum file size of a video upload in Zoho chat?

      Can I upload a 20 mb video file and share it with my colleagues? 
    • Update a field in ALL all calls under a contact

      HI guys! I have written some deluge code to update a field in my calls after i have comepleted the call, i need this field to update in all my scheduled calls as well that are comeing up. I just cant seem to get it to work, i have put teh code below,
    • Verifying Zoho Mail Functionality After Switching DNS from Cloudflare to Hosting Provider

      I initially configured my domain's (https://roblaxmod.com/) email with Zoho Mail while using Cloudflare to manage my DNS records (MX, SPF, etc.). All services were working correctly. Recently, I have removed my site from Cloudflare and switched my domain's
    • Fat Download of Ulaa Browser

      I just observed that Ulaa Browser is offering an one-capsule big download. These days it is a custom to offer a small bootstrap downloader and based on user customization options an appropriate download completes. And this is particularly common with
    • Billing Management: #8 Usage Billing in Logistics & Delivery Services

      The logistics and delivery industry thrives on movement and precision. Every delivery completed, every kilometre driven, and every ton transported is a measurable activity. However, billing often lags behind. Many logistics companies still rely on fixed-rate
    • Tags for New Tickets

      Hi there, When creating a new ticket, there is currently no way to choose a tag you would like to associate with the new ticket. Being able to associate a tag while creating a new ticket will be very beneficial as it will save time and flow well with
    • Zoho Desk: No Incoming email

      Is Zoho Desk services down? No incoming email reflect to desk tickets.
    • Zoho CRM - Widgets | Update #3 : Introducing SDK V1.5 along with new ZDK Methods and ZRC Support

      Hello everyone! Widgets in Zoho CRM just got a big upgrade! With the release of SDK v1.5, developers can now create more immersive widget experiences. This update elevates Widget development with new ZDK methods for easier interactivity and ZRC support
    • Unusual activity detected, account blocked

      I am unable to send emails and am getting the error "Outgoing blocked: Unusual activity detected. To unblock your account, please and submit a request. Learn more.". I am unsure as to why this is happening since all my activity is legitimate, mainly confirmation
    • Unable to Send Emails – Outgoing Mail Blocked (Error 554 5.1.8)

      Description: Hello Zoho Support Team, I am facing an issue with my Zoho Mail account ( admin@osamarahmani.tech ). Whenever I try to send an email, I get the following error: 554 5.1.8 Email Outgoing Blocked I would like to clarify that I have not done
    • Issue connecting Zoho Mail to Thunderbird (IMAP/SMTP authentication error)

      Dear Zoho Support, I am trying to configure my Zoho Mail account on Thunderbird, but I keep getting authentication errors. Account: info@baktradingtn.com Domain: baktradingtn.com Settings used: IMAP: imap.zoho.com, Port 993, SSL/TLS, Normal Password SMTP:
    • Payment issue with Mail Lite plan – personal NIF not accepted as payment info

      Hello, I have already contacted Zoho Support by email regarding this, but since I haven’t received any reply yet, I’m sharing it here as well to see if the community can help. I’m facing a payment issue for my Mail Lite plan. I have a personal account
    • Customer payment alerts in Zoho Cliq

      For businesses that depend on cash flow, payment updates are essential for operational decision-making and go beyond simple accounting entries. The sales team needs to be notified when invoices are cleared so that upcoming orders can be released. In contrast,
    • Figma in Zoho Creator

      Hi Team, I’m creating a form using Figma and would like to know how to add workflows like scheduling, custom validation, and other logic to it. Can anyone help me understand how to set this up for a Figma-based Creator UI form?
    • Not receiving Gmail confirmation email to send emails as Zoho account from Gmail

      Hello! I'm having an issue with the "Send mail as" option on Gmail. I am not receiving the confirmation email on my Zoho Mail account. A few days ago, it worked, then it stopped, and now when I try to fix it, I simply don't receive the confirmation email
    • Restore lost Invoice!

      Some time ago I tried to Upgrade from Invoice to Books. I not upgraded and staid n Invoice. Now i tried again and first i deleted the old trial of books. But now all is gone, PLEASE HELP!! i have no backup and i have to have at least 7 years data retention by law. 
    • Zoho Desk Down

      Not loading
    • lookup and integrated forms

      I might be misunderstanding things but I wanted to integrate our zoho crm contacts into creator. I imagined that when I used the integration it would mirror into creator. It did brilliant. BUT We have a ticket form in creator that we want to use a lookup
    • Partially receive PO without partial Bill?

      Most of our inventory is pre-paid. Let's say we purchase 30 pieces of 3 different items for a total of 90 pieces. It is common for our supplier to send us the items as they are ready. So we will receive 30 pieces at a time. How can I partially receive
    • 2 users editing the same record - loose changes

      Hello, I'm very new to Zoho so apology if this has been addressed somewhere i can't find. I have noticed the following: If we have 2 users put an inventory item in edit mode at the same time: say user1 click on edit and user2 while user1 is still in edit,
    • Next Page