Skip to main content

Zoho Component

Manage records, contacts, and transactions in Zoho CRM and Books

Component key: zoho

Changelog ↓

Description

Zoho is a business software suite that includes CRM, accounting, and business management applications. This component allows you to manage records, contacts, deals, invoices, and bills in Zoho CRM and Zoho Books.

API Documentation

This component was built using the Zoho CRM API Documentation currently utilizing v8 and the Zoho Books API Documentation utilizing v3.

Connections

Zoho OAuth 2.0 (Deprecated)

InputNotesExample
Authorize URL

The OAuth 2.0 Authorization URL for your Zoho region

Client ID

Client Identifier of your app for the Zoho API. Generate this in the Zoho API Console.

1000.ABC123XYZ456DEF789
Client Secret

Client Secret of your app for the Zoho API. Generate this in the Zoho API Console.

1234567890abcdef1234567890abcdef12345678
Refresh Token Revoke URL

The OAuth 2.0 Token Revocation URL for your Zoho region

Scopes

Space-separated OAuth 2.0 permission scopes for the Zoho API. Can combine Zoho CRM and Zoho Books scopes.

ZohoCRM.modules.ALL ZohoBooks.fullaccess.all
Token URL

The OAuth 2.0 Token URL for your Zoho region

OAuth 2.0

To connect to Zoho CRM or Zoho Books, create a Client application in the Zoho Developer Console.

Zoho supports OAuth 2.0 authentication for both Zoho CRM and Zoho Books APIs. The same OAuth client can be configured to access multiple Zoho services by combining their scopes.

Prerequisites

Setup Steps

  1. Log in to the Zoho Developer Console
  2. Click ADD CLIENT
  3. Select Server-based Applications as the client type
  4. Configure the client application:
    • Enter a descriptive name in the Client Name field
    • Enter the application homepage URL in the Homepage URL field
    • Under Authorized Redirect URIs, add: https://oauth2.prismatic.io/callback
  5. Click CREATE to generate the client
  6. Copy the Client ID and Client Secret values displayed on the confirmation page

For detailed information about creating OAuth clients, refer to the Zoho OAuth client registration documentation.

Configure the Connection

  • Enter the Client ID and Client Secret from the Zoho Developer Console

  • Select the appropriate Region URL for the Zoho account's data center location:

    • United States: https://accounts.zoho.com
    • Europe: https://accounts.zoho.eu
    • India: https://accounts.zoho.in
    • Australia: https://accounts.zoho.com.au
    • Japan: https://accounts.zoho.jp
    • United Kingdom: https://accounts.zoho.uk
    • Canada: https://accounts.zohocloud.ca
    • United Arab Emirates: https://accounts.zoho.ae
    • Saudi Arabia: https://accounts.zoho.sa

    Refer to Zoho's server information page to determine the correct region URL.

  • Configure the Scopes field with the required permissions:

    • For Zoho CRM access, refer to the Zoho CRM scopes documentation
    • For Zoho Books access, refer to the Zoho Books scopes documentation
    • Multiple scopes can be combined by separating them with spaces
    • Example for both CRM and Books access:
      ZohoCRM.modules.ALL ZohoCRM.settings.ALL ZohoBooks.fullaccess.all
Multi Region Deployments

For integrations that will be deployed to users in multiple Zoho regions, configure the Region URL field to be visible to instance deployers. This allows end users to select their appropriate region during instance configuration.

To make the Region URL field visible to deployers, enable the field visibility in the connection configuration:

InputNotesExample
Authorize URL

The OAuth 2.0 Authorization URL for your Zoho region

https://accounts.zoho.com/oauth/v2/auth?access_type=offline&prompt=consent
Client ID

Client Identifier of your app for the Zoho API. Generate this in the Zoho API Console.

1000.ABC123XYZ456DEF789
Client Secret

Client Secret of your app for the Zoho API. Generate this in the Zoho API Console.

1234567890abcdef1234567890abcdef12345678
Refresh Token Revoke URL

The OAuth 2.0 Token Revocation URL for your Zoho region

https://accounts.zoho.com/oauth/v2/token/revoke
Scopes

Space-separated OAuth 2.0 permission scopes for the Zoho API. Can combine Zoho CRM and Zoho Books scopes.

ZohoCRM.modules.ALL ZohoBooks.fullaccess.all
Token URL

The OAuth 2.0 Token URL for your Zoho region

https://accounts.zoho.com/oauth/v2/token
Region URL

The URL of the Zoho region you want to connect to.

https://accounts.zoho.com

Triggers

CRM Notifications

Receive CRM event notifications from Zoho CRM. Automatically creates and manages a notification channel subscription for selected event types when the instance is deployed, and removes the subscription when the instance is deleted. | key: notificationsTrigger

InputNotesExample
Channel Expiry

ISO datetime for expiry. Maximum 1 week from now. Default is 1 hour.

2024-12-31T23:59:59Z
Channel ID

User-defined unique identifier for the notification channel. Leave empty and we will generate one.

123456789
Connection

The Zoho connection to use.

Events

Subscribed operations in format "{module}.{operation}". Operations: create, edit, delete, all.

Notification Condition

Filter notifications by specific field changes. Provide field API names to watch.

Notify On Related Action

When true, triggers notifications when associated record actions occur.

true
Return Affected Field Values

When true, includes updated field values in the notification callback.

