Beam Help
Get help now

How-to · Zoho CRM

How to get pipelines in Zoho

Retrieve all pipelines available in your Zoho instance.

Retrieving pipelines in Zoho CRM is straightforward once your OAuth connection is established — you can query the CRM modules API to pull pipeline (deal stage) data directly from your account.


Why this matters


Sales teams rely on pipelines to track deals through each stage of the funnel. If you're building an integration, automating reporting, or using a tool like Beam Help's Zoho AI Pilot Engine, you'll need to fetch pipeline and module data programmatically. Understanding the correct scopes and API flow ensures you get accurate, live data rather than stale snapshots.


Step-by-step


Step 1. Set up your Zoho API credentials by visiting the Zoho API Console and creating a Server-based Application. Note your Client ID and Client Secret — you'll need both to authenticate any API request.[1]


Step 2. When registering your application, make sure you include the scope ZohoCRM.modules.ALL alongside ZohoCRM.settings.ALL and ZohoCRM.users.ALL. The modules scope is what grants access to pipeline and deal-stage data inside Zoho CRM.[1]


Step 3. Set your redirect URI to match exactly what's registered in the API Console. If you're running locally, this is typically http://localhost:8080/api/auth_callback. A mismatch here will cause an OAuth redirect error and block token exchange.[1]


Step 4. Store your credentials securely in a .env file at the project root. The minimum required variables are ZOHOCLIENTID, ZOHOCLIENTSECRET, and your data-centre setting (ZOHO_DC), which defaults to com but can be set to eu, in, com.au, or jp depending on where your Zoho account is hosted.[1]


Step 5. Establish the OAuth connection. Once your server is running, click Connect Zoho CRM in the UI and complete the authorisation flow. The system stores your access token and refresh token so subsequent requests are handled automatically.[2]


Step 6. The connection layer automatically refreshes your access token when it is within 120 seconds of expiry, so long-running pipeline queries won't fail mid-request with a 401 error. This is handled transparently — you don't need to manage token rotation manually.[6]


Step 7. To retrieve pipeline data, issue a natural-language query such as *"show me all deals"* or *"list open opportunities"*. Internally this maps to a search_records call against the Deals module, which contains the pipeline stages for each record.[7]


Step 8. If you want a count of records at each pipeline stage, you can ask *"how many deals do I have"* — this routes to the getrecordcount tool with the Deals module as the parameter, giving you a quick pipeline volume figure.[7]


Step 9. For direct record links, the CRM URL pattern follows https://crm.zoho.{dc}/crm/tab/{Module}/{RecordId}. Substitute your data-centre code and the relevant module name (e.g. Deals) to build deep links into specific pipeline records.[5]


Common pitfalls


  • Wrong redirect URI. The redirect URI in your .env and in the Zoho API Console must be character-for-character identical. Even a trailing slash difference will cause the OAuth callback to fail.[1]
  • Missing module scope. Omitting ZohoCRM.modules.ALL from your scope list means pipeline and deal-stage endpoints will return permission errors. Always include all three recommended scopes during app registration.[1]
  • Wrong data centre. If your Zoho account is on the EU or India data centre and ZOHODC is left as com, API calls will hit the wrong endpoint and return authentication failures. Set ZOHODC to match your account region.[1]
  • Stale database state. If you encounter unexpected errors after changing credentials or re-authorising, deleting the local SQLite file (data/zpilot.sqlite) and restarting the server forces a clean state.[2]

What to check


  • Confirm that ZohoCRM.modules.ALL and ZohoCRM.settings.ALL are both listed under your application's approved scopes in the Zoho API Console.[1]
  • Verify that ZOHO_DC in your .env matches the data centre shown in your Zoho CRM account URL (e.g. eu for crm.zoho.eu).[1]
  • After connecting, test the token refresh path by waiting for a near-expiry state or checking that the zohoconnections table is being updated with a fresh accesstoken and tokenexpiresat.[6]

---


*Beam Help is independent expert support for Zoho — we are not official Zoho support, and this guidance is based on our own implementation experience.*

Sources cited

  1. [1] README.md
  2. [2] run_llm_routing_suite.py
  3. [3] build_extensions.py
  4. [4] server.py: build_zoho_links
  5. [5] server.py: get_zoho_connection
  6. [6] server.py: chat_stream
  7. [7] planner.py
Get Pipelines in Zoho | Beam Help