If you're integrating WordPress (or any app) with Zoho CRM – like with my Zoho CRM Lead Mapping Pro plugin – you need secure OAuth credentials: Client ID, Client Secret, and a long-lived Refresh Token.
Zoho uses OAuth 2.0 for safe access without sharing passwords. The refresh token lets your app auto-renew short-lived access tokens.
This step-by-step guide covers the easiest methods for most users. We'll focus on Self Client (simplest, no redirect needed) and Server-based Application (more flexible).
(Zoho API Console Dashboard – your starting point)
Step 1: Log In to Zoho API Console
- Go to: https://api-console.zoho.com
- Sign in with your Zoho account (the one linked to your CRM organization).
You'll see the dashboard with options for client types.
Method 1: Self Client (Easiest & Recommended for Personal/Plugin Use)
Self Client is perfect for backend integrations (like WordPress plugins) where you own the Zoho account. No redirect URI needed – generate tokens directly.
- In the API Console, choose Self Client → Create Now (or Add Client if you have existing ones).
(Self Client creation form – simple and quick)
- Enter a Client Name (e.g., "WordPress Lead Plugin").
Select scopes:
ZohoCRM.modules.ALL,ZohoCRM.users.READ,ZohoCRM.settings.ALL,ZohoCRM.org.READ
(Copy-paste this – it covers leads, products, attachments, notes).Click Create.
On the next screen, click Generate Code (or similar button).
Choose scope again if prompted (same as above).
Select token duration (default 1 hour is fine – we'll get refresh token).
Click Create → An Authorization Code (grant token) appears. Copy it immediately!
Now exchange the code for tokens:
Use this URL (replace placeholders):
https://accounts.zoho.com/oauth/v2/token
?code=YOUR_AUTHORIZATION_CODE
&client_id=YOUR_CLIENT_ID
&client_secret=YOUR_CLIENT_SECRET
&grant_type=authorization_code
&redirect_uri= (leave blank or use dummy)
- For EU: Use
https://accounts.zoho.eu/... - For IN:
https://accounts.zoho.in/...
Paste in browser or use Postman/curl. Response includes:
-
access_token(short-lived) -
refresh_token(long-lived – this is what you need!)
Example response:
{
"access_token": "1000.12345678190123456789123456789",
"refresh_token": "1000.12345678901234567890123456789",
"scope": "ZohoCRM.modules.ALL ZohoCRM.modules.attachments.ALL",
"api_domain": "https://www.zohoapis.com",
"token_type": "Bearer",
"expires_in": 3600
}
Method 2: Server-based Application (For Production/Multi-User Apps)
Use this if you need a redirect flow or multi-org support.
- In API Console, choose Server-based Applications → Create Now.
(Server-based app registration form)
-
Fill:
- Client Name
- Homepage URL (your site)
- Authorized Redirect URI (e.g., https://your-site.com/oauth-callback – can be dummy like https://localhost)
Click Create → Get Client ID and Client Secret.
Generate authorization URL:
https://accounts.zoho.com/oauth/v2/auth
?scope=ZohoCRM.modules.ALL,ZohoCRM.users.READ,ZohoCRM.settings.ALL,ZohoCRM.org.READ
&client_id=YOUR_CLIENT_ID
&response_type=code
&redirect_uri=YOUR_REDIRECT_URI
&access_type=offline (important for refresh token!)
Open in browser, log in, approve → Redirected with
?code=XXXXin URL.Exchange code for tokens (same POST as above, add
redirect_uriparameter).
You'll get the refresh_token.
Important Tips
- Data Center Matters: Use correct domain (US: .com, EU: .eu, IN: .in) for accounts and api.zoho...
- Scopes: Use the exact scopes above for full lead/product/file functionality.
- Security: Never expose Client Secret or Refresh Token publicly.
- Multi-DC: Enable in console settings if using multiple regions.
- Testing: Refresh token works forever until revoked.
Final Thoughts
Generating Zoho OAuth credentials is straightforward once you know the steps – Self Client is quickest for most plugin users.
I built the Zoho CRM Lead Mapping Pro plugin to make this integration seamless for WordPress sites. Hope this guide helps you get connected quickly!
If you run into issues, need help with setup, or want custom features/consultation, feel free to email me:
sonde@toolrackly.site or sondeomotayo7@gmail.com
Happy integrating! 🚀


Top comments (0)