false
Token

Verification token (max 50 chars) sent in callbacks to verify notifications are from Zoho CRM.

my_verification_token_123

The Notifications trigger manages Zoho CRM notification channel subscriptions for an instance. It handles the entire webhook lifecycle automatically.

When the trigger is used in a flow:

  • On Instance Deploy: Creates a notification channel with the specified event subscriptions (e.g., "Leads.create", "Deals.edit"). The webhook target URL is set to the instance's unique webhook URL. The Channel ID is stored in cross-flow state.
  • On Instance Deletion: Disables the notification events for the stored channel, ensuring no orphaned subscriptions remain.

Configuration

  • Connection: Zoho CRM connection for API access
  • Events: Array of subscribed operations in {module}.{operation} format (e.g., ["Leads.create", "Deals.edit", "Contacts.all"])
  • Channel ID (optional): Custom numeric identifier for the channel. Auto-generated if not provided.
  • Token (optional): Verification token (max 50 chars) sent in callbacks
  • Channel Expiry (optional): ISO datetime for channel expiration. Max 1 week, default 1 hour.
  • Return Affected Field Values (optional): Include updated field values in the payload
  • Notify On Related Action (optional): Trigger on associated record actions. Default: true
  • Notification Condition (optional): JSON object filtering to specific field changes

Event Types

Available operations for any CRM module:

  • create - Record created
  • edit - Record updated
  • delete - Record deleted
  • all - Any operation

Example: ["Leads.create", "Deals.edit", "Contacts.delete"]

Returned Data

Webhook payloads include:

View example payload
{
"channel_id": 1234567890,
"token": "my_verification_token",
"module": "Deals",
"operation": "edit",
"ids": ["5394166000000456789"],
"affected_fields": ["Stage", "Amount"],
"Modified_By": {
"name": "Jane Smith",
"id": "5394166000000987654"
}
}
tip

Notification channels expire after 1 week maximum. Configure the Channel Expiry input appropriately and consider implementing channel renewal logic for long-running instances.


New and Updated Books Contacts

Checks for new and updated contacts in Zoho Books on a configured schedule. | key: bookContactsPollingTrigger

InputNotesExample
Connection

The Zoho connection to use.

Checks for new and updated contacts in Zoho Books on a configured schedule. This trigger monitors both customer and vendor contacts.

For more details, see the Zoho Books Contacts API documentation.

How It Works

  1. Run on the configured schedule (e.g., every 5 minutes)
  2. Fetch contacts from Zoho Books sorted by last_modified_time
  3. Categorize records as "created" or "updated" based on created_time vs last_modified_time timestamps
  4. Maintain state to track the last poll time automatically

Returned Data

View example response
{
"data": {
"created": [
{
"contact_id": "982000000567023",
"contact_name": "ABC Corporation",
"contact_type": "customer",
"email": "contact@abccorp.com",
"created_time": "2025-11-24T10:30:00-0800",
"last_modified_time": "2025-11-24T10:30:00-0800"
}
],
"updated": [
{
"contact_id": "982000000456789",
"contact_name": "XYZ Industries",
"contact_type": "vendor",
"email": "vendor@xyzind.com",
"created_time": "2025-11-20T14:20:00-0800",
"last_modified_time": "2025-11-24T09:15:00-0800"
}
]
}
}

Contacts include billing_address, shipping_address, phone, mobile, website, and other standard fields.

Best Practices

  • Polling Frequency: Use 5-15 minute intervals to balance timeliness with API limits
  • Rate Limits: Zoho Books allows 100 API calls per minute; daily limits vary by plan (1,000-10,000 calls/day)

New and Updated CRM Contacts

Checks for new and updated contacts in Zoho CRM on a configured schedule. | key: contactsPollingTrigger

InputNotesExample
Connection

The Zoho connection to use.

Zoho CRM provides two polling triggers to monitor changes to CRM records. Both check for new and updated records on a scheduled basis and work identically. The main difference is which record type they monitor.

New and Updated CRM Contacts - Monitors contact records in Zoho CRM

New and Updated CRM Leads - Monitors lead records in Zoho CRM

How It Works

Both triggers operate the same way:

  1. Run on the configured schedule (e.g., every 5 minutes)
  2. Fetch records from Zoho CRM sorted by Modified_Time
  3. Categorize records as "created" or "updated" based on Created_Time vs Modified_Time timestamps
  4. Maintain state to track the last poll time automatically

For more details, see the CRM Modules API documentation.

Returned Data

Both triggers return the same structure with separate arrays for created and updated records:

View example response
{
"data": {
"created": [
{
"id": "5394166000000379001",
"Email": "john.doe@example.com",
"First_Name": "John",
"Last_Name": "Doe",
"Created_Time": "2025-11-24T10:30:00-08:00",
"Modified_Time": "2025-11-24T10:30:00-08:00"
}
],
"updated": [
{
"id": "5394166000000456789",
"Email": "jane.smith@example.com",
"First_Name": "Jane",
"Last_Name": "Smith",
"Created_Time": "2025-11-20T14:20:00-08:00",
"Modified_Time": "2025-11-24T09:15:00-08:00"
}
]
}
}

Lead records include additional fields like Company, Lead_Status, and Lead_Source.

Best Practices

  • Polling Frequency: Use 5-15 minute intervals to balance timeliness with API limits
  • Rate Limits: Zoho CRM limits vary by edition (5,000-100,000 calls/day)

