Clearbit.js code snippet
var comp;
var json;
var jsonObj;
var orgVal;
function initializeWidget()
{
// PageLoad listener that returns the entity details of the active page
ZOHO.embeddedApp.on("PageLoad",function(data)
{
console.log("inside function");
id = data.EntityId;
console.log("id===="+id);
entity = data.Entity;
// Get the record details of the entity using the value returned by pageload listener
ZOHO.CRM.API.getRecord({
Entity: entity,
RecordID: id
}).then(function(data) {
// Fetch the company detail from the response obtained through getRecord API
var recorddata= data.data[0];
comp=recorddata.Company;
// Get the API Key detailsfrom the custom variable
ZOHO.CRM.API.getOrgVariable("clearbitextension__API_Key").then(function(data){
org=data.Success;
//Store the API key value to a variable based on the format required by Clearbit API
orgVal="Bearer "+org.Content;
})
setTimeout(function(){
// Construct the params as required by Clearbit API
var request ={
headers:{
Authorization : orgVal,
}
}
// Invoke HTTP get to receive the response of the initiated request i.e the Clearbit API call
ZOHO.CRM.HTTP.get(request).then(function(data) {
jsonObj = JSON.parse(data);
console.log(jsonObj);
respPrint(jsonObj);
})
},500)
})
})
// Extract the required information from Clearbit API response and format the data in UI
function respPrint(jsonObj){
jsonObj.tags.map(function(value,index){
var sub_list = document.createElement('div');
sub_list.classList.add('sub-list');
sub_list.innerText = value;
document.getElementById('list_tags').appendChild(sub_list);
});
jsonObj.techCategories.map(function(value,index){
var sub_list = document.createElement('div');
sub_list.classList.add('sub-list');
sub_list.innerText = value;
document.getElementById('list_technologies').appendChild(sub_list);
});
}
ZOHO.embeddedApp.init();
}
|
Multiple Zoho CRM APIs are a part of the above-mentioned Clearbit Javascript code snippet. Collectively, these APIs help to implement the business logic of retrieving the company details of the selected lead. Let's take a look at these APIs.
ZOHO.embeddedApp.on("PageLoad",function(data)) - An event listener that is triggered whenever an entity Page (Details Page) is loaded.
ZOHO.CRM.API.getRecord(config) - API that gets all details of a record when providing the entity and record ID information.
ZOHO.CRM.API.getOrgVariable()- API that returns the data with respect to the custom variable passed to it.
ZOHO.CRM.HTTP.get(request) - The API invokes HTTP GET and returns a response based on the request object passed to it as a parameter. The request object is constructed as a combination of request params and request headers of the respective API.
- In our example, PageLoad listener is used to fetch the entity and ID of the record in an active page. Upon passing the retrieved entity and ID to the getRecordAPI, the complete record information is gathered, from which we fetch the company name of the selected lead.
- The retrieved company's name is passed to the URL call as the domain, along with the headers required by Clearbit API. This is bundled together and constructed as the request parameter for the HTTP GET API.
- The HTTP GET API is invoked, and it returns the response (enriched company details) based on the request parameter.
- Finally, the required data is extracted from the response and displayed in the widget UI, as per your requirement.
After adding all the necessary files, validate and pack the project.
Associate the widget with a connected app and host it
After successfully building the widget, we can now associate it with a connected app in the extension.
1. Choose Connected Apps from the left panel of the Zoho Developer console, under Utilities.
2. Provide the necessary details for the Connected App. Upload the ClearbitProject.zip file from the dist folder and click Save.
Embed the widget as a related list in Zoho CRM
Now that the widget is associated with a connected app, let's embed it inside Zoho CRM. In our example, we'll embed the widget as a related list called Company Enriched Data in the Leadsmodule.
1. Choose Components from the left panel of the Zoho Developer console, under Build.
2. Choose the Related Details tab and select Add Widgets.
3. Provide the necessary details, choose the "Leads" module, and click Save.
4. Test the widget's functionality locally in an isolated sandbox environment using Test your Extension option.
Note: It's important to keep the localhost running in ZET CLI using the zet run command.
In the sandbox environment:
1. Click the Leads module and choose a lead. Here, we have chosen the lead "TestCustomer New" belonging to the company "Microsoft".
2. Select the related list Company Enriched Data that includes our ClearbitProject widget.
The resulting data of the ClearbitProject widget, namely the services, tags, and technologies offered by Microsoft, to which our lead "TestCustomer New" belongs, will be populated and displayed .
Note: As part of the development process of the extension, we have set the value of the custom variable "API Key" with the API secret key obtained. After development, when planning to publish and share the extension either publicly or privately, it's important to make sure that the value is set empty to ensure that users provide their own secret API key while installing the extension.Refer here to learn more about handling custom variables.
With these steps, custom variables can be incorporated into widgets to perform third-party integrations. You can alter and enhance the widget's functionality as per your requirement. Keep following this space for more info!
SEE ALSO