Zoho Component
Manage records, contacts, and transactions in Zoho CRM and Books
Component key: zoho
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)
| Input | Notes | Example |
|---|---|---|
| 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
- Access to the Zoho Developer Console
- A Zoho account with appropriate permissions to create OAuth clients
- Knowledge of which Zoho region the account is hosted in (see Zoho region information)
Setup Steps
- Log in to the Zoho Developer Console
- Click ADD CLIENT
- Select Server-based Applications as the client type
- 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
- Click CREATE to generate the client
- 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.
- United States:
-
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
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:

| Input | Notes | Example |
|---|---|---|
| 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
| Input | Notes | Example |
|---|---|---|
| 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 creatededit- Record updateddelete- Record deletedall- 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"
}
}
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
| Input | Notes | Example |
|---|---|---|
| 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
- Run on the configured schedule (e.g., every 5 minutes)
- Fetch contacts from Zoho Books sorted by
last_modified_time - Categorize records as "created" or "updated" based on
created_timevslast_modified_timetimestamps - 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
| Input | Notes | Example |
|---|---|---|
| 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:
- Run on the configured schedule (e.g., every 5 minutes)
- Fetch records from Zoho CRM sorted by
Modified_Time - Categorize records as "created" or "updated" based on
Created_TimevsModified_Timetimestamps - 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
| Input | Notes | Example |
|---|---|---|
| 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
| Input | Notes | Example |
|---|---|---|
| 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
| Input | Notes | Example |
|---|---|---|
| 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
| Input | Notes | Example |
|---|---|---|
| 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
| Input | Notes | Example |
|---|---|---|
| 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
| Input | Notes | Example |
|---|---|---|
| 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
| Input | Notes | Example |
|---|---|---|
| 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
| Input | Notes | Example |
|---|---|---|
| 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
| Input | Notes | Example |
|---|---|---|
| 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
| Input | Notes | Example |
|---|---|---|
| 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
| Input | Notes | Example |
|---|---|---|
| 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
| Input | Notes | Example |
|---|---|---|
| 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
| Input | Notes | Example |
|---|---|---|
| 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
| Input | Notes | Example |
|---|---|---|
| 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
| Input | Notes | Example |
|---|---|---|
| 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
| Input | Notes | Example |
|---|---|---|
| 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
| Input | Notes | Example |
|---|---|---|
| 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
| Input | Notes | Example |
|---|---|---|
| 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
| Input | Notes | Example |
|---|---|---|
| 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
| Input | Notes | Example |
|---|---|---|
| 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