Zoho CRM integration | Zervanor
← All connectors

Zoho CRM

Also an agent tool
sales-crm

Zoho CRM API v6 integration. OAuth 2.0 (authorization-code + offline refresh) with the custom Authorization: Zoho-oauthtoken <token> scheme via oauth_config.token_value_prefix (ADR-033 — NOT Bearer) and a datacenter-specific API host via {config.api_base_url} base-URL templating (ADR-030; e.g. https://www.zohoapis.com/crm/v6 for US, .eu/.in/.com.au/.jp/.ca per region). The module is a path parameter ({module}), so one generic record-CRUD action set (list/get/insert/update/upsert/delete/get-deleted/count) serves all standard and custom modules (Leads, Contacts, Accounts, Deals, ...). Covers the v6 core surface: Records (generic per-module CRUD), Search, COQL, Bulk Read/Write (metadata/job actions; binary file transfer deferred), Related Records, Notes, Organization, Users, Metadata/Settings (modules/fields/layouts), and the Notifications watch API (subscription management). Triggers are polling-only on Modified_Time (Zoho CRM's Notifications API authenticates with an unsigned plaintext token in a JSON body, matching none of the 9 registered Zervanor webhook signature handlers — zoho-crm-04); list_records carries the polling{} block. The OAuth accounts host (authorization_url/token_url) defaults to the .com datacenter; non-US tenants need a per-instance OAuth-flow override matching their datacenter (zoho-crm-01). Binary surfaces — Attachments/Files upload & download and Bulk Read/Write file transfer — are deferred to Theme 9 (binary file I/O); see compatibility.md zoho-crm-05.

35 actions · 1 triggers

The Zoho CRM integration lets you connect Zoho CRM to your automations with 35 actions and 1 triggers — and every action is also a tool an AI agent can call. Examples: Get Organization, Get Current User, Get Users, Get User, List Records. No blank-canvas wiring — connect it and use it in your workflows.

Every action below is also a tool an AI agent can call — the same pack powers your workflows and your agents.

Triggers 1

Events in Zoho CRM that can start a workflow.

polling

Zoho CRM record created or changed

Polls a module for records modified since the last run (sort_by=Modified_Time, asc).

Actions 35

What Zervanor can do in Zoho CRM.

Other10

GET

List Records

List records of a module (Zoho: GET /crm/v6/{module}). The module is a path parameter so this serves all standard and custom modules. Carries the polling{} block: the connector's change-detection trigger polls on Modified_Time (Zoho CRM has no usable signed webhook — zoho-crm-04).

GET

Get Record

Get a single record by id (Zoho: GET /crm/v6/{module}/{record_id}).

POST

Create Records

Insert up to 100 records into a module (Zoho: POST /crm/v6/{module}). The new id is at data[0].details.id; a 201/202 response can still carry per-record errors in data[].status (zoho-crm-06). Connector WRITE test target (paired with delete_record cleanup).

PUT

Update Record

Update a single record (Zoho: PUT /crm/v6/{module}/{record_id}).

PUT

Update Records

Update up to 100 records in a module (Zoho: PUT /crm/v6/{module}); each record object carries its own id.

DELETE

Delete Record

Delete a single record (Zoho: DELETE /crm/v6/{module}/{record_id}). Connector CLEANUP test target — reverses create_records so the reference org stays clean.

DELETE

Delete Records

Delete up to 100 records by id list (Zoho: DELETE /crm/v6/{module}?ids=id1,id2).

GET

Get Related Records

List records related to a parent record (Zoho: GET /crm/v6/{module}/{record_id}/{related_list}).

PUT

Update Related Records

Associate / update related records on a parent (Zoho: PUT /crm/v6/{module}/{record_id}/{related_list}).

DELETE

Delete Related Record

Dissociate a related record from a parent (Zoho: DELETE /crm/v6/{module}/{record_id}/{related_list}/{related_id}).

Actions5

GET

Get Record Count

Count records of a module matching criteria (Zoho: GET /crm/v6/{module}/actions/count).

POST

Enable Notifications

Subscribe a notify_url to module events (Zoho: POST /crm/v6/actions/watch). Subscription management only — the connector consumes change events via polling, not this push path (zoho-crm-04).

GET

List Notifications

List active notification subscriptions (Zoho: GET /crm/v6/actions/watch).

PATCH

Update Notifications

Update / extend a notification subscription (Zoho: PATCH /crm/v6/actions/watch).

DELETE

Disable Notifications

Disable notification subscriptions by channel id (Zoho: DELETE /crm/v6/actions/watch).

Notes5

GET

List Notes

List all notes across modules (Zoho: GET /crm/v6/Notes).

GET

Get Record Notes

Get notes attached to a specific record (Zoho: GET /crm/v6/{module}/{record_id}/Notes).

POST

Create Notes

Create notes (Zoho: POST /crm/v6/Notes). Each note carries Note_Title, Note_Content, Parent_Id, se_module.

PUT

Update Note

Update a note (Zoho: PUT /crm/v6/Notes/{note_id}).

DELETE

Delete Note

Delete a single note (Zoho: DELETE /crm/v6/Notes/{note_id}).

Settings3

GET

Get Modules

List all module metadata (Zoho: GET /crm/v6/settings/modules).

GET

Get Fields

Field metadata for a module (Zoho: GET /crm/v6/settings/fields?module={module}).

GET

Get Layouts

Layouts of a module (Zoho: GET /crm/v6/settings/layouts?module={module}).

Users3

GET

Get Current User

Get the identity of the authenticated user (Zoho: GET /crm/v6/users?type=CurrentUser). Safe read alternative to get_org.

GET

Get Users

List users of the organization (Zoho: GET /crm/v6/users).

GET

Get User

Get a single user by id (Zoho: GET /crm/v6/users/{user_id}).

Bulk Read2

POST

Create Bulk Read Job

Start an async bulk export job (Zoho: POST /crm/v6/bulk-read). Returns a job id to poll. The result download is binary (zipped CSV) and deferred to Theme 9.

GET

Get Bulk Read Job

Poll a bulk read job's status (Zoho: GET /crm/v6/bulk-read/{job_id}).

Bulk Write2

POST

Create Bulk Write Job

Create an async bulk write job from a previously uploaded file (Zoho: POST /crm/v6/bulk-write). The file upload itself is binary and deferred to Theme 9; this job-creation action takes the file_id.

GET

Get Bulk Write Job

Poll a bulk write job's status (Zoho: GET /crm/v6/bulk-write/{job_id}).

Coql1

POST

COQL Query

Run a SELECT-style COQL query (Zoho: POST /crm/v6/coql). Requires ZohoCRM.coql.READ.

Deleted1

GET

Get Deleted Records

List deleted records of a module — recycle-bin / permanent (Zoho: GET /crm/v6/{module}/deleted).

Org1

GET

Get Organization

Get the organization details for the authenticated account (Zoho: GET /crm/v6/org). Safe, read-only, no module — validates the OAuth token and the Zoho-oauthtoken scheme. Connector READ test target.

Search1

GET

Search Records

Search a module by criteria / email / phone / word (Zoho: GET /crm/v6/{module}/search). Requires ZohoSearch.securesearch.READ.

Upsert1

POST

Upsert Records

Insert-or-update records via duplicate-check fields (Zoho: POST /crm/v6/{module}/upsert).

Automations using Zoho CRM

Build your own automation with Zoho CRM in the visual builder.

Frequently asked questions

What can I automate with Zoho CRM?

35 actions are available — for example: Get Organization, Get Current User, Get Users, Get User, List Records, and more.

Which Zoho CRM events can start a workflow?

1 triggers — for example: Zoho CRM record created or changed.

Can Zoho CRM be used as an AI agent tool?

Yes. Every Zoho CRM action automatically becomes a tool an AI agent can call — the same pack powers both your workflows and your agents.

How is the Zoho CRM integration modelled?

Zoho CRM is modelled as a versioned connector pack, and the steps that need reasoning fall to first-party agents hosted in the same runtime as the workflows.