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!

    • Recent Topics

    • Invoices not arriving and mail server settings

      I am having an issue where some clients are not receiving invoices. I have configured Zoho Books to send on my behalf and configured the appropriate SPF, DKIM and DMARC settings on my mail server and tested these as working. I get the CC'd copies so I
    • Multi Line Text Character Limit

      I want to export my Help Center articles but I realized that the text in the Answer column is being cut off. I'm guessing there is a character limit for multi line text fields. How can I get around this?
    • Emails bouncing to Hotmail / Outlook.com

      Today I have seen multiple emails bouncing all to Hotmail and outlook.com mailboxes, all other emails are being delivered. Is it just me or is this a widespread issue with Zoho Books ? Bounce Reason : uncategorized-bounce
    • Be careful if you want to purchase zoho one

      Hi, just to add one more complain to the other similar complains. When I purchased zoho one, Divith, my account manager told me (by email) that I would be able to keep different emails that I have inside the company (contact, privacy, etc.). During the
    • Schedule Timeout 5 minutes vs. stated 15 minutes

      I am running into a function run timeout error after 5 minutes for my schedules. The Functions - Limits documents states it should be 15 minutes: Functions - Limits | Online Help - Zoho CRM. What should it actually be? Due to the 5 minute timeout, I'm
    • Importing invoices in bulk using the xls file template - still posting as draft - Is there a way to skip "mark as sent" and post it directly?

      Hello everyone, as the title say, is there a way that when I upload from the template file, it will post automatically? I tried changing the "Invoice Status" from draft to approved but it is still appearing as draft and is making me go to invoices so
    • How to set Sales Order Payment Terms when creating a Sales Order via the Zoho Books API

      I am creating Sales Orders via the Zoho Books API. I would like to set the Payment Terms to a particular value from the list of allowed values. Is that possible? I was able to get the list of payment terms via this API call: https://books.zoho.com/api/v3/settings/paymentterms?organization_id=XXXX"
    • Function and workflow to create customer payment and send receipt

       I am attempting to set up a workflow/custom function for the automatic creation of a customer payment and sending the email receipt, but am receiving the error "Improper Statement Error might be due to missing ';' at end of the line or incomplete expression" I've been over everything several times and cannot see where the error is (code is copied into the attached document).  I haven't used custom functions before with Deluge, so it's very likely something very simple, or I've completely mucked
    • How to rename the Submit Button by using deluge script

      Hi everyone, As we know, the Submit button can be renamed in the form builder setting. But I have scenario where I need the Submit Button to be renamed differently according to condition. Anyone knows how to do it? Thank You
    • Banking: Transfer from another account without base currency

      Scenario: A banking line item shall be categorised as an "internal transfer" from another bank account. This is a USD to EUR transfer. Our base currency is CHF. What we tried: Category: "Transfer from another account" From: Our USD account To: Our EUR
    • Item cost price - How to accomodate changing cost prices

      I am in urgent need of assistance with how to accommodate changing cost prices for items, not manually. We import items so their landed cost is always changing. This cost is NOT reflected however in the item cost price. This is going to cause us some
    • Marketer's Space: Targeted messaging : Leveraging Zoho Campaigns for Effective Communication

      Hello Marketers, Welcome back to Marketers’ Space! Targeted messaging ensures your communication reaches the right audience - boosting engagement, conversions, and overall campaign success. In this post, we’ll be looking at targeted messaging to create
    • :between: conditions in search?criteria

      Hello, please help solve problem I try to select deals by Creater_Time between dates i send this GET request /crm/v4/deals/search?criteria=(Created_Time:between:(2024-02-01T18:52:56,24-02-17T18:52:56)) encoded to /crm/v4/deals/search?criteria=%28Created_Time%3Abetween%3A%282024-02-01T18%3A52%3A56%2C24-02-17T18%3A52%3A56%29%29
    • Zoho Creator : Updating Records via Import. Can't use Autonumber or ZohoRecordID ?

      Hi, I am trying to use the function to update a report with an import. I'm running in to the error : "unable to update because the form has no column with unique values" In the release notes it says Only field with unique values can be used to compare
    • 💡 Feature Request: Custom App Bundle Plan (Pick Only the Apps You Need)

      Request: Allow Users to Build a Custom App Bundle (Choose Only the Apps They Need) Hi Zoho Team, I appreciate the value that Zoho One and the Plus Bundles (CRM Plus, Finance Plus, etc.) offer. However, I’m finding it difficult to get the best fit for
    • Search Feature Now Broken

      I have many hundreds of notes on Zoho Notebook but now when I search for a keyword, I only get 30 results maximum. This is unacceptable and yet another feature that has become broken on this quickly deteriorating software. Please fix immediately.
    • Restrict Zoho One Account Notifications to Admins

      Hi Zoho One Team, I hope you're doing well. We recently noticed that end users are receiving administrative pop-ups in Zoho One, such as the DKIM configuration notice (screenshot attached). This type of notification is only relevant to administrators
    • Automated Checkout

      Hi Team, I’m trying to create an automated checkout function in Zoho People. My requirement is that if an employee forgets to check out, the system should automatically check them out after 10 hours. However, I'm encountering an error while updating the
    • Zoho CRM Community Digest - June 2025 | Part 1

      **We offer both video and written formats, take your pick and jump in.** CRM FOMO is real. You could be doing everything right and still miss the beat. That’s where we come in. Zoho CRM Community Digest! Every two weeks, we bring you the insider scoop
    • Introducing Video Tutorials for the Zoho FSM Mobile App

      We’re excited to announce the launch of our brand-new video tutorials for the Zoho FSM Mobile App—designed painstakingly to help your field agents get up to speed in no time! Whether you're brand new to the Zoho FSM mobile app or just need a quick refresher,
    • Zoho People > Managed People > User Access Control

      Hello All I need your recommendation on how should i go about setting the User Access Control in my Zoho People
    • What happened to the tabs in the ribbon on the top in my CRM?

      Hi, This morning all of the tabs (modules) in the ribbon on top are no longer showing up. I had the modules in the ribbon in a specific order for easy, one-click access. Now it's only showing the active tab and the rest are hiding under the three dots
    • Connect to Australian bank

      How do I connect to an Australian bank. No Australian bank shows up in my list. I think its because the service provider is Token and not Yodlee. How do I change this?
    • Searching for content within courses

      Hello, I have been testing out Zoho One for my company have been exploring Learn. I've noticed that you cannot search for content within a course. You can only locate the title of the course. Example: Course: How to Make Your Bed Chapter: Pillows Lesson:
    • Citations Problem

      I'm having an odd problem with the "Add Citations" feature of Zoho Writer. When I add a citation using the "Fetch website details online" feature it works the first time I use it but if I try it a second time by clicking that link nothing at all happens
    • Zoho People Leave Balance Show as Negative

      Hi All I have the Portugal material Leave that policy allows up to 120 days or 150days for employee to apply within 365 days and employees is able to take minimum of 1 days or up to 120 days In my Leave Grant I have set as the setting.
    • Zoho People > Performance > Appraisal > Mismatch between the template-configured module and the currently enabled module.

      Hello There When we enable the performance module there a prompt Mismatch between the template-configured module and the currently enabled module. How do we resolve this
    • Introducing WhatsApp integration in Bigin

      Greetings! In today's business landscape, messaging apps play a significant role in customer operations. Customers can engage with businesses, seek support, ask questions, receive personalized recommendations, read reviews, and even make purchases—all
    • Zoho People Leave Application Module Error: Leave balance has exceeded as on 09-07-2025.

      Dear All I need to check how do i resolve the issue of Error: Leave balance has exceeded as on 09-07-2025. All my leave have this issue
    • Power of Automation:: Daily Time log summary broadcast to Zoho Cliq using Schedule Custom Functions

      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:
    • When Calls Ends, Creating Note with the call description by deluge code

      Hi, i need help with writing deluge code function, to scenario is like this - i want to create a workflow thats after 10 that the call ends the deluge function will create a new note in module calls that link the note in module calls to the his lead ticket
    • Default Memo from Custom Field (from Bill) when Paying with Check

      Hi, we are using "Pay via Check" option to pay for our Bills in Zoho Books. I would like the memo on the check to pull directly from one of the custom field values within the Bill. Is there any way I can do this? The memo that I need is already on the
    • Wouldn't it be great to have an option to schedule sending emails in Zoho mail? Schedule send feature request

      The subject says it all - but just to clarify: This is to request a new feature that would allow users to schedule the delivery of an email for a given date & time. In small companies it is quite common to work unsocial hours on customer emails. But some
    • Static vs Standard Subforms - New Feature; But how does it work?

      I've just noticed that we now have the option of static or standard subforms, but I can't find any posts on the new feature. So, how does the new subform type work?
    • 【Zoho CRM】翻訳機能のアップデート

      ユーザーの皆さま、こんにちは。コミュニティチームの藤澤です。 今回は「Zoho CRM アップデート情報」の中から、翻訳機能のアップデートをご紹介します。 翻訳機能が拡張され、Webタブ、レイアウト、セクション、ウィザード、ウィザード画面、セグメントも翻訳できるようになりました。 翻訳をエクスポートする際に、これらの要素に対応する用語もエクスポート先の言語で追加されます。 ※過去の関連記事はこちらから まず、翻訳の設定画面から「エクスポート」を選択してください。すると、TXT形式のファイルがローカル環境に出力されます。
    • Trying to make zoho invoice have a button

      Hello I am getting this error with the code below. Anyone know how to fix? Check and update the code in line 5 as there is a Exception : Variable 'invoice_id' is not defined // Define Organization ID (Replace with your actual Zoho Invoice organization
    • Duplicate Contacts - how to get merge or delete

      I have noticed that our list of contacts in Zoho Desk duplicates contacts periodically. I have yet to identify when or why. How do I merge or delete them? I see there is a "Deduplicate" but I am unable to find anything that explains this feature.
    • Another nightmare experience with a "Zoho Partner": Cloud Z Technologies

      I found "CloudZTech" on fiverr and I hired them to do a simple $300-$500 task. They did not deliver on time and I was forced to fire them. You guys must watch out for these fake ZOHO PARTNERS, 99% of them don't have the expertise necessary to help. I
    • Pickup and delivery

      Some of our products are pickup only and some delivery. Is there a way of doing this in commerce. Plus we give volume discount to all customers. We handle this in Books using pricelist and range pricing. Is there a way of doing this within commerce.
    • Unable to change the "credentials of login user" option when creating a connection

      I want to create a new Desk connection where the parameter to use 'credentials of login user' is set to YES. I'm able to create a new connection but am never given the option to change this parameter. Is this a restriction of my user profile, and if so,
    • Next Page