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

    • Mass Update Application Status

      How to update application statuses of Multiple Applications at once? Is that possible? If not then why please consider adding it It can save hours of manual work Thats the only Option I see
    • Free webinar: Streamlining customer service paperwork with the Zoho Sign extension for Zoho Desk

      Hi there! Wondering how to bridge the gap between digitized customer service and business paperwork? Attend our free webinar to learn how you can do this by connecting Zoho Sign, our digital signature app, with Zoho Desk, our online customer service help
    • Mail Search Not Working

      Hello, Mail search is not working at all. I've tried Chrome and Mozilla. I can try and search for an exact term, or even an email that is 1st in my email list. All search does is sit and spin, or it comes up with no results. I've also tried it on my android
    • Cannot Send Email to a Gmail Account

      Hello, I have a zoho-hosted email account, alex@chirochannelnetwork.com that has trouble sending to gmail accounts.  But not all gmail accounts, only some of them. I've tried to figure this out with clients, and they don't appear to be going into their
    • Unblock ME

      info@pentekykloi.gr Unable to send message;Reason:554 5.1.8 Email Outgoing Blocked. Learn more. I purchase additional storage
    • Cannot Print Landscape with Zoho Sheet

      I am noticing that when using the Zoho Sheet desktop for Mac, that even when selecting landscape as the print option, once you choose "Print", a second system dialog opens that automatically makes the view portrait again, and does not allow printing in
    • Power of Automation : Enhancing custom date field calculations by excluding Weekends and Holidays

      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:
    • portal.assignUserInProfile - Não esta adicionando

      Estou encontrando problema com este comando portal.assignUserInProfile Não esta incluindo o usuário no portal Alguém pode me dizer o que pode ser thisapp.portal.assignUserInProfile("teste@gmail.com","Customer");
    • CRM emails vs Campaigns

      Please help me understand this. I am having a difficult understanding of "Campaigns" sent through CRM (real emails) or Zoho One (blast "potentially junk" emails) This is what I currently think emails sent via CRM are "real" emails sent through linked real personal email accounts and therefore are more likely to get delivered.  We use this for critical updates for our "Approved " accounts and certain other preferred statuses emails via Campaigns are sent through the Zoho server (like MailChimp, Campaign
    • Reverse proxy

      We have a web application in the creator platform. When I launch a particular DNS, I would like that DNS to redirect to the web page of the application in creator app. Has anyone achieved it and if yes, please share how to do it.
    • Still client need to download .exe?

      Hello, the client for use zoho assist need everytime download .exe file and launch it?
    • Splitting a ticket's entire thread

      Hi, When you split a ticket it only splits the individual reply that you clicked "Split as new ticket" on. Is it not possible to split the entire ticket thread from that point into the new ticket (every reply from the split point forward)? Or is there
    • Editing the text on the Help Center home page

      Is it possible to edit the "Welcome to Help Center" message anywhere? This one: We'd like to be able to tailor it a little more ourselves.
    • WHMCS for Zoho Flow

      Can we use WHMCS for Zoho flow?
    • Online meetings through Calendar Booking form with options

      This is great to see and particularly for those users who don't have Zoho BOOKINGS. The shame of it all though is that it could have been better. Why do we have to set up separate booking forms for each type of meeting and for each online conferencing
    • Agents permission per department

      Hi Team, can I setup permission for each agent what they can do in each department, for example I want account department agents to only have view access to support department tickets and not allowed to assign or reply to clients. I am sure this would
    • CRM notes

      I want to be able to add notes to a task that do not necessarily get rolled up into an account or contact.   For example, I tasks to work on a Court Order for John Doe divorce account.  There might be lots of updates (in the form of notes) that employees
    • Alternative / optional Position

      How do you create an alternative position or an optional position (article) in offers?
    • جمود في الصفحة عند حفظ عمل

      عندما اقوم باضافة ايقونة الى صفحة النموذج تجمد الصفحة ولا تعمل وتصبح مثل المظلة احدث الصفحة لا تعمل انتظر قليلا لا تعمل اقوم بنسخ رابط الصفحة والصقه في الرابط فيعمل
    • ZOHO Books Canadian payroll Integration

      Hello, I know ZOHO books doesn't have Canadian payroll and I dont believe its coming anytime soon. My question is there a Canadian payroll software that could be integrated with Zoho Books? Thank you HD
    • Zoho Desk Time Tracking and the Salary Privacy Issue

      Hello colleagues, Just wondering if anyone did hit the same wall? In the Desk, when the agent-specific hourly rates are enabled (Zoho Desk → Setup → Time Tracking → Billing Preferences), these Time Entries are being displayed in the Ticket History tab.
    • How to Delete, Disable, or Remove Streams from the Mail App?

      Is there a way to remove Streams from the mail app sidebar? I get too many notifications, it doesn't add any value to Zoho's functionality (especially since you can just make comments inside an email), and is distracting. I do not want notifications/alerts
    • Delay in MX updates

      Hi, I set MX Records 12 hours ago, and I am receiving email normally, but I still get notification MX record is not pointing correctly. Error: The MX records of your domain is not yet pointed to Zoho Mail. Why there is a delay in detecting MX records,
    • make.com integration

      Just wondering if anyone on Zoho One account connecting apps to Make.com We're on Canadian server (.com) and when connecting to Make.com, it keeps having error of Invalid Client ID. I have contacted both Zoho and Make and both sides said it's not an error
    • Article Numbers for KB articles

      Hello, I was wondering if it's possible to turn on article numbers/ part numbering for KB articles. If this is not already a feature, we'd like to request it. Frequently a solution will require multiple articles so tracking which articles are referenced
    • Refund Request ,Zoho Mail Subscription (zoho suport is not replying)

      Hi Zoho Team, I recently subscribed to the Zoho Mail yearly plan, but after evaluating it, I found that the interface does not suit my workflow. I’ve already canceled the subscription from my end. As I’m well within your 30-day refund window, I’m requesting
    • File Encryption - Zoho Desk iOS app update

      Hello, Everyone! We have now introduced the 'File Encryption' option within the Zoho Desk app as part of the HIPAA Compliance. This option allows the user to encrypt the attachments within the Desk mobile app, which acts as an additional layer of security.
    • Data encryption - Zoho Desk iOS

      Hello, Everyone! In the recent iOS version(v2.8.23) of the Zoho Desk app, we have supported data encryption. As a part of HIPAA Compliance, the Zoho Desk mobile app now allow users to encrypt the Desk mobile database as an additional layer of security.
    • Notify Admin when a user forgets to check-in or check-out at the designated time.

      Hello, I would like notify the Admin via email when a user forgets to check-in or check-out at the designated time. What is the best way to setup this email notification?
    • Assistance Needed with Prospect Conversion Issue

      Hi, I attempted to convert a prospect to an account, but received a pop-up notification indicating that the contact information matches an existing contact. I selected the option to add it to the existing contact, but it appears the prospect was not successfully
    • Mail Merge - unable to send more than 50 email

      Hi, I've subscribed to the pay email service because of the Mail Merge feature. However, I've found that this feature only allow to send up to 50 emails. I've to attach a screenshot for your reference. This limitation is not mentioned anywhere in service.
    • Zoholics Europe 2025: Your Ultimate Data Analysis (Zoho Analytics) Workshop Experience

      Why should you attend? This year, Zoholics Europe 2025 is putting data analysis centre stage. With a dedicated workshop designed to answer all your data-related questions, you’ll gain practical skills, real-time solutions, and expert insights that you
    • UK payroll entries

      Hey guys, Nett payroll payments are imported direct into the bank, using an external payroll system (will be glad for Zoho to have a UK payroll app) At present I have monthly recurring bills for HMRC which are auto entered & paid when due. This seems
    • Reverse Charge Services (Non-EU) Showing Correctly in 84/85 and 67, But Missing in Box 46 - Germany

      Hi, I'm located in Germany and I’ve set up my expenses for non-EU services (e.g., OpenAI, DeepSeek) under the reverse charge mechanism (§ 13b UStG) in Zoho Books, and I noticed some discrepancies in the VAT Summary Report. What’s Correct: Reverse Charge
    • Zoho Live Chat/Support

      What is going on with Zoho support lately? I've tried to use the live chat feature 4 different times and it refuses to connect to any (despite waiting over 30 minutes one of the tries). I finally gave up and emailed my question nearly a week ago and still
    • Can we have a module to records Certificate No and TDS rates for Lower TDS Certificates by the vendors ?

      Can we have a module to records Certificate No and TDS rates for Lower TDS Certificates by the vendors ?
    • Tip #38- Track Organizational Changes: A Guide to Using Action Log Viewer- 'Insider Insights'

      Hello Zoho Assist Community! Ever needed to trace who did what and when within your remote support operations? Let’s say your support team is growing, and you want to monitor key activities like settings updates, user invites, module changes, or permission
    • Answer Bot - Issues with language recognization

      When a user enters the phrase "gift vouchers" into the chatbot as their first message, the bot responds in French, even though: The default bot language is set to English The user's browser language settings are set to English All translate settings in
    • Tip of the Week #67– Avoid confusion – Mark duplicate threads.

      When customers send the same message to multiple email addresses, such as support@ and sales@, your team may end up seeing the same message in different inboxes. This creates confusion, risks double replies, and clutters your workspace. Use the Mark as
    • 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
    • Next Page