Zoho CRM
Also an agent toolZoho 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.
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
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 Record
Get a single record by id (Zoho: GET /crm/v6/{module}/{record_id}).
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).
Update Record
Update a single record (Zoho: PUT /crm/v6/{module}/{record_id}).
Update Records
Update up to 100 records in a module (Zoho: PUT /crm/v6/{module}); each record object carries its own id.
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 Records
Delete up to 100 records by id list (Zoho: DELETE /crm/v6/{module}?ids=id1,id2).
Get Related Records
List records related to a parent record (Zoho: GET /crm/v6/{module}/{record_id}/{related_list}).
Update Related Records
Associate / update related records on a parent (Zoho: PUT /crm/v6/{module}/{record_id}/{related_list}).
Delete Related Record
Dissociate a related record from a parent (Zoho: DELETE /crm/v6/{module}/{record_id}/{related_list}/{related_id}).
Actions5
Get Record Count
Count records of a module matching criteria (Zoho: GET /crm/v6/{module}/actions/count).
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).
List Notifications
List active notification subscriptions (Zoho: GET /crm/v6/actions/watch).
Update Notifications
Update / extend a notification subscription (Zoho: PATCH /crm/v6/actions/watch).
Disable Notifications
Disable notification subscriptions by channel id (Zoho: DELETE /crm/v6/actions/watch).
Notes5
List Notes
List all notes across modules (Zoho: GET /crm/v6/Notes).
Get Record Notes
Get notes attached to a specific record (Zoho: GET /crm/v6/{module}/{record_id}/Notes).
Create Notes
Create notes (Zoho: POST /crm/v6/Notes). Each note carries Note_Title, Note_Content, Parent_Id, se_module.
Update Note
Update a note (Zoho: PUT /crm/v6/Notes/{note_id}).
Delete Note
Delete a single note (Zoho: DELETE /crm/v6/Notes/{note_id}).
Settings3
Get Modules
List all module metadata (Zoho: GET /crm/v6/settings/modules).
Get Fields
Field metadata for a module (Zoho: GET /crm/v6/settings/fields?module={module}).
Get Layouts
Layouts of a module (Zoho: GET /crm/v6/settings/layouts?module={module}).
Users3
Get Current User
Get the identity of the authenticated user (Zoho: GET /crm/v6/users?type=CurrentUser). Safe read alternative to get_org.
Get Users
List users of the organization (Zoho: GET /crm/v6/users).
Get User
Get a single user by id (Zoho: GET /crm/v6/users/{user_id}).
Bulk Read2
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 Bulk Read Job
Poll a bulk read job's status (Zoho: GET /crm/v6/bulk-read/{job_id}).
Bulk Write2
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 Bulk Write Job
Poll a bulk write job's status (Zoho: GET /crm/v6/bulk-write/{job_id}).
Coql1
COQL Query
Run a SELECT-style COQL query (Zoho: POST /crm/v6/coql). Requires ZohoCRM.coql.READ.
Deleted1
Get Deleted Records
List deleted records of a module — recycle-bin / permanent (Zoho: GET /crm/v6/{module}/deleted).
Org1
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
Search Records
Search a module by criteria / email / phone / word (Zoho: GET /crm/v6/{module}/search). Requires ZohoSearch.securesearch.READ.
Upsert1
Upsert Records
Insert-or-update records via duplicate-check fields (Zoho: POST /crm/v6/{module}/upsert).
Nothing matches your search.
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.