Custom Variables

Custom variables are global variables that store information in your CRM. These allow you to replace certain key values - such as username or brand - in various elements of CRM, allowing customers to easily make system-wide changes and personalizations.

Custom variables can also be used to update important organization-specific integration data such as auth tokens, usernames, and passwords, enabling users to add or update their security information in a single step. The different types of organization variables provide ways to handle these data in the desired manner. For example, if account-specific values are in question which cannot be entered by the developer during the design process, then custom organization variables make it easy for the end user to enter this information themselves then populate it throughout the system automatically. This delivers a seamless integration experience and eliminates unnecessary system maintenance.

Create a custom variable

Characteristic detailValue
Property in CRMRead-Write
Will changes made to its value from the Developer Console affect existing users?No
Can its value be modified programmatically?Yes
 

To set up a custom variable:

  1. Log in to Zoho Developer Console and click Sigma and select a workspace.
  2. Select the extension to modify and click the Edit Extension [] icon.
  3. Click Custom Properties in the left pane, then click Create.
  4. Provide the following details:
    • A suitable Field Name.
    • An API Name.
    • A Value for the variable.
      This is not mandatory, but you will be prompted to fill in a value when the extension is installed.
  5. Click Save.

Note The system will append an appropriate prefix to make it unique. For example: If the Extension Name is Leads Score, Field Name is Authtoken, and API Name is Authtoken, when the variable is saved, the API name will be set as leadsscore__Authtoken.

The Variable VariableMap

The variableMap variable can be used only in the Field Value - On change action to obtain the old and new values of a custom variable from Zoho CRM. Click the Write Script in the Field Value-On Change option to write the script.

The syntax for getting the old value of the custom variable is

<oldvalue> = input.variableMap.get("oldvalue");

The syntax for getting the new value of the custom variable is

<newvalue> = input.variableMap.get("newvalue");

The sample script to be written in the editor is

oldzwsid = input.variableMap.get("oldvalue");
newzwsid = input.variableMap.get("newvalue");

Example

Consider an extension that will integrate your Zoho CRM account with Zillow - an online real estate database company. This integration will help fetch details about properties in the lead's preference location and display in the 'Properties' module of the CRM automatically using a Zillow-specific ID called zws-id, whenever a new lead is added into the solution. This zwid must be provided as a custom variable to facilitate this integration. This custom variable can then be invoked using a custom function to help us extract the data from Zillow and display it as related list.

To integrate Zillow with Zoho CRM

  1. Create an extension named Zillow.
  2. Create a custom variable with the following parameter values:
    • Field Name is zws-id.
    • API Name is zws-id.
      The API Name will automatically be modified as zillow__zws-id.
    • Provide a Value in the space provided.
    • Click Save.
  3. Create a workflow to trigger a function whenever a new lead is created. The script for the function is given below.

Once the integration is authorized, the data will be pulled from Zillow and the records added to 'Properties' module. A related list of the properties will also be displayed in the Leads module.

