Zoho Desk
Connect Zoho Desk to manage tickets, customer replies, contacts, accounts, agents, tasks, the knowledge base, and support reports.
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 Zoho Desk organization to connect.
- Setup time
- 6 min
- Auth
- OAuth authorization
- API base URL
- https://desk.zoho.com/api/v1
- Rate limits
- Per portal, per day, API credits by edition: Free 5,000; Express 25,000 plus 100 per user; Standard 50,000 plus 250 per user; Professional 75,000 plus 500 per user; Enterprise 100,000 plus 1,000 per user. At the same time: Free 5, Express and Standard 10, Professional 15, Enterprise 25. Zoho mints at most 10 access tokens per refresh token every 10 minutes.
Before you begin
- A Zoho Desk organization on any edition, the free one included.
- A Zoho Desk user whose profile can see what the AI should work with. An admin reaches everything.
- 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-desk/callback
Get your credentials
Open the API Console for your data center
Sign in at api-console.zoho.com as the Zoho user whose Zoho Desk 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.
Applications
Clients registered to call Zoho APIs with OAuth 2.0.
| Client name | Client type | Client ID |
|---|---|---|
| Reporting scriptCreated Mar 4, 2026 | Self Client | 1000.7Q2L****WK9T |
The console shows the clients of the data center you signed in to. A client made at api-console.zoho.eu does not appear at api-console.zoho.com.
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.
Choose a client type
The client type decides how users authorize your application.
| Client type | Use it for |
|---|---|
| Client-based Applications | Apps that run only in the browser |
| Server-based ApplicationsPick this one | Web apps with a server that redirect users to Zoho to authorize |
| Mobile-based Applications | Apps on phones and tablets |
| Non-browser Mobile Applications | Devices without a browser, such as smart TVs |
| Self Client | Back-end scripts with no redirect |
Server-based Applications is the only type that accepts PopMCP's redirect URL.
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-desk/callback into Authorized Redirect URI, then click Create.
Server-based Applications
Enter the client's details.
Zoho matches the redirect URI exactly, so paste it from the PopMCP connect form rather than typing it.
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.
PopMCP
Server-based Applications
- Client ID
- 1000.X8RT****MQ2Z
- Client Secret
- 4c1f****b07e
The Client ID stays the same in every data center; with Multi-DC on, Zoho can give each data center its own secret.
Paste both values into PopMCP, sign in and pick the organization
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 and accept the permissions. If you have several Zoho Desk organizations, Zoho asks you to choose one on its consent screen: choose the one you want here, because the sign-in only works for that one. PopMCP then lists the organization: pick it and the workspace it belongs in.
Connect in PopMCP
Open your workspace, choose Zoho Desk in the marketplace, and fill in the connect dialog:
| Field | What to enter |
|---|---|
| Client IDtext | The "Client ID" on your app's Client Secret tab. |
| Client secretsecret | The "Client Secret" on the same tab. Stored encrypted and used only on the server.Encrypted with AES-256-GCM on save and never shown again. |
| Zoho data centertext | Only when your app was made outside zoho.com: the data center its console is in, e.g. EU (zoho.eu), IN, AU, JP, CA, SA or CN. One of: US, EU, IN, AU, JP, CA, SA, UK, AE, SG, CN. |
https://app.popmcp.com/api/providers/zoho-desk/callbackAt api-console.zoho.com choose "Server-based Applications", set any homepage URL, and paste this exact URL as the Authorized Redirect URI.
PopMCP verifies the credential against Zoho Desk immediately. On success the connection flips to Verified and its MCP tools are provisioned.
Permissions PopMCP requests
These are the scopes sent to Zoho Desk at authorization time.
| Scope | Why PopMCP asks for it |
|---|---|
| Desk.InstantMessages.READ | Reads instant messaging channels, sessions and messages. |
| Desk.accounts.READ | Reads customer accounts. |
| Desk.activities.calls.READ | Reads calls. |
| Desk.activities.events.READ | Reads calendar events. |
| Desk.activities.tasks.READ | Reads tasks as activities. |
| Desk.agents.READ | Reads agents and their presence. |
| Desk.articles.READ | Reads knowledge base articles, categories and translations. |
| Desk.automations.READ | Reads automation rules, SLAs and business hours. |
| Desk.basic.READ | Reads the organization, agents, departments and other basic records. PopMCP checks your profile with it when you connect. |
| Desk.channels.email.READ | Reads support email addresses and mail settings. |
| Desk.channels.helpcenter.READ | Reads help centers, themes and portal users. |
| Desk.community.READ | Reads community categories, topics and comments. |
| Desk.contacts.READ | Reads contacts, their accounts and their history. |
| Desk.contracts.READ | Reads contracts. |
| Desk.custommodule.READ | Reads records in custom modules. |
| Desk.departments.READ | Reads departments. |
| Desk.events.READ | Reads webhook and event subscriptions. |
| Desk.featuresettings.READ | Reads feature settings. |
| Desk.fields.READ | Reads custom fields. |
| Desk.integrations.READ | Reads connected integrations. |
| Desk.layouts.READ | Reads ticket layouts and their rules. |
| Desk.modules.READ | Reads modules. |
| Desk.organization.READ | Reads organization settings. PopMCP lists your organizations with it when you connect. |
| Desk.permissions.READ | Reads profiles, roles and sharing rules. |
| Desk.privacysettings.READ | Reads privacy settings. |
| Desk.products.READ | Reads products. |
| Desk.sandbox.READ | Reads sandboxes. |
| Desk.search.READ | Reads search across modules. |
| Desk.settings.READ | Reads settings across the portal. |
| Desk.tasks.READ | Reads tasks. |
| Desk.teams.READ | Reads teams. |
| Desk.templates.READ | Reads email and ticket templates. |
| Desk.tickets.READ | Reads tickets, threads, comments, attachments, tags and time entries. |
| Desk.InstantMessages.CREATE | Creates instant messaging channels, sessions and messages. |
| Desk.InstantMessages.UPDATE | Changes instant messaging channels, sessions and messages. |
| Desk.accounts.CREATE | Creates customer accounts. |
| Desk.accounts.DELETE | Deletes customer accounts. |
| Desk.accounts.UPDATE | Changes customer accounts. |
| Desk.activities.calls.CREATE | Creates calls. |
| Desk.activities.calls.DELETE | Deletes calls. |
| Desk.activities.calls.UPDATE | Changes calls. |
| Desk.activities.events.CREATE | Creates calendar events. |
| Desk.activities.events.DELETE | Deletes calendar events. |
| Desk.activities.events.UPDATE | Changes calendar events. |
| Desk.activities.tasks.CREATE | Creates tasks as activities. |
| Desk.activities.tasks.DELETE | Deletes tasks as activities. |
| Desk.activities.tasks.UPDATE | Changes tasks as activities. |
| Desk.agents.CREATE | Creates agents and their presence. |
| Desk.agents.DELETE | Deletes agents and their presence. |
| Desk.agents.UPDATE | Changes agents and their presence. |
| Desk.articles.CREATE | Creates knowledge base articles, categories and translations. |
| Desk.articles.DELETE | Deletes knowledge base articles, categories and translations. |
| Desk.articles.UPDATE | Changes knowledge base articles, categories and translations. |
| Desk.automations.CREATE | Creates automation rules, SLAs and business hours. |
| Desk.automations.DELETE | Deletes automation rules, SLAs and business hours. |
| Desk.automations.UPDATE | Changes automation rules, SLAs and business hours. |
| Desk.basic.CREATE | Creates the organization, agents, departments and other basic records. |
| Desk.basic.UPDATE | Changes the organization, agents, departments and other basic records. |
| Desk.channels.email.CREATE | Creates support email addresses and mail settings. |
| Desk.channels.email.DELETE | Deletes support email addresses and mail settings. |
| Desk.channels.email.UPDATE | Changes support email addresses and mail settings. |
| Desk.channels.helpcenter.CREATE | Creates help centers, themes and portal users. |
| Desk.channels.helpcenter.DELETE | Deletes help centers, themes and portal users. |
| Desk.channels.helpcenter.UPDATE | Changes help centers, themes and portal users. |
| Desk.community.CREATE | Creates community categories, topics and comments. |
| Desk.community.DELETE | Deletes community categories, topics and comments. |
| Desk.community.UPDATE | Changes community categories, topics and comments. |
| Desk.contacts.CREATE | Creates contacts, their accounts and their history. |
| Desk.contacts.DELETE | Deletes contacts, their accounts and their history. |
| Desk.contacts.UPDATE | Changes contacts, their accounts and their history. |
| Desk.contracts.CREATE | Creates contracts. |
| Desk.contracts.UPDATE | Changes contracts. |
| Desk.custommodule.CREATE | Creates records in custom modules. |
| Desk.custommodule.UPDATE | Changes records in custom modules. |
| Desk.departments.CREATE | Creates departments. |
| Desk.departments.UPDATE | Changes departments. |
| Desk.events.CREATE | Creates webhook and event subscriptions. |
| Desk.events.DELETE | Deletes webhook and event subscriptions. |
| Desk.events.UPDATE | Changes webhook and event subscriptions. |
| Desk.featuresettings.UPDATE | Changes feature settings. |
| Desk.fields.CREATE | Creates custom fields. |
| Desk.fields.DELETE | Deletes custom fields. |
| Desk.fields.UPDATE | Changes custom fields. |
| Desk.integrations.CREATE | Creates connected integrations. |
| Desk.integrations.UPDATE | Changes connected integrations. |
| Desk.layouts.CREATE | Creates ticket layouts and their rules. |
| Desk.layouts.DELETE | Deletes ticket layouts and their rules. |
| Desk.layouts.UPDATE | Changes ticket layouts and their rules. |
| Desk.modules.CREATE | Creates modules. |
| Desk.modules.UPDATE | Changes modules. |
| Desk.organization.UPDATE | Changes organization settings. |
| Desk.permissions.CREATE | Creates profiles, roles and sharing rules. |
| Desk.permissions.DELETE | Deletes profiles, roles and sharing rules. |
| Desk.permissions.UPDATE | Changes profiles, roles and sharing rules. |
| Desk.products.CREATE | Creates products. |
| Desk.products.DELETE | Deletes products. |
| Desk.products.UPDATE | Changes products. |
| Desk.sandbox.CREATE | Creates sandboxes. |
| Desk.sandbox.UPDATE | Changes sandboxes. |
| Desk.settings.CREATE | Creates settings across the portal. |
| Desk.settings.DELETE | Deletes settings across the portal. |
| Desk.settings.UPDATE | Changes settings across the portal. |
| Desk.tasks.CREATE | Creates tasks. |
| Desk.tasks.DELETE | Deletes tasks. |
| Desk.tasks.UPDATE | Changes tasks. |
| Desk.teams.CREATE | Creates teams. |
| Desk.teams.DELETE | Deletes teams. |
| Desk.teams.UPDATE | Changes teams. |
| Desk.templates.CREATE | Creates email and ticket templates. |
| Desk.templates.DELETE | Deletes email and ticket templates. |
| Desk.templates.UPDATE | Changes email and ticket templates. |
| Desk.tickets.CREATE | Creates tickets, threads, comments, attachments, tags and time entries. |
| Desk.tickets.DELETE | Deletes tickets, threads, comments, attachments, tags and time entries. |
| Desk.tickets.UPDATE | Changes tickets and sends replies to customers. |
Verify it worked
PopMCP shows Zoho Desk as Connected under your organization's name, and zoho_desk_get_my_info returns the agent you signed in as while zoho_desk_list_tickets lists your tickets.
Troubleshooting
"Zoho did not accept the Client ID and Client secret for the United States data center"
Why: 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"
Why: 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-desk/callback`, save, and connect again.
"The Zoho sign-in expired before it could be completed"
Why: Zoho's authorization codes last 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.
"This Zoho account has no Zoho Desk organization"
Why: You signed in with a Zoho account that has no Zoho Desk organization in that data center.
Fix: Sign in with the Zoho account you use for Zoho Desk, or start a Zoho Desk organization first.
"Zoho tied this sign-in to a different Zoho Desk organization"
Why: You have several Zoho Desk organizations and chose another one on Zoho's consent screen.
Fix: Connect again and choose the same organization on Zoho's consent screen as in PopMCP. To connect a second organization, connect it in another workspace.
"Zoho Desk refused to list your organizations"
Why: The permissions were not all accepted, or the Zoho user has no Zoho Desk seat.
Fix: Connect again and accept every permission on the consent screen, or ask an admin to connect.
A working connection stops with "Zoho no longer accepts this connection's authorization"
Why: The refresh token was revoked, the password changed, or more than 20 connections were made for the same Zoho user, which makes Zoho retire the oldest.
Fix: Disconnect and reconnect Zoho Desk.
A tool says this portal has used its API credits for today
Why: Zoho Desk counts API credits per portal per day, by edition and number of users, and resets them at midnight in its data center's time zone. Reading one record costs 1 credit and a list costs 3 or more, rising the deeper it reaches.
Fix: Wait for the reset, filter lists rather than paging deep, or ask your Zoho Desk super admin to buy more credits. **Setup, Developer Space, APIs** shows what has been used.
A tool says it needs Desk.exports.CUSTOM, Desk.imports.CUSTOM, Desk.sandbox.deploy.CUSTOM or a Desk.qaautomation scope
Why: PopMCP does not ask Zoho for these permissions yet, so bulk export, import, sandbox deployment and QA automation tools are refused.
Fix: Contact PopMCP support if you need them.
Reference
Zendesk
Connect Zendesk to manage support tickets, users, organizations, macros, views, triggers, and the help center. MCP setup guide for Claude and ChatGPT.
Podium
Connect Podium to answer customer texts, ask for and reply to reviews, send payment links and see calls and appointments across your locations.