Zoho CRM
The Zoho CRM connector reads and writes leads, contacts, accounts, deals and other modules through the Zoho CRM API. Every connection names the data centre your Zoho org lives in.
When to use it
- You move leads, contacts, accounts and deals between Zoho and another CRM.
- You push new customers from a database into Zoho as accounts, or pull won deals into a warehouse for reporting.
- You read records, transform them, and write the results back with Update or Upsert.
What you need
- The data centre your Zoho org lives in.
- A Server-based Application in the Zoho API Console for that data centre, with its client ID and client secret.
Zoho CRM offers OAuth only.
Choose the data centre
Check the address you sign in at. A connection to the wrong data centre reaches a real Zoho address that does not hold your org, and a run returns no rows.
| Data Centre | Sign-in address | API address | API Console |
|---|---|---|---|
| United States | zoho.com | www.zohoapis.com | https://api-console.zoho.com |
| Europe | zoho.eu | www.zohoapis.eu | https://api-console.zoho.eu |
| India | zoho.in | www.zohoapis.in | https://api-console.zoho.in |
| Australia | zoho.com.au | www.zohoapis.com.au | https://api-console.zoho.com.au |
| Japan | zoho.jp | www.zohoapis.jp | https://api-console.zoho.jp |
| China | zoho.com.cn | www.zohoapis.com.cn | https://api-console.zoho.com.cn |
| Canada | zohocloud.ca | www.zohoapis.ca | https://api-console.zohocloud.ca |
During Connect, DataLug reads the data centre Zoho reports for your org and uses it. DataLug only uses the seven data centres above.
One app, one data centre
A Zoho OAuth client belongs to one data centre. Sent to another, the consent
page answers Invalid Client or Client ID passed does not exist. Zoho's
documentation states: "Each data center only holds the data of users who have
registered at that domain."
There are two ways to fix it:
- Register the app in the right data centre. Open the API Console for your org's data centre, from the table above, and create the app there.
- Enable Multi-DC on an existing app. In the Zoho API Console, open the app's Settings tab and turn on each data centre you need.
The Multi-DC list shows only the other data centres. The app's home data centre is already enabled and is not listed. Check the console address to see which one you are in.
Zoho issues a separate client secret for each enabled data centre, and the client ID stays the same. Copy the secret for the data centre on the connection, or tick Use the same OAuth credentials for all data centers in the API Console. Register the Redirect URI on the app in that data centre too.
Set up in Zoho
- Go to the API Console for your data centre and sign in with the Zoho account
that owns the CRM org.
api-console.zoho.comis the United States console. - Create a Server-based Application.
- In DataLug, add a Zoho CRM connection. Set Data Centre first, then copy the Redirect URI.
- Paste it into the app's Authorized Redirect URIs, including
https://. - Copy the app's Client ID and the Client Secret for that data centre into DataLug.
- Click Connect Zoho CRM and approve access. DataLug stores the refresh token.
- Click Test connection. The result names the data centre it reached.
Scopes
The Scopes field is pre-filled with:
ZohoCRM.modules.ALL,ZohoCRM.settings.modules.READ,ZohoCRM.settings.fields.READ
Zoho separates scopes with commas. DataLug converts spaces to commas when it
builds the consent request. The two settings scopes are read-only and are
what loads the field list.
Connect
The connection form lists its steps on the left. Open any step from that list. The Environments step holds the values that differ per environment.
Test connection is in the form footer. Beside it, Test against picks Base, the connection as saved, or an environment, whose values are applied first.
| Field | Step | What to enter |
|---|---|---|
| Auth Type | Authentication | OAuth. Zoho CRM offers OAuth only. |
| Client ID | Authentication | From the app in the Zoho API Console. |
| Client Secret | Authentication | The secret for the data centre on this connection. |
| Redirect URI | Authentication | Filled in. Copy it into the app's Authorized Redirect URIs. |
| Scopes | Authentication | Comma separated. |
| Refresh Token | Authentication | Filled in by Connect Zoho CRM. |
| Data Centre | Connection | The data centre your org lives in. Default United States (zoho.com). |
Stored secrets are never sent back to the browser. To change one, use Replace.
Supported operations
Objects. Lead, Contact, Account, Deal, Case, Task, Note and Product. The field list comes from Zoho, so custom fields appear beside standard ones.
| Action | Node | Operations |
|---|---|---|
| Query (Source) | Source node | Query, with an optional Limit |
| Load (Target) | Load node | Insert, Update, Upsert, Delete |
- Writes go one record per request.
- Upsert matches on the Match Field you choose under Operation Details. Pick one of Zoho's duplicate-check fields, or a custom field set to not allow duplicates.
Not supported: Batch write mode, a source filter, Campaigns, Quotes, Invoices, Price Books, custom modules.
Limits
Zoho meters API use against a credit allowance per org over a rolling 24-hour
window, which depends on the edition and the number of licences. Zoho also
limits concurrent calls. Zoho answers 429 Too Many Requests
when the allowance is used up. See Zoho's
API limits.
The API limits card has no default throttle for Zoho CRM. Page size is at most 200.
The API limits card on the connection form is collapsed by default. Every field on it is optional, and a blank field uses the default shown below it.
| Setting | What it does | Default |
|---|---|---|
| Requests per period, Period | Paces outgoing calls. Set both to throttle. | No throttle, or the rate shown on the card. |
| Page size | Rows per request. A larger value is reduced to the provider's maximum. | The maximum shown on the card, or set by the provider. |
| Max attempts | Tries per call, including the first. | 3 |
| Cool-off (ms) | The first wait after a 429. Later waits grow from it. | 500 ms |
| Requests at once | Requests open at the same time within one run. | No limit |
A Retry-After header from the provider overrides the cool-off. The pace
applies per connection and is shared by every run on it. See
Run performance.
DataLug retries a call that the provider refused with 429, and a call that
could not connect. A read is also retried after a 408, a 5xx or a dropped
connection. A write is retried only after a 429 or a failed connection.
A Retry-After delay of up to one minute is honoured. A longer one fails the
call with the 429.
Troubleshooting
| What you see | What it means | What to try |
|---|---|---|
| The test passes but a run returns no rows | The data centre does not match your org. | Set Data Centre to match the address you sign in at, then click Connect Zoho CRM again. |
Invalid Client or Client ID passed does not exist on the consent page | The app is not registered in, or enabled for, the data centre you selected. | See One app, one data centre. Register the app there, or enable it and use the secret Zoho issues. |
invalid_client at the exchange | The client secret belongs to a different data centre or app. | Copy the secret for the selected data centre, or tick Use the same OAuth credentials for all data centers. |
| You approve access but no refresh token arrives | The app was approved before. | Remove the app under Connected Apps in your Zoho account and connect again. |
Zoho CRM returned an API host this build will not use | Zoho named an address outside the seven data centres. | Check Data Centre matches the address you sign in at. For a data centre not listed, the account Owner emails DataLug support at support@datalug.io. |
INVALID_TOKEN or 401 | The refresh token was revoked, or the app was deleted in the API Console. | Click Connect Zoho CRM again. |
| The field list is empty | The app holds ZohoCRM.modules.ALL but not the two settings scopes. | Add them to Scopes and connect again. |
429 Too Many Requests | The org's daily credit allowance is used up. | The run backs off and retries. If it recurs daily, run the data pipeline less often or read less. |
| No match field offered for Upsert | Zoho reported no unique fields for that module. | Set a field to not allow duplicates in Zoho, or use Insert or Update. |
Related
- Source node and Load node.
- Connections for environments and sharing.
- HubSpot and Pipedrive.