New and Updated CRM Leads

Checks for new and updated leads in Zoho CRM on a configured schedule. | key: leadsPollingTrigger

InputNotesExample
Connection

The Zoho connection to use.

See New and Updated CRM Contacts for complete instructions.

This trigger works identically to New and Updated CRM Contacts, with the difference being it monitors lead records instead of contact records.

Lead records include fields specific to leads like Company, Lead_Status, and Lead_Source.


Actions

Books - Create Record

Create a Zoho Books Record | key: booksCreateRecord

InputNotesExample
Connection

The Zoho connection to use.

Dynamic Fields

Dynamic input fields that can be configured at deploy time using key-value config variables.

Values

Key-value pairs representing field names and their values for creating or updating records.

{ "Last_Name": "Doe", "Email": "john.doe@example.com" }
Parent Record ID

The unique identifier of the parent record under which other records are grouped.

5394166000000379001
Parent Record Type

The type of Books record to operate on. See Zoho Books API for details.

Record Type

The type of Books record to operate on. See Zoho Books API for details.

{
"data": {
"code": 0,
"message": "The contact has been created.",
"contact": {
"contact_id": "5394166000000379001",
"contact_name": "Acme Corporation",
"company_name": "Acme Corporation",
"contact_type": "customer",
"customer_sub_type": "business",
"status": "active",
"payment_terms": 30,
"payment_terms_label": "Net 30",
"currency_id": "5394166000000000097",
"currency_code": "USD",
"first_name": "John",
"last_name": "Doe",
"email": "john.doe@acme.example.com",
"phone": "+1-415-555-0123",
"billing_address": {
"address": "123 Market Street",
"city": "San Francisco",
"state": "California",
"zip": "94105",
"country": "United States"
},
"created_time": "2024-01-15T10:30:00-0800",
"last_modified_time": "2024-01-15T10:30:00-0800"
}
}
}

Books - Get Record

Get a single Zoho Books Record | key: booksGetRecord

InputNotesExample
Connection

The Zoho connection to use.

Parent Record ID

The unique identifier of the parent record under which other records are grouped.

5394166000000379001
Parent Record Type

The type of Books record to operate on. See Zoho Books API for details.

Record ID

The unique identifier of the record in Zoho.

5394166000000379001
Record Type

The type of Books record to operate on. See Zoho Books API for details.

{
"data": {
"code": 0,
"message": "success",
"contact": {
"contact_id": "5394166000000379001",
"contact_name": "Acme Corporation",
"company_name": "Acme Corporation",
"contact_type": "customer",
"customer_sub_type": "business",
"credit_limit": 50000,
"status": "active",
"payment_terms": 30,
"payment_terms_label": "Net 30",
"currency_id": "5394166000000000097",
"currency_code": "USD",
"currency_symbol": "$",
"outstanding_receivable_amount": 15000,
"outstanding_receivable_amount_bcy": 15000,
"unused_credits_receivable_amount": 0,
"unused_credits_receivable_amount_bcy": 0,
"first_name": "John",
"last_name": "Doe",
"email": "john.doe@acme.example.com",
"phone": "+1-415-555-0123",
"mobile": "+1-415-555-0124",
"website": "https://www.acme.example.com",
"is_portal_enabled": false,
"is_taxable": true,
"tax_id": "5394166000000000500",
"tax_name": "Sales Tax",
"tax_percentage": 8.25,
"tax_exemption_id": null,
"tax_exemption_code": null,
"place_of_contact": "San Francisco",
"gst_no": null,
"gst_treatment": "business_none",
"billing_address": {
"address": "123 Market Street",
"street2": "Suite 400",
"city": "San Francisco",
"state": "California",
"state_code": "CA",
"zip": "94105",
"country": "United States",
"country_code": "US",
"fax": null
},
"shipping_address": {
"address": "123 Market Street",
"street2": "Suite 400",
"city": "San Francisco",
"state": "California",
"state_code": "CA",
"zip": "94105",
"country": "United States",
"country_code": "US",
"fax": null
},
"contact_persons": [
{
"contact_person_id": "5394166000000379010",
"salutation": "Mr.",
"first_name": "John",
"last_name": "Doe",
"email": "john.doe@acme.example.com",
"phone": "+1-415-555-0123",
"mobile": "+1-415-555-0124",
"is_primary_contact": true,
"skype": null,
"designation": "CFO",
"department": "Finance",
"is_added_in_portal": false
}
],
"default_templates": {
"invoice_template_id": "5394166000000000333",
"invoice_template_name": "Standard",
"estimate_template_id": "5394166000000000334",
"estimate_template_name": "Standard",
"creditnote_template_id": "5394166000000000335",
"creditnote_template_name": "Standard",
"purchaseorder_template_id": "5394166000000000336",
"purchaseorder_template_name": "Standard",
"salesorder_template_id": "5394166000000000337",
"salesorder_template_name": "Standard",
"retainerinvoice_template_id": "5394166000000000338",
"retainerinvoice_template_name": "Standard",
"paymentthankyou_template_id": "5394166000000000339",
"paymentthankyou_template_name": "Standard",
"retainerinvoice_paymentthankyou_template_id": "5394166000000000340",
"retainerinvoice_paymentthankyou_template_name": "Standard"
},
"custom_fields": [],
"notes": "Premium customer since 2020",
"created_time": "2024-01-15T10:30:00-0800",
"last_modified_time": "2024-01-15T14:22:10-0800"
}
}
}

