Requirement Overview
The user wants to synchronize records between two Zoho CRM organizations, so that any record created or updated in Org A is automatically reflected in Org B. i.e., whenever a record is added or modified in Zoho CRM Org A, the same changes should be synced in Org B.
Use Case
A Company maintains multiple Zoho CRM Orgs due to regional operations, different business units, or external partner collaboration. In such cases, syncing data between these Orgs ensures consistency, collaboration, and visibility across teams.
- Example Business Use-Cases
Global + Regional Orgs
-> A company has a Global Zoho CRM Org for central reporting and multiple Regional Zoho CRM Orgs for local sales teams.
-> Leads captured in the Regional Org must sync to the Global Org for centralized tracking.
-> Global Org may push back updates like “Qualified Lead” or “Closed Won Deal” to Regional Orgs.
Parent Company + Subsidiary
-> Parent company manages corporate accounts and enterprise deals in one Org.
-> Subsidiary companies manage local sales in their own Orgs.
-> Sync ensures parent company has visibility into subsidiary sales progress.
Vendor–Partner Collaboration
-> A vendor uses one Zoho CRM Org, while resellers/partners use another Org.
-> Syncing allows partners to push deals/opportunities to the vendor Org for approvals, fulfillment, or invoicing.
-> Vendor Org may push product/pricing updates back to partners’ Orgs.
Current Challenges to achieve this directly
As of now, we do not have a direct option to setup an integration between two Zoho CRM accounts. Though, users can manually Export/Import. However, this requires continuous manual intervention. Whereas, the user is looking to sync records automatically without any manual work.
Solutions - Step-by-Step Implementation Guide
Users can use CRM APIs to create/update records in other CRM Org using Self-Client method. This helps you to setup the seamless integration between two CRM Organizations.
Learn how to communicate with Zoho CRM across data centres?
-> Here, there are two Zoho CRM accounts. One is in US DC, and another one is in IN DC. To communicate with US DC CRM, the user with Zoho CRM API Access permission in US DC should generate a Grant Token using the Self Client method.
-> Using a Grant Token, the user can generate Access and Refresh tokens. So, these tokens, Access and Refresh are the ones that are going to be useful for communicating with the US DC CRM account.
-> An Access Token is a key to communicate with the respective CRM account, and the Refresh Token is used to generate a new access token, as the Access Token will expire within an hour.
Permissions and Availability
1) The users profile should have Zoho CRM API Access enabled.
2) The users profile should have Manage Automation enabled.
- Prerequisites from Zoho CRM under US DC
1) Grant Token
2) Access Token
3) Refresh Token
Refer to the Overview and all the Steps related to OAuth Authentication in this Help Link, which will guide you in detail about how authentication works in Zoho which includes Grant, Access and Refresh Tokens. Configuration Setup
Step 1: Users from US DC CRM accounts with Zoho CRM API Access permission should navigate to Zoho Developer console to generate a Grant Token via the self-client method.
Step 2: Choose the Client Type as Self Client.
Step 3: Enter the required scope, time duration as 10 and scope description.
Step 4: Upon clicking Create, you will find Grant Token.
Step 5: Either you could use the other API execution console (i.e., Postman, Insomnia, etc.) to generate an Access and Refresh Token or you could use the code1 shared below to generate an Access and Refresh Token from CRM.
Generate an Access and Refresh Token within 10 minutes with the help of Grant Token, as Grant Token is valid only for 10 min maximum.
Sample Deluge Script - Code1:
- accesstokenmp = Map();
- accesstokenmp.put("grant_type", "authorization_code");
- accesstokenmp.put("client_id", "1000.CHZ74KIIK1LFMZJ7K6073ZSD9TQ8RT");
- accesstokenmp.put("client_secret", "616dcf2104dc5e6a5e5921b9ad828b20308be5547c");
- accesstokenmp.put("code", "1000.fa1d4da1df80805c1a9a0dffe3e76af3.3898323428c16839635fb42c082cd300");
- response = invokeUrl [
- url: "https://accounts.zoho.com/oauth/v2/token"
- type: POST
- parameters: accesstokenmp
- ];
Grant Token Video
Different ways to generate Access and Refresh Tokens
1) Developer Tools - eg., Postman, Insomnia
2) Zoho Deluge Invoke URL task
-> Generating Access Token via Developer Tool (i.e. Postman, Insomnia, etc)
-> Generating Access Token via Zoho Deluge Invoke URL Task
Steps to deploy the custom solution in Zoho CRM IN DC
Create a Workflow in CRM IN DC account by providing the required details.
Set a trigger on Record Creation, provide a condition (if any) and use the below code2 in the Instant Actions of the Workflow.
Sample Deluge Script - Code2:
- void automation.TBSolution()
- {
- refreshtoken = Map();
- refreshtoken.put("refresh_token", "1000.c10f1746037754011ed558e92f558f70.6a1c309c4c3715efca7************");
- refreshtoken.put("client_id", "1000.O466EKV1NQT0ZKHATWA***********");
- refreshtoken.put("client_secret", "1b74110de0dfc1156e00a3003037a2471*********");
- refreshtoken.put("grant_type", "refresh_token");
- //Refreshing the Access Token
- response = invokeUrl [
- url: "https://accounts.zoho.com/oauth/v2/token"
- type: POST
- parameters: refreshtoken
- ];
- accesstoken = response.get("access_token");
- mp = Map();
- datamp = Map();
- datalist = List();
- mp.put("Last_Name", name);
- datalist.add(mp);
- datamp.put("data", datalist);
- headersMap = Map();
- headersMap.put("Authorization","Zoho-oauthtoken " +accesstoken);
- //Creating a Leads record in US DC CRM account whenever a new Leads record created in IN DC
- response1 = invokeurl
- [
- url :"https://www.zohoapis.com/crm/v7/Leads"
- type :POST
- parameters:datamp.toString()
- headers:headersMap
- ];
- }
Working Demo - Screencast
Refer to below other possible methods - Solution Articles to sync data between two Zoho CRM accounts.
Custom Solution Created By Hemanth Kumar L M