//Replace the identifiers highlighted in bold with your extension-specific values
LeadId = lead.get("Leads.ID");
datamap = Map:String();
datamap.put("module","Leads");
datamap.put("id",LeadId);
resp = zoho.crm.invokeConnector("crm.get",datamap);
respMap = resp.get("response")._toMap();
users = respMap.get("data");
temp = users.subString(1,users.length() - 1);
usersVal = temp._toMap();
street = usersVal.get("Street");
city = usersVal.get("City");
state = usersVal.get("State");
street1 = street.replaceAll(" ","+",false);
street2 = city + "%2C+" + state;
zwsId = zoho.crm.getOrgVariable("zillow.zws-id");
detail = getUrl("http://www.zillow.com/webservice/GetSearchResults.htm?zws-id=" + zwsId + "&address=" + street1 + "&citystatezip=" + street2);
zpid = detail.executeXPath("/SearchResults:searchresults/response/results/result/zpid/text()");
ZillowPropertyId = zpid.toLong();
newDetail = getUrl("http://www.zillow.com/webservice/GetComps.htm?zws-id=" + zwsId + "&zpid=" + ZillowPropertyId + "&count=5");
newzpidsList = newDetail.executeXPath("/Comps:comps/response/properties/comparables/comp/zpid/text()").toList("-|-");
for each newzpids in newzpidsList
{
     detail = getUrl("http://www.zillow.com/webservice/GetUpdatedPropertyDetails.htm?zws-id=" + zwsId + "&zpid=" + newzpids);
     zpid1 = detail.executeXPath("/UpdatedPropertyDetails:updatedPropertyDetails/response/editedFacts/useCode/text()");
     zpid2 = detail.executeXPath("/UpdatedPropertyDetails:updatedPropertyDetails/response/editedFacts/bedrooms/text()");
     zpid3 = detail.executeXPath("/UpdatedPropertyDetails:updatedPropertyDetails/response/editedFacts/bathrooms/text()");
     zpid4 = detail.executeXPath("/UpdatedPropertyDetails:updatedPropertyDetails/response/editedFacts/finishedSqFt/text()");
     zpid6 = detail.executeXPath("/UpdatedPropertyDetails:updatedPropertyDetails/response/editedFacts/yearBuilt/text()");
     zpid12 = detail.executeXPath("/UpdatedPropertyDetails:updatedPropertyDetails/response/editedFacts/parkingType/text()");
     zpid13 = detail.executeXPath("/UpdatedPropertyDetails:updatedPropertyDetails/response/editedFacts/heatingSources/text()");
     createMap = Map:String();
     //Ensure that the "Properties" module has the fields mentioned as keys in the map.
     createMap.put("No_of_Bathrooms",zpid3);
     createMap.put("No_of_Bedrooms",zpid2);
     createMap.put("CustomModule1_Name","Zillow Property Id " + newzpids);
     createMap.put("Built_up_Area",zpid4);
     createMap.put("Heating_Sources",zpid13);
     createMap.put("Parking_Type",zpid12);
     createMap.put("Year_Built",zpid6);
     createMap.put("zillow__Lead",LeadId);
     l = List();
     l.add(createMap);
     dataMapzz = Map:String();
     dataMapzz.put("module","zillow__Properties");
     dataMapzz.put("data",l);
     response = zoho.crm.invokeConnector("crm.create",dataMapzz);
     info response;
}

The value of the custom variable can be modified from the Extension Details page of the CRM.

Create a Read-only custom variable

Characteristic detailValue
Property in CRMRead-Only
Will changes made to its value from the Developer Console affect existing users?No
Can its value be modified programmatically?Yes
 

To set up a custom variable:

  1. Log in to Zoho Developer Console and click Sigma and select a workspace.
  2. Select the extension to modify and click the Edit Extension [] icon.
  3. Click Custom Properties in the left pane, then click Create.
  4. Provide the following details:
    • A suitable Field Name.
    • An API Name.
    • A Value for the variable.
    • Select ReadOnly from the drop-down.
  5. Click Save.

Note The system will append an appropriate prefix to make it unique. For example: If the Extension Name is Leads Score, Field Name is Authtoken, and API Name is Authtoken, when the variable is saved, the API name will be set as leadsscore__Authtoken.

The value of the custom variable can be viewed from the Extension Details page of the CRM.

Create a Hidden custom variable

Characteristic detailValue
Property in CRMHidden
Will changes made to its value from the Developer Console affect existing users?No
Can its value be modified programmatically?Yes
 

To set up a custom variable:

  1. Log in to Zoho Developer Console and click Sigma and select a workspace.
  2. Select the extension to modify and click the Edit Extension [] icon.
  3. Click Custom Properties in the left pane, then click Create.
  4. Provide the following details:
    • A suitable Field Name.
    • An API Name.
    • A Value for the variable.
    • Select Hidden from the drop-down.
  5. Click Save.

Note The system will append an appropriate prefix to make it unique. For example: If the Extension Name is Leads Score, Field Name is Authtoken, and API Name is Authtoken, when the variable is saved, the API name will be set as leadsscore__Authtoken.

Example

Use a hidden custom variable 'authtoken' to set an organization-specific value during extension installation.

val = installParamMap.get("organizationId");
valueMap = Map();
valueMap.put("apiname","leadsscore__Authtoken");
valueMap.put("value",val);
resp = zoho.crm.invokeConnector("crm.set",valueMap);
info resp;