Books - Get Records

Get a collection of Zoho Books Records | key: booksGetRecords

InputNotesExample
Connection

The Zoho connection to use.

Fetch All

When true, automatically fetches all pages of results using pagination.

false
Page

The page number to start at. First page is 1.

1
Parent Record ID

The unique identifier of the parent record under which other records are grouped.

5394166000000379001
Parent Record Type

The type of Books record to operate on. See Zoho Books API for details.

Per Page

The number of records to fetch per page. Maximum is 200.

200
Record Type

The type of Books record to operate on. See Zoho Books API for details.

Search Fields

Key-value pairs for filtering search results. Keys are field names, values are search criteria.

{ "contact_name": "John", "email": "john@example.com" }

{
"data": {
"contacts": [
{
"contact_id": "5394166000000379001",
"contact_name": "Acme Corporation",
"company_name": "Acme Corporation",
"contact_type": "customer",
"status": "active",
"payment_terms": 30,
"payment_terms_label": "Net 30",
"currency_id": "5394166000000000097",
"currency_code": "USD",
"outstanding_receivable_amount": 15000,
"unused_credits_receivable_amount": 0,
"first_name": "John",
"last_name": "Doe",
"email": "john.doe@acme.example.com",
"phone": "+1-415-555-0123",
"mobile": "+1-415-555-0124",
"created_time": "2024-01-15T10:30:00-0800",
"last_modified_time": "2024-01-15T14:22:10-0800"
},
{
"contact_id": "5394166000000379002",
"contact_name": "TechStart Inc",
"company_name": "TechStart Inc",
"contact_type": "customer",
"status": "active",
"payment_terms": 15,
"payment_terms_label": "Net 15",
"currency_id": "5394166000000000097",
"currency_code": "USD",
"outstanding_receivable_amount": 7500,
"unused_credits_receivable_amount": 500,
"first_name": "Jane",
"last_name": "Smith",
"email": "jane.smith@techstart.example.com",
"phone": "+1-415-555-0125",
"mobile": "+1-415-555-0126",
"created_time": "2024-01-14T09:15:00-0800",
"last_modified_time": "2024-01-15T11:45:30-0800"
}
],
"page_context": {
"page": 1,
"per_page": 200,
"has_more_page": false,
"report_name": "Contacts"
}
}
}

Books - Raw Request

Send raw HTTP request to Zoho Books | key: booksRawRequest

InputNotesExample
Connection

The Zoho connection to use.

Data

The HTTP body payload to send to the URL.

{"exampleKey": "Example Data"}
File Data

File Data to be sent as a multipart form upload.

[{key: "example.txt", value: "My File Contents"}]
File Data File Names

File names to apply to the file data inputs. Keys must match the file data keys above.

Form Data

The Form Data to be sent as a multipart form upload.

[{"key": "Example Key", "value": new Buffer("Hello World")}]
Header

A list of headers to send with the request.

User-Agent: curl/7.64.1
Max Retry Count

The maximum number of retries to attempt. Specify 0 for no retries.

0
Method

The HTTP method to use.

Query Parameter

A list of query parameters to send with the request. This is the portion at the end of the URL similar to ?key1=value1&key2=value2.

Response Type

The type of data you expect in the response. You can request json, text, or binary data.

json
Retry On All Errors

If true, retries on all erroneous responses regardless of type. This is helpful when retrying after HTTP 429 or other 3xx or 4xx errors. Otherwise, only retries on HTTP 5xx and network errors.

false
Retry Delay (ms)

The delay in milliseconds between retries. This is used when 'Use Exponential Backoff' is disabled.

0
Timeout

The maximum time that a client will await a response to its request

2000
URL

