Today, we’ll be going over a question that is frequently asked by Zoho users as they experiment with the program.

Is the Zoho CRM API Two-Way Or One Way?

There are definitely two-way capabilities on Zoho. You can push data in via the API and you can also pull it out.

Pushing data in

You’ve got four options when it comes to pushing data in:

  1. Use Zapier/Zoho Flow: this is probably the easiest approach as you may not need to write any code at all. If you’re wanting to send data from another system (e.g. Eventbrite) into Zoho CRM, there’s a good chance that there’s already a connector available in Zapier or Zoho flow.
  2. Use the Node JS/Python/PHP SDKs: Zoho has a bunch of SDKs available to work with their APIs. This does introduce some complexity as you have to deal with OAuth even if you’re setting up a machine 2 machine integration that’s only connecting to your own CRM. Refer to this article for more details on using the SDKs.
  3. Directly integrate with the Zoho CRM API via the equivalent of cURL: maybe you don’t like the Zoho CRM SDKs or maybe you like writing all your code in Rust and there’s no supported SDK. I salute you and wish you all the best. I’ve had nothing but pain with this approach 🙂
  4. Use serverless custom functions to integrate: this is actually my favourite approach. I like Deluge script and find I can be super productive this way. Here’s an article diving deep on serverless custom functions.

Pulling data out

At a high level, there are two approaches to retrieving data:

  1. Polling: set up a cron job and query the Zoho CRM API every x minutes
  2. Webhooks: configure a workflow rule in Zoho CRM to send data to your endpoint via a webhook


Polling can work but it can also chew up your API limit pretty fast. I’d recommend using the bulk read API if you intend to retrieve a lot of data out of the CRM. Definitely also make sure you filter by Modified_Time so that you only retrieve data that has changed since your last sync.


The more preferable option is to wait for Zoho to tell you that data has changed. You can set up workflow rules that trigger webhooks. These are API calls directed to a server you control. The payload contains everything you need to update your own data store. If the built in Zoho CRM webhooks don’t meet your needs, you can always build your own by triggering a deluge script function which wrangles the CRM data into the format you require and then uses invoke URL to send it to your server.