Zoho CRM
Zoho CRM is a customer relationship management platform used to manage leads, contacts, accounts, deals and the activities around them. With Weld you can sync your Zoho CRM records into your data warehouse and combine them with data from your other tools for pipeline, activity and revenue reporting.
Features
| Feature name | Supported | |
|---|---|---|
| Column Hashing | True | Column level |
| Blocking | True | Column level |
| Incremental | True | |
| Custom data | False | |
| History | False | |
| ReSync | True | Table level |
| Templates | False |
Data Schema
Setup Guide - ELT
Prerequisites
You need a Zoho CRM user with permission to read the modules you want to sync. Weld only requests read access — it never writes back to Zoho CRM.
Step 1 - Create the connection
- In the Weld app, navigate to Connections and click + New Connection.
- Search for Zoho CRM and select it.
- Enter the destination schema name of your choice. This name is used to identify the connection in future syncs.
- Click Connect — you are redirected to Zoho to sign in.
Step 2 - Authorize Weld in Zoho
- Sign in with the Zoho account that holds the CRM data you want to sync.
- Review the requested permissions and click Accept.
Weld requests the following read-only scopes:
| Scope | Used for |
|---|---|
ZohoCRM.modules.READ | Reading records from CRM modules |
ZohoCRM.settings.READ | Reading module and field metadata |
ZohoCRM.users.READ | Reading the user list |
ZohoCRM.org.READ | Reading organization details |
ZohoCRM.bulk.READ | Reading records in bulk |
Data centers
Zoho runs one data center per region, and your account lives in exactly one of them. You do not need to pick a region in Weld — start the authorization from the standard Zoho sign-in page and Zoho redirects you to your own data center automatically. Weld stores the data center your account resolved to and uses it for every later API call and token refresh.
The following data centers are supported:
| Region | Zoho accounts domain |
|---|---|
| United States | accounts.zoho.com |
| Europe | accounts.zoho.eu |
| India | accounts.zoho.in |
| Australia | accounts.zoho.com.au |
| Japan | accounts.zoho.jp |
| United Kingdom | accounts.zoho.uk |
| Saudi Arabia | accounts.zoho.sa |
| Canada | accounts.zohocloud.ca |
Accounts in the China data center (accounts.zoho.com.cn) are not supported, because that data center cannot be reached through the standard sign-in flow.
Step 3 - Data To Sync
Select the tables you wish to include in the sync. You can view the schema, remove columns or hash sensitive information.
The connector exposes the following streams:
| Stream | Zoho CRM module | Primary key | Incremental cursor |
|---|---|---|---|
account | Accounts | id | Modified_Time |
call | Calls | id | Modified_Time |
campaign | Campaigns | id | Modified_Time |
contact | Contacts | id | Modified_Time |
deal | Deals | id | Modified_Time |
event | Events | id | Modified_Time |
lead | Leads | id | Modified_Time |
note | Notes | id | Modified_Time |
price_book | Price Books | id | Modified_Time |
product | Products | id | Modified_Time |
task | Tasks | id | Modified_Time |
user | Users | id | Modified_Time |
Step 4 - Configure sync
- Select how often you would like the data to sync.
- Provide a unique destination table name.
Weld will take over from here and commence syncing data from your Zoho CRM account.
How syncing works
Incremental syncs
Every stream syncs incrementally on Modified_Time. The first run backfills all records in the module; each run after that asks Zoho only for records modified since the previous run started, so ongoing syncs stay small regardless of how large your CRM is.
Records are merged into the destination table on their id, so a record updated in Zoho is updated in place in your warehouse rather than duplicated.
Deleted records are not captured
Zoho's records API does not report deletions, so deleting a record in Zoho CRM leaves the corresponding row in your warehouse untouched — it simply stops receiving updates. If you need the destination to match Zoho exactly, run a ReSync of the affected table.
Field coverage
Each stream syncs a fixed set of fields from its Zoho module — the schema above shows exactly which ones. Custom modules and custom fields are not synced.
Zoho lookup fields are flattened into separate columns rather than kept as nested objects — a record's owner arrives as owner_id, owner_name and owner_email, for example. All field names are converted to snake_case in the destination.