Input the path only (/organizations), The base URL is already included (https://www.zohoapis.{api_domain}/books/v3). For example, to connect to https://www.zohoapis.{api_domain}/books/v3/organizations, only /organizations is entered in this field.

/organizations
Use Exponential Backoff

Specifies whether to use a pre-defined exponential backoff strategy for retries. When enabled, 'Retry Delay (ms)' is ignored.

false

{
"data": {
"code": 0,
"message": "success",
"contacts": [
{
"contact_id": "5394166000000379001",
"contact_name": "Acme Corporation",
"company_name": "Acme Corporation",
"contact_type": "customer",
"status": "active",
"email": "john.doe@acme.example.com",
"phone": "+1-415-555-0123",
"created_time": "2024-01-15T10:30:00-0800",
"last_modified_time": "2024-01-15T14:22:10-0800"
}
],
"page_context": {
"page": 1,
"per_page": 200,
"has_more_page": false,
"report_name": "Contacts"
}
}
}

Books - Remove Record

Remove a Zoho Books Record | key: booksRemoveRecord

InputNotesExample
Connection

The Zoho connection to use.

Parent Record ID

The unique identifier of the parent record under which other records are grouped.

5394166000000379001
Parent Record Type

The type of Books record to operate on. See Zoho Books API for details.

Record ID

The unique identifier of the record in Zoho.

5394166000000379001
Record Type

The type of Books record to operate on. See Zoho Books API for details.

{
"data": {
"code": 0,
"message": "The contact has been deleted."
}
}

Books - Update Record

Update a Zoho Books Record | key: booksUpdateRecord

InputNotesExample
Connection

The Zoho connection to use.

Dynamic Fields

Dynamic input fields that can be configured at deploy time using key-value config variables.

Values

Key-value pairs representing field names and their values for creating or updating records.

{ "Last_Name": "Doe", "Email": "john.doe@example.com" }
Parent Record ID

The unique identifier of the parent record under which other records are grouped.

5394166000000379001
Parent Record Type

The type of Books record to operate on. See Zoho Books API for details.

Record ID

The unique identifier of the record in Zoho.

5394166000000379001
Record Type

The type of Books record to operate on. See Zoho Books API for details.

{
"data": {
"code": 0,
"message": "The contact details have been updated.",
"contact": {
"contact_id": "5394166000000379001",
"contact_name": "Acme Corporation",
"company_name": "Acme Corporation",
"contact_type": "customer",
"customer_sub_type": "business",
"status": "active",
"payment_terms": 45,
"payment_terms_label": "Net 45",
"currency_id": "5394166000000000097",
"currency_code": "USD",
"first_name": "John",
"last_name": "Doe",
"email": "john.doe@acme.example.com",
"phone": "+1-415-555-0123",
"billing_address": {
"address": "456 Mission Street",
"city": "San Francisco",
"state": "California",
"zip": "94105",
"country": "United States"
},
"created_time": "2024-01-15T10:30:00-0800",
"last_modified_time": "2024-01-15T14:22:10-0800"
}
}
}

CRM - Add attachment

Add an attachment to a Zoho CRM record (Lead, etc). | key: crmAddAttachment

InputNotesExample
Connection

The Zoho connection to use.

File

The file to upload - either string contents or a binary file

File Name

The name of the file to upload, including extension.

document.pdf
Record ID

The unique identifier of the record in Zoho.

5394166000000379001
Record Type

Type of record to attach a file to

Leads

{
"data": {
"data": [
{
"code": "SUCCESS",
"details": {
"Modified_Time": "2024-01-15T10:30:00-08:00",
"Modified_By": {
"name": "Patricia Boyle",
"id": "5394166000000235011"
},
"Created_Time": "2024-01-15T10:30:00-08:00",
"id": "5394166000000527036",
"Created_By": {
"name": "Patricia Boyle",
"id": "5394166000000235011"
}
},
"message": "attachment uploaded successfully",
"status": "success"
}
]
}
}

CRM - COQL Query

Run a COQL Query for Zoho CRM | key: crmRunQuery

InputNotesExample
Connection

The Zoho connection to use.

Query

COQL query to execute. See Zoho COQL documentation for syntax.

select Last_Name, Email from Contacts where Last_Name is not null

{
"data": {
"data": [
{
"Last_Name": "Doe",
"Email": "john.doe@example.com",
"id": "5394166000000379001"
},
{
"Last_Name": "Smith",
"Email": "jane.smith@example.com",
"id": "5394166000000379002"
}
],
"info": {
"count": 2,
"more_records": false
}
}
}

CRM - Create Record

Create a Zoho CRM Record | key: crmCreateRecord

InputNotesExample
Connection

The Zoho connection to use.

Dynamic Fields

Dynamic input fields that can be configured at deploy time using key-value config variables.

Values

Key-value pairs representing field names and their values for creating or updating records.

{ "Last_Name": "Doe", "Email": "john.doe@example.com" }
Record Type

The type of CRM record to operate on. See Zoho CRM Modules for details.

{
"data": {
"data": [
{
"code": "SUCCESS",
"details": {
"Modified_Time": "2024-01-15T10:30:00-08:00",
"Modified_By": {
"name": "Patricia Boyle",
"id": "5394166000000235011"
},
"Created_Time": "2024-01-15T10:30:00-08:00",
"id": "5394166000000379001",
"Created_By": {
"name": "Patricia Boyle",
"id": "5394166000000235011"
},
"$approval_state": "approved"
},
"message": "record added",
"status": "success"
}
]
}
}

CRM - Disable Notification

Stop all instant notifications enabled for the specified channels. | key: crmDisableNotification

InputNotesExample
Channel IDs

Comma-separated channel IDs to disable. These are the IDs you provided when enabling the notification channels.

123456789,987654321
Connection

The Zoho connection to use.

{
"data": {
"watch": [
{
"code": "SUCCESS",
"details": {
"resource_uri": "https://www.zohoapis.com/crm/v8/Contacts",
"resource_id": "554023000000000129",
"channel_id": "10000"
},
"message": "Successfully un-subscribed from actions-watch",
"status": "success"
},
{
"code": "SUCCESS",
"details": {
"resource_uri": "https://www.zohoapis.com/crm/v8/Deals",
"resource_id": "554023000000000131",
"channel_id": "10000"
},
"message": "Successfully un-subscribed from actions-watch",
"status": "success"
}
]
}
}

CRM - Disable Specific Notification

Disable notifications for specific events in a channel without disabling the entire channel. | key: crmDisableSpecificNotification

InputNotesExample
Channel ID

User-defined unique numeric identifier for the notification channel. You create this ID when enabling notifications and use it to reference the channel in subsequent operations. Must be a number.

123456789
Connection

The Zoho connection to use.

Events

Subscribed operations in format "{module}.{operation}". Operations: create, edit, delete, all.

Notify On Related Action

When true, triggers notifications when associated record actions occur.

true

{
"data": {
"watch": [
{
"code": "SUCCESS",
"details": {
"events": [
{
"resource_uri": "https://www.zohoapis.com/crm/v8/Contacts",
"resource_id": "554023000000000129",
"resource_name": "Contacts",
"channel_id": "10000"
}
]
},
"message": "Successfully removed the subscribe details",
"status": "success"
}
]
}
}

CRM - Enable Notification

Enable instant notifications for actions on a Zoho CRM module. | key: crmEnableNotification

InputNotesExample
Channel Expiry

ISO datetime for expiry. Maximum 1 week from now. Default is 1 hour.

2024-12-31T23:59:59Z
Channel ID

User-defined unique numeric identifier for the notification channel. You create this ID when enabling notifications and use it to reference the channel in subsequent operations. Must be a number.

123456789
Connection

The Zoho connection to use.

Events

Subscribed operations in format "{module}.{operation}". Operations: create, edit, delete, all.

Notification Condition

Filter notifications by specific field changes. Provide field API names to watch.

Notify On Related Action

When true, triggers notifications when associated record actions occur.

true
Notify URL

The URL that will receive POST notifications about the actions.

https://example.com/webhook
Return Affected Field Values

When true, includes updated field values in the notification callback.

false
Token

Verification token (max 50 chars) sent in callbacks to verify notifications are from Zoho CRM.

my_verification_token_123

{
"data": {
"watch": [
{
"code": "SUCCESS",
"details": {
"events": [
{
"channel_expiry": "2023-08-02T16:59:50-11:00",
"resource_uri": "https://www.zohoapis.com/crm/v8/Deals",
"resource_id": "554023000000000131",
"resource_name": "Deals",
"channel_id": "10000"
}
]
},
"message": "Successfully subscribed for actions-watch of the given module",
"status": "success"
}
]
}
}

CRM - Get Notification Details

Retrieve the details of notifications enabled for a specific channel. | key: crmGetNotificationDetails

InputNotesExample
Channel ID

User-defined unique numeric identifier for the notification channel. You create this ID when enabling notifications and use it to reference the channel in subsequent operations. Must be a number.

123456789
Connection

The Zoho connection to use.

Fetch All

When true, automatically fetches all pages of results using pagination.

false
Module

API name of the module (e.g., Leads, Deals, Contacts). Leave empty to get all modules.

Leads
Page

The page number to start at. First page is 1.

1
Per Page

The number of records to fetch per page. Maximum is 200.

200

{
"data": {
"watch": [
{
"notify_on_related_action": false,
"channel_expiry": "2023-08-02T16:51:03-11:00",
"return_affected_field_values": false,
"resource_uri": "https://www.zohoapis.com/crm/v8/Leads",
"resource_id": "554023000000000125",
"notify_url": "https://webhook.site/2c9xxx0fa9",
"resource_name": "Leads",
"fields": null,
"notification_condition": [
{
"field_selection": {
"group_operator": "and",
"group": [
{
"field": {
"api_name": "Last_Name",
"id": "554023000000000559"
},
"group_operator": null,
"group": null
},
{
"field": {
"api_name": "Full_Name",
"id": "554023000000000597"
},
"group_operator": null,
"group": null
}
]
},
"module": {
"api_name": "Leads",
"id": "554023000000000125"
},
"type": "field_selection"
}
],
"channel_id": "1000000068001",
"events": [
"Leads.edit",
"Leads.create",
"Leads.delete"
],
"token": "xyz"
},
{
"notify_on_related_action": false,
"channel_expiry": "2023-08-11T02:12:33-11:00",
"return_affected_field_values": false,
"resource_uri": "https://www.zohoapis.com/crm/v8/Contacts",
"resource_id": "554023000000000129",
"notify_url": "https://webhook.site/2c9axx20fa9",
"resource_name": "Contacts",
"fields": null,
"notification_condition": null,
"channel_id": "10000",
"events": [
"Contacts.create"
],
"token": "deals.all.notif"
},
{
"notify_on_related_action": false,
"channel_expiry": "2023-08-11T02:13:01-11:00",
"return_affected_field_values": false,
"resource_uri": "https://www.zohoapis.com/crm/v8/Deals",
"resource_id": "554023000000000131",
"notify_url": "https://webhook.site/2c9a0xx20fa9",
"resource_name": "Deals",
"fields": null,
"notification_condition": [
{
"field_selection": {
"group_operator": "or",
"group": [
{
"field": {
"api_name": "Stage",
"id": "554023000000000525"
},
"group_operator": null,
"group": null
},
{
"group_operator": "or",
"group": [
{
"field": {
"api_name": "Account_Name",
"id": "554023000000000523"
},
"group_operator": null,
"group": null
},
{
"field": {
"api_name": "Lead_Source",
"id": "554023000000000535"
},
"group_operator": null,
"group": null
}
]
}
]
},
"module": {
"api_name": "Deals",
"id": "554023000000000131"
},
"type": "field_selection"
}
],
"channel_id": "10000",
"events": [
"Deals.edit",
"Deals.create",
"Deals.delete"
],
"token": "deals.all.notif"
}
],
"info": {
"per_page": 200,
"count": 3,
"page": 1,
"more_records": false
}
}
}

CRM - Get Record

Get a single Zoho CRM Record | key: crmGetRecord

InputNotesExample
Connection

The Zoho connection to use.

Fields

The field names to retrieve. Leave empty to retrieve all fields.

Last_Name
Record ID

The unique identifier of the record in Zoho.

5394166000000379001
Record Type

The type of CRM record to operate on. See Zoho CRM Modules for details.

{
"data": {
"data": [
{
"id": "5394166000000379001",
"Owner": {
"name": "Patricia Boyle",
"id": "5394166000000235011",
"email": "patricia.boyle@example.com"
},
"Email": "john.doe@example.com",
"$currency_symbol": "$",
"$field_states": null,
"Other_Phone": null,
"Mailing_State": "California",
"Other_State": null,
"Other_Country": null,
"Last_Activity_Time": "2024-01-15T14:22:10-08:00",
"Department": "Sales",
"$state": "save",
"$process_flow": false,
"Assistant": null,
"Mailing_Country": "United States",
"$locked_for_me": false,
"$approved": true,
"Reporting_To": null,
"$approval": {
"delegate": false,
"approve": false,
"reject": false,
"resubmit": false
},
"Other_City": null,
"Created_Time": "2024-01-15T10:30:00-08:00",
"$editable": true,
"Home_Phone": null,
"Created_By": {
"name": "Patricia Boyle",
"id": "5394166000000235011",
"email": "patricia.boyle@example.com"
},
"$zia_owner_assignment": "owner_recommendation_unavailable",
"Secondary_Email": null,
"Description": "Key contact for enterprise account",
"Vendor_Name": null,
"Mailing_Zip": "94105",
"$review_process": null,
"Twitter": null,
"Other_Zip": null,
"Mailing_Street": "123 Market Street",
"Salutation": "Mr.",
"First_Name": "John",
"Full_Name": "John Doe",
"Asst_Phone": null,
"Record_Image": null,
"Modified_By": {
"name": "Patricia Boyle",
"id": "5394166000000235011",
"email": "patricia.boyle@example.com"
},
"$review": null,
"Phone": "+1-415-555-0123",
"Account_Name": {
"name": "Acme Corporation",
"id": "5394166000000378001"
},
"Email_Opt_Out": false,
"Modified_Time": "2024-01-15T14:22:10-08:00",
"Date_of_Birth": null,
"Mailing_City": "San Francisco",
"Unsubscribed_Mode": null,
"Unsubscribed_Time": null,
"Title": "Senior Account Executive",
"Other_Street": null,
"Mobile": "+1-415-555-0124",
"$orchestration": false,
"Last_Name": "Doe",
"$in_merge": false,
"$approval_state": "approved"
}
],
"info": {
"per_page": 200,
"count": 1,
"page": 1,
"more_records": false
}
}
}

CRM - Get Records

Get a collection of Zoho CRM Records | key: crmGetRecords

InputNotesExample
Connection

The Zoho connection to use.

Fetch All

When true, automatically fetches all pages of results using pagination.

false
Fields

The field names to retrieve. Leave empty to retrieve all fields.

Last_Name
Page

The page number to start at. First page is 1.

1
Page Token

Token used for cursor based pagination. Obtained from previous response.

187d2af1e9c50119e
Per Page

The number of records to fetch per page. Maximum is 200.

200
Record Type

The type of CRM record to operate on. See Zoho CRM Modules for details.

Sort By

The field to sort results by.

Sort Order

The order in which to sort the results.

{
"data": {
"data": [
{
"id": "5394166000000379001",
"Owner": {
"name": "Patricia Boyle",
"id": "5394166000000235011",
"email": "patricia.boyle@example.com"
},
"Email": "john.doe@example.com",
"First_Name": "John",
"Last_Name": "Doe",
"Full_Name": "John Doe",
"Phone": "+1-415-555-0123",
"Mobile": "+1-415-555-0124",
"Created_Time": "2024-01-15T10:30:00-08:00",
"Modified_Time": "2024-01-15T14:22:10-08:00",
"$approval_state": "approved"
},
{
"id": "5394166000000379002",
"Owner": {
"name": "Patricia Boyle",
"id": "5394166000000235011",
"email": "patricia.boyle@example.com"
},
"Email": "jane.smith@example.com",
"First_Name": "Jane",
"Last_Name": "Smith",
"Full_Name": "Jane Smith",
"Phone": "+1-415-555-0125",
"Mobile": "+1-415-555-0126",
"Created_Time": "2024-01-14T09:15:00-08:00",
"Modified_Time": "2024-01-15T11:45:30-08:00",
"$approval_state": "approved"
}
],
"info": {
"per_page": 200,
"count": 2,
"page": 1,
"more_records": false
}
}
}

CRM - Raw Request

Send raw HTTP request to Zoho CRM | key: crmRawRequest

InputNotesExample
Connection

The Zoho connection to use.

Data

The HTTP body payload to send to the URL.

{"exampleKey": "Example Data"}
File Data

File Data to be sent as a multipart form upload.

[{key: "example.txt", value: "My File Contents"}]
File Data File Names

File names to apply to the file data inputs. Keys must match the file data keys above.

Form Data

The Form Data to be sent as a multipart form upload.

[{"key": "Example Key", "value": new Buffer("Hello World")}]
Header

A list of headers to send with the request.

User-Agent: curl/7.64.1
Max Retry Count

The maximum number of retries to attempt. Specify 0 for no retries.

0
Method

The HTTP method to use.

Query Parameter

A list of query parameters to send with the request. This is the portion at the end of the URL similar to ?key1=value1&key2=value2.

Response Type

The type of data you expect in the response. You can request json, text, or binary data.

json
Retry On All Errors

If true, retries on all erroneous responses regardless of type. This is helpful when retrying after HTTP 429 or other 3xx or 4xx errors. Otherwise, only retries on HTTP 5xx and network errors.

false
Retry Delay (ms)

The delay in milliseconds between retries. This is used when 'Use Exponential Backoff' is disabled.

0
Timeout

The maximum time that a client will await a response to its request

2000
URL

Input the path only (/Leads/1234567890/actions/convert), The base URL is already included (https://www.zohoapis.{api_domain}/crm/v8). For example, to connect to https://www.zohoapis.{api_domain}/crm/v8/Leads/1234567890/actions/convert, only /Leads/1234567890/actions/convert is entered in this field.

/Leads/1234567890/actions/convert
Use Exponential Backoff

Specifies whether to use a pre-defined exponential backoff strategy for retries. When enabled, 'Retry Delay (ms)' is ignored.

false

{
"data": {
"data": [
{
"id": "5394166000000379001",
"Last_Name": "Doe",
"First_Name": "John",
"Email": "john.doe@example.com",
"Created_Time": "2024-01-15T10:30:00-08:00",
"Modified_Time": "2024-01-15T14:22:10-08:00"
}
],
"info": {
"per_page": 200,
"count": 1,
"page": 1,
"more_records": false
}
}
}

CRM - Remove Record

Remove a Zoho CRM Record | key: crmRemoveRecord

InputNotesExample
Connection

The Zoho connection to use.

Record ID

The unique identifier of the record in Zoho.

5394166000000379001
Record Type

The type of CRM record to operate on. See Zoho CRM Modules for details.

{
"data": {
"data": [
{
"code": "SUCCESS",
"details": {
"id": "5394166000000379001"
},
"message": "record deleted",
"status": "success"
}
]
}
}

CRM - Update Notification

Update specific information of a notification enabled for a channel. | key: crmUpdateNotification

InputNotesExample
Channel Expiry

ISO datetime for expiry. Maximum 1 week from now. Default is 1 hour.

2024-12-31T23:59:59Z
Channel ID

User-defined unique numeric identifier for the notification channel. You create this ID when enabling notifications and use it to reference the channel in subsequent operations. Must be a number.

123456789
Connection

The Zoho connection to use.

Events

Subscribed operations in format "{module}.{operation}". Operations: create, edit, delete, all.

Notification Condition

Filter notifications by specific field changes. Provide field API names to watch.

Notify URL

The URL that will receive POST notifications about the actions.

https://example.com/webhook
Token

Verification token (max 50 chars) sent in callbacks to verify notifications are from Zoho CRM.

my_verification_token_123

{
"data": {
"watch": [
{
"code": "SUCCESS",
"details": {
"events": [
{
"channel_expiry": "2023-08-02T16:59:50-11:00",
"resource_uri": "https://www.zohoapis.com.com/crm/v2/Deals",
"resource_id": "554023000000000131",
"resource_name": "Deals",
"channel_id": "10000"
}
]
},
"message": "Successfully updated the subscribe details",
"status": "success"
}
]
}
}

CRM - Update Record

Update a Zoho CRM Record | key: crmUpdateRecord

InputNotesExample
Connection

The Zoho connection to use.

Dynamic Fields

Dynamic input fields that can be configured at deploy time using key-value config variables.

Values

Key-value pairs representing field names and their values for creating or updating records.

{ "Last_Name": "Doe", "Email": "john.doe@example.com" }
Record ID

The unique identifier of the record in Zoho.

5394166000000379001
Record Type

The type of CRM record to operate on. See Zoho CRM Modules for details.

{
"data": {
"data": [
{
"code": "SUCCESS",
"details": {
"Modified_Time": "2024-01-15T14:22:10-08:00",
"Modified_By": {
"name": "Patricia Boyle",
"id": "5394166000000235011"
},
"Created_Time": "2024-01-15T10:30:00-08:00",
"id": "5394166000000379001",
"Created_By": {
"name": "Patricia Boyle",
"id": "5394166000000235011"
}
},
"message": "record updated",
"status": "success"
}
]
}
}

Changelog

2024-12-02

Added the following new triggers to poll for record changes:

  • New and Updated CRM Contacts trigger - Detects new and updated contacts in Zoho CRM on a configured schedule
  • New and Updated CRM Leads trigger - Detects new and updated leads in Zoho CRM on a configured schedule
  • New and Updated Books Contacts trigger - Detects new and updated contacts in Zoho Books on a configured schedule Added the following notification management actions:
  • CRM - Notifications Trigger - Receives real time notifications from Zoho CRM when specified events occur, automatically managing notification channel subscriptions on instance deploy and delete
  • CRM - Enable Notification action - Enables instant notifications for actions on Zoho CRM modules
  • CRM - Disable Notification action - Disables notification channels for Zoho CRM modules
  • CRM - Get Notification Details action - Retrieves notification channel configuration and status
  • CRM - Update Notification action - Updates notification channel settings and event subscriptions
  • CRM - Disable Specific Notification action - Disables specific notification events while keeping the channel active