How to make a Zoho Self Client refresh token for Zendesk
By Jake Marsh · Updated
To connect Zoho to Zendesk with Larkwell, create a Self Client in the Zoho API Console (Add Client > Self Client > Create), enter its Client ID and Client Secret in Larkwell's settings, then open a ticket as an admin. The Larkwell setup check shows the scope string. Paste it on the Self Client's Generate Code tab, create the code, paste the code into Larkwell and click Get refresh token. Save the token in the Refresh token setting.
Find your data center first
Look at the address you sign in to Zoho at.
| Zoho address | Data center code |
|---|---|
| zoho.com | us |
| zoho.eu | eu |
| zoho.in | in |
| zoho.com.au | au |
| zoho.jp | jp |
| zohocloud.ca | ca |
| zoho.uk | uk |
| zoho.sa | sa |
| zoho.ae | ae |
| zoho.sg | sg |
Not sure? The setup check has Find your Data center setting: paste the address of any Zoho page you're signed in to.
Steps
- Create the Self Client. Open the API Console of that data center (api-console.zoho.com for
us, api-console.zoho.eu foreu, and so on). Choose Add Client > Self Client > Create. On the Client Secret tab, copy the Client ID and Client Secret. - Install Larkwell and enter the data center code, Client ID and Client Secret. Leave the refresh token empty for now, Refresh tokens saved at 1, and the organization IDs empty to use each product's default organization.
- Open any ticket as an admin. Larkwell opens its setup check and shows Scope string for the Self Client.
- Generate the code. In the API Console, on the Self Client's Generate Code tab, paste the scope string (leave out the products you don't use), pick 10 minutes as the expiry and click Create. Zoho's Self Client guide describes this tab.
- Swap it for a refresh token. Paste the code into Make a refresh token from a grant code and click Get refresh token. Zendesk adds your client secret on the way to Zoho, so it never reaches the browser.
- Save it. Copy Your refresh token into the Refresh token setting in Admin Center and save. Larkwell doesn't keep it anywhere else.
- Click Check again. Every step should say OK. A step that doesn't names the exact fix.
The scopes
| Product | Read scopes |
|---|---|
| Zoho CRM | ZohoCRM.modules.contacts.READ, accounts.READ, deals.READ, tasks.READ, events.READ, calls.READ, notes.READ, ZohoSearch.securesearch.READ |
| Zoho Books | ZohoBooks.settings, contacts, invoices, customerpayments .READ |
| Zoho Billing | ZohoSubscriptions.settings, customers, subscriptions .READ |
| Zoho Inventory | ZohoInventory.settings, contacts, salesorders .READ |
For actions, add ZohoCRM.modules.contacts.CREATE, notes.CREATE and calls.CREATE. A read-only panel needs none of them. Copy the full string from the setup check rather than typing it.
Don't use ZohoCRM.ALL or ZohoBooks.fullaccess.all. Larkwell refuses to run with a token that can read Zoho CRM security profiles (ZohoCRM.ALL or ZohoCRM.settings scopes, which can also change profiles, roles and users) or Zoho Books bank accounts (Books full access or banking scopes).
Errors and fixes
| Message | Fix |
|---|---|
| "Zoho does not know this Client ID" | The Self Client was made in another data center's API Console, or the data center setting is wrong. |
| "Zoho did not accept the refresh token" | It was revoked, belongs to another Client ID, or Zoho dropped it after 20 newer ones were made for the same Zoho user. Make a new one in the setup check. |
| "Larkwell will not run with this refresh token" | The scopes are too broad. Generate a new code with the setup check's scope string, save the new token, and revoke the old one in Zoho Accounts > Security > Connected Apps. |
| "Zoho is limiting new sign-ins" | Make a second (and third) refresh token, save them as Refresh token 2 and 3, and set Refresh tokens saved to 2 or 3. |
| The grant code doesn't work | Codes are single use and expire. Generate a fresh one and paste it within the expiry you picked. |
Larger teams
Zoho lets one refresh token make 10 access tokens per 10 minutes. Larkwell shares one access token per agent session instead of one per ticket sidebar. If Zoho starts limiting sign-ins, add a second and third refresh token, and agents are spread across them.
What it costs
Larkwell Team is $100 a month per Zendesk account for up to 6 agents and admins. Scale is $15 per agent per month for 7 or more. Every feature is on both, after a 14-day trial with a card, billed monthly by Zendesk. The Larkwell documentation lists every setting.
Larkwell
Zoho CRM, Books, Billing and Inventory next to each ticket: deals, invoices, subscriptions, orders. From $100 a month per Zendesk account.
Questions
Does a Zoho refresh token expire?
Larkwell keeps working with the same refresh token until it's revoked or Zoho drops it, which happens after 20 newer tokens are made for the same Zoho user and client.
Which Zoho user should create the Self Client?
A Zoho admin, or a user who can see the records your agents need. The panel shows what that user's token can read.
Why does my code say it's invalid?
Grant codes can be used once and expire after the time you chose (3 to 10 minutes). Make a new one with a 10-minute expiry and paste it right away.
Is the client secret visible to agents?
No. It's a secure setting in Zendesk, added on Zendesk's side when the request goes to Zoho.