# Zoho CRM setup for PopMCP

You paste the Client ID and Client secret of a Server-based Application you register in the Zoho API Console, then sign in with Zoho and pick the CRM organization to connect.

- Auth: OAuth authorization
- Setup time: 6 min
- API base URL: https://www.zohoapis.com/crm/v8
- Credentials screen: https://api-console.zoho.com/
- Provider docs: https://www.zoho.com/crm/developer/docs/api/v8/oauth-overview.html

## Before you begin

- A Zoho CRM organization on any edition. Free includes 5,000 API credits a day.
- A Zoho CRM profile that is allowed to use the API. If the connect stops with a permission error, an administrator can turn it on under Setup, Security Control, Profiles.
- Knowing which Zoho data center your account lives in: the domain you sign in at, such as zoho.com, zoho.eu, zoho.in or zoho.com.au.
- PopMCP's callback URL from the connect form: https://app.popmcp.com/api/providers/zoho-crm/callback

## Get your credentials

### 1. Open the API Console for your data center

Sign in at api-console.zoho.com as the Zoho user whose CRM access the AI should have. If your Zoho account lives in another data center, use that data center's console instead, for example api-console.zoho.eu, api-console.zoho.in or api-console.zoho.com.au. Click Get Started on your first visit, or Add Client if you already have clients.

Screen: https://api-console.zoho.com/

### 2. Choose Server-based Applications

Pick Server-based Applications and click Create Now. PopMCP signs you in through a redirect, so the other client types, Self Client included, cannot complete the connection.

Screen: https://api-console.zoho.com/

### 3. Name the client and add PopMCP's redirect URI

Enter a Client Name such as `PopMCP` and any Homepage URL, for example `https://app.popmcp.com`. Paste `https://app.popmcp.com/api/providers/zoho-crm/callback` into Authorized Redirect URI, then click Create.

Screen: https://api-console.zoho.com/

### 4. Copy the Client ID and Client Secret

Open the Client Secret tab and copy Client ID (it starts with `1000.`) and Client Secret. You only need the Settings tab if people in other data centers will sign in through this client: there you can turn on Multi-DC and tick their data centers.

Screen: https://api-console.zoho.com/

### 5. Paste both values into PopMCP and sign in with Zoho

In PopMCP, paste the values into Client ID and Client secret. Only if you created the client outside zoho.com, open More options and type that data center into Zoho data center, for example `EU`, `IN` or `AU`. Click Sign in with Zoho, choose the CRM organization if Zoho asks, and accept the permissions.

## Fields PopMCP asks for

- Auth type (connectionType): Create it at api-console.zoho.com → Add Client → "Server-based Applications". The sign-in itself happens on Zoho.
- Client ID (clientId) [required]: The "Client ID" on your app's Client Secret tab.
- Client secret (clientSecret) [required]: The "Client Secret" on the same tab. Stored encrypted and used only on the server.
- Zoho data center (dataCenter): Only when your own app was made outside zoho.com: the data center its console is in, e.g. EU (zoho.eu), IN, AU, JP, CA, SA, UK or CN. One of: US, EU, IN, AU, JP, CA, SA, UK, AE, SG, CN.

## Callback URL to register

https://app.popmcp.com/api/providers/zoho-crm/callback

## Scopes requested

- ZohoCRM.modules.READ
- ZohoCRM.modules.emails.READ
- ZohoCRM.settings.READ
- ZohoCRM.users.READ
- ZohoCRM.org.READ
- ZohoCRM.coql.READ
- ZohoCRM.bulk.READ
- ZohoCRM.bulk.backup.READ
- ZohoCRM.notifications.READ
- ZohoCRM.files.READ
- ZohoFiles.files.READ
- ZohoCRM.templates.email.READ
- ZohoCRM.templates.inventory.READ
- ZohoCRM.mass_update.READ
- ZohoCRM.mass_delete.READ
- ZohoCRM.mass_convert.leads.READ
- ZohoCRM.change_owner.READ
- ZohoCRM.apis.READ
- ZohoCRM.features.READ
- ZohoCRM.zia.enrichment.READ
- ZohoCRM.modules.ALL
- ZohoCRM.settings.ALL
- ZohoCRM.users.ALL
- ZohoCRM.org.ALL
- ZohoCRM.bulk.CREATE
- ZohoCRM.bulk.backup.ALL
- ZohoCRM.notifications.ALL
- ZohoCRM.send_mail.all.CREATE
- ZohoCRM.files.CREATE
- ZohoFiles.files.ALL
- ZohoCRM.mass_update.UPDATE
- ZohoCRM.mass_delete.DELETE
- ZohoCRM.mass_convert.leads.CREATE
- ZohoCRM.change_owner.CREATE
- ZohoCRM.composite_requests.CUSTOM
- ZohoCRM.zia.enrichment.CREATE
- ZohoCRM.zia.enrichment.UPDATE
- ZohoCRM.zia.enrichment.DELETE

## Verify

PopMCP shows Zoho CRM as Connected under your organization's company name, and zoho_crm_get_organization returns that org with its time zone and currency while zoho_crm_get_modules lists your modules' API names.

## Troubleshooting

### "Zoho did not accept the Client ID and Client secret for the United States data center"

Cause: The client was created in another data center's console, such as api-console.zoho.eu, while **Zoho data center** was left empty, or one of the values was mistyped.

Fix: Type that data center (EU, IN, AU, JP, CA, SA, UK, AE, SG or CN) into **Zoho data center** under **More options**, or turn on Multi-DC on the client's **Settings** tab. Recopy both values from the **Client Secret** tab.

### "Zoho rejected the redirect URI"

Cause: The client's **Authorized Redirect URI** does not exactly match PopMCP's callback.

Fix: Open the client in the API Console, correct **Authorized Redirect URI** on the **Client Details** tab to `https://app.popmcp.com/api/providers/zoho-crm/callback`, save, and connect again.

### "The Zoho sign-in expired before it could be completed"

Cause: Zoho's authorization codes last about two minutes, and the consent screen was left open too long.

Fix: Click **Sign in with Zoho** again and accept the consent screen without waiting.

### "Your Zoho CRM profile is not allowed to use the API"

Cause: Zoho answered NO_PERMISSION: the signed-in user's profile does not include API access.

Fix: Ask a Zoho CRM administrator to turn on Zoho CRM API Access for your profile under Setup, Security Control, Profiles, or connect as a user whose profile has it.

### "Zoho signed you in but did not grant access to your Zoho CRM organization"

Cause: Zoho answered OAUTH_SCOPE_MISMATCH: the permissions were not all accepted, or the Zoho account has no CRM organization.

Fix: Connect again and accept every permission on Zoho's consent screen. Make sure the Zoho user you sign in with belongs to a Zoho CRM organization.

### A working connection stops with "Zoho no longer accepts this connection's authorization"

Cause: The refresh token was revoked, the user's password changed, or more than 20 connections were made for the same Zoho user and client, which makes Zoho retire the oldest.

Fix: Disconnect and reconnect Zoho CRM. Avoid reconnecting the same user many times with one client.

### LIMIT_EXCEEDED or TOO_MANY_REQUESTS

Cause: The organization used up its rolling 24-hour API credits or hit its edition's concurrency limit. Record counts, bulk reads and email sends cost more credits than plain reads.

Fix: Wait and retry, split large jobs, and use a bulk read job instead of paging through thousands of records.

---

Source: https://www.docs.popmcp.com/docs/integrations/zoho-crm/