Reference · Tools

Zoho CRM

Interact with the Zoho CRM API v2 to manage accounts, contacts, deals, leads, invoices, products, purchase orders, quotes, sales orders, and vendors.

Action Sales v1

The Zoho CRM node performs CRUD across the CRM's records — accounts, contacts, deals, leads, invoices, products, purchase orders, quotes, sales orders and vendors — through API v2. A typical build is creating a lead from an inbound enquiry and converting it into a deal against the right account.

Node type
Action
Parameters
35
Outputs
Output, Error
Credentials
Zoho OAuth2

Zoho CRM

Manage Zoho CRM records: accounts, contacts, deals, leads, invoices, products, purchase orders, quotes, sales orders, vendors.

Overview

Zoho CRM is a cloud-based customer relationship management platform. This tool provides full CRUD and upsert operations across 10 CRM modules (accounts, contacts, deals, leads, invoices, products, purchase orders, quotes, sales orders, vendors) using the Zoho CRM API v2. Supports regional data centers (.com, .eu, .in, .com.au, .jp), OAuth2 authentication with automatic token refresh, pagination for listing operations, custom fields, address field flattening, and date formatting. All write operations wrap payloads in the Zoho data array format. Pagination uses page-based approach with per_page=200.

Category: Sales
Tool Name: zoho
Version: 1

Appearance: Icon: si-zoho | Color: #CE2232

Node Type

Action — processes input items and produces output

Input / Output

DirectionPort(s)
InputInput
OutputOutput, Error

Credentials

This tool requires Zoho OAuth2 credentials. See the Credentials Guide for setup instructions.

Resources

ResourceValue
Accountaccount
Contactcontact
Dealdeal
Invoiceinvoice
Leadlead
Productproduct
Purchase OrderpurchaseOrder
Quotequote
Sales OrdersalesOrder
Vendorvendor

Operations

Which operations are available depends on the selected resource — see the parameter subsections below.

OperationValueDescription
CreatecreateAdd a new record to the selected module.
Create or UpdateupsertCreate the record, or update the existing one when Zoho finds a match.
DeletedeleteRemove a record by its ID.
GetgetRetrieve a single record by its ID.
Get ManygetAllList records from the module, with optional field selection, sorting and paging.
UpdateupdateChange fields on an existing record, identified by its ID.
Get FieldsgetFieldsRetrieve the module’s field definitions. Offered by the Lead resource only.

Parameters

Which parameters appear depends on the resource and the operation you pick. Lead: Get Fields takes no parameters of its own — see All Operations.

Every field below takes a literal value. To drive a record’s name, subject, stage or ID from the incoming data instead, leave that field blank: the node then reads the matching key from the input item’s JSON — an empty Deal ID picks up dealId, an empty Account Name picks up accountName, and so on. This fallback covers the per-resource name, subject, stage and ID fields only. Products, Additional Fields, Update Fields, Return All, Limit and Options always use the value configured on the node.

Account: Create

ParameterTypeRequiredDefaultDescription
Account NamestringYesName of the account.
Additional FieldsjsonNo{}Additional fields for the record. Keys should match Zoho CRM API field names (e.g. Email, Phone, Description, Billing_Address, etc). Address fields should be nested objects with address_fields property.

Account: Create or Update

ParameterTypeRequiredDefaultDescription
Account NamestringYesName of the account.
Additional FieldsjsonNo{}Additional fields for the record. Keys should match Zoho CRM API field names (e.g. Email, Phone, Description, Billing_Address, etc). Address fields should be nested objects with address_fields property.

Account: Delete

ParameterTypeRequiredDefaultDescription
Account IDstringYesID of the account. Can be found at the end of the URL.

Account: Get

ParameterTypeRequiredDefaultDescription
Account IDstringYesID of the account. Can be found at the end of the URL.

Account: Get Many

ParameterTypeRequiredDefaultDescription
Return AllbooleanNofalseWhether to return all results or only up to a given limit.
LimitnumberNo5Max number of results to return. (shown when Return All is false)
OptionsjsonNo{}GetAll filter options. Supported keys: fields (comma-separated string or array), sort_by (field API name), sort_order (asc/desc), approved (boolean), converted (boolean), include_child (boolean), territory_id (string).

Account: Update

ParameterTypeRequiredDefaultDescription
Account IDstringYesID of the account. Can be found at the end of the URL.
Update FieldsjsonNo{}Fields to update. Keys should match Zoho CRM API field names. At least one field is required.

Contact: Create

ParameterTypeRequiredDefaultDescription
Last NamestringYesLast name of the contact.
Additional FieldsjsonNo{}Additional fields for the record. Keys should match Zoho CRM API field names (e.g. Email, Phone, Description, Billing_Address, etc). Address fields should be nested objects with address_fields property.

Contact: Create or Update

ParameterTypeRequiredDefaultDescription
Last NamestringYesLast name of the contact.
Additional FieldsjsonNo{}Additional fields for the record. Keys should match Zoho CRM API field names (e.g. Email, Phone, Description, Billing_Address, etc). Address fields should be nested objects with address_fields property.

Contact: Delete

ParameterTypeRequiredDefaultDescription
Contact IDstringYesID of the contact.

Contact: Get

ParameterTypeRequiredDefaultDescription
Contact IDstringYesID of the contact.

Contact: Get Many

ParameterTypeRequiredDefaultDescription
Return AllbooleanNofalseWhether to return all results or only up to a given limit.
LimitnumberNo5Max number of results to return. (shown when Return All is false)
OptionsjsonNo{}GetAll filter options. Supported keys: fields (comma-separated string or array), sort_by (field API name), sort_order (asc/desc), approved (boolean), converted (boolean), include_child (boolean), territory_id (string).

Contact: Update

ParameterTypeRequiredDefaultDescription
Contact IDstringYesID of the contact.
Update FieldsjsonNo{}Fields to update. Keys should match Zoho CRM API field names. At least one field is required.

Deal: Create

ParameterTypeRequiredDefaultDescription
Deal NamestringYesName of the deal.
StagestringYesStage of the deal. Find available stages in Zoho CRM Settings > Customization > Stage-Probability Mapping.
Additional FieldsjsonNo{}Additional fields for the record. Keys should match Zoho CRM API field names (e.g. Email, Phone, Description, Billing_Address, etc). Address fields should be nested objects with address_fields property.

Deal: Create or Update

ParameterTypeRequiredDefaultDescription
Deal NamestringYesName of the deal.
StagestringYesStage of the deal. Find available stages in Zoho CRM Settings > Customization > Stage-Probability Mapping.
Additional FieldsjsonNo{}Additional fields for the record. Keys should match Zoho CRM API field names (e.g. Email, Phone, Description, Billing_Address, etc). Address fields should be nested objects with address_fields property.

Deal: Delete

ParameterTypeRequiredDefaultDescription
Deal IDstringYesID of the deal.

Deal: Get

ParameterTypeRequiredDefaultDescription
Deal IDstringYesID of the deal.

Deal: Get Many

ParameterTypeRequiredDefaultDescription
Return AllbooleanNofalseWhether to return all results or only up to a given limit.
LimitnumberNo5Max number of results to return. (shown when Return All is false)
OptionsjsonNo{}GetAll filter options. Supported keys: fields (comma-separated string or array), sort_by (field API name), sort_order (asc/desc), approved (boolean), converted (boolean), include_child (boolean), territory_id (string).

Deal: Update

ParameterTypeRequiredDefaultDescription
Deal IDstringYesID of the deal.
Update FieldsjsonNo{}Fields to update. Keys should match Zoho CRM API field names. At least one field is required.

Invoice: Create

ParameterTypeRequiredDefaultDescription
SubjectstringYesSubject or title of the invoice.
ProductsjsonNo[]Array of product detail objects. Each must include “id” (product ID) and “quantity”. Example: [{“id”:“123”,“quantity”:2,“list_price”:100}]
Additional FieldsjsonNo{}Additional fields for the record. Keys should match Zoho CRM API field names (e.g. Email, Phone, Description, Billing_Address, etc). Address fields should be nested objects with address_fields property.

At least one product is required — an invoice with an empty Products array fails before the request is sent.

Invoice: Create or Update

ParameterTypeRequiredDefaultDescription
SubjectstringYesSubject or title of the invoice.
ProductsjsonNo[]Array of product detail objects. Each must include “id” (product ID) and “quantity”. Example: [{“id”:“123”,“quantity”:2,“list_price”:100}]
Additional FieldsjsonNo{}Additional fields for the record. Keys should match Zoho CRM API field names (e.g. Email, Phone, Description, Billing_Address, etc). Address fields should be nested objects with address_fields property.

At least one product is required here too.

Invoice: Delete

ParameterTypeRequiredDefaultDescription
Invoice IDstringYesID of the invoice.

Invoice: Get

ParameterTypeRequiredDefaultDescription
Invoice IDstringYesID of the invoice.

Invoice: Get Many

ParameterTypeRequiredDefaultDescription
Return AllbooleanNofalseWhether to return all results or only up to a given limit.
LimitnumberNo5Max number of results to return. (shown when Return All is false)
OptionsjsonNo{}GetAll filter options. Supported keys: fields (comma-separated string or array), sort_by (field API name), sort_order (asc/desc), approved (boolean), converted (boolean), include_child (boolean), territory_id (string).

Invoice: Update

ParameterTypeRequiredDefaultDescription
Invoice IDstringYesID of the invoice.
Update FieldsjsonNo{}Fields to update. Keys should match Zoho CRM API field names. At least one field is required.

Lead: Create

ParameterTypeRequiredDefaultDescription
CompanystringYesCompany at which the lead works.
Last NamestringYesLast name of the lead.
Additional FieldsjsonNo{}Additional fields for the record. Keys should match Zoho CRM API field names (e.g. Email, Phone, Description, Billing_Address, etc). Address fields should be nested objects with address_fields property.

Lead: Create or Update

ParameterTypeRequiredDefaultDescription
CompanystringYesCompany at which the lead works.
Last NamestringYesLast name of the lead.
Additional FieldsjsonNo{}Additional fields for the record. Keys should match Zoho CRM API field names (e.g. Email, Phone, Description, Billing_Address, etc). Address fields should be nested objects with address_fields property.

Lead: Delete

ParameterTypeRequiredDefaultDescription
Lead IDstringYesID of the lead.

Lead: Get

ParameterTypeRequiredDefaultDescription
Lead IDstringYesID of the lead.

Lead: Get Many

ParameterTypeRequiredDefaultDescription
Return AllbooleanNofalseWhether to return all results or only up to a given limit.
LimitnumberNo5Max number of results to return. (shown when Return All is false)
OptionsjsonNo{}GetAll filter options. Supported keys: fields (comma-separated string or array), sort_by (field API name), sort_order (asc/desc), approved (boolean), converted (boolean), include_child (boolean), territory_id (string).

Lead: Update

ParameterTypeRequiredDefaultDescription
Lead IDstringYesID of the lead.
Update FieldsjsonNo{}Fields to update. Keys should match Zoho CRM API field names. At least one field is required.

Product: Create

ParameterTypeRequiredDefaultDescription
Product NamestringYesName of the product.
Additional FieldsjsonNo{}Additional fields for the record. Keys should match Zoho CRM API field names (e.g. Email, Phone, Description, Billing_Address, etc). Address fields should be nested objects with address_fields property.

Product: Create or Update

ParameterTypeRequiredDefaultDescription
Product NamestringYesName of the product.
Additional FieldsjsonNo{}Additional fields for the record. Keys should match Zoho CRM API field names (e.g. Email, Phone, Description, Billing_Address, etc). Address fields should be nested objects with address_fields property.

Product: Delete

ParameterTypeRequiredDefaultDescription
Product IDstringYesID of the product.

Product: Get

ParameterTypeRequiredDefaultDescription
Product IDstringYesID of the product.

Product: Get Many

ParameterTypeRequiredDefaultDescription
Return AllbooleanNofalseWhether to return all results or only up to a given limit.
LimitnumberNo5Max number of results to return. (shown when Return All is false)
OptionsjsonNo{}GetAll filter options. Supported keys: fields (comma-separated string or array), sort_by (field API name), sort_order (asc/desc), approved (boolean), converted (boolean), include_child (boolean), territory_id (string).

Product: Update

ParameterTypeRequiredDefaultDescription
Product IDstringYesID of the product.
Update FieldsjsonNo{}Fields to update. Keys should match Zoho CRM API field names. At least one field is required.

Purchase Order: Create

ParameterTypeRequiredDefaultDescription
ProductsjsonNo[]Array of product detail objects. Each must include “id” (product ID) and “quantity”. Example: [{“id”:“123”,“quantity”:2,“list_price”:100}]
SubjectstringYesSubject or title of the purchase order.
Vendor IDstringYesID of the vendor for the purchase order. Find in Zoho CRM under Vendors.
Additional FieldsjsonNo{}Additional fields for the record. Keys should match Zoho CRM API field names (e.g. Email, Phone, Description, Billing_Address, etc). Address fields should be nested objects with address_fields property.

At least one product is required — a purchase order with an empty Products array fails before the request is sent.

Purchase Order: Create or Update

ParameterTypeRequiredDefaultDescription
ProductsjsonNo[]Array of product detail objects. Each must include “id” (product ID) and “quantity”. Example: [{“id”:“123”,“quantity”:2,“list_price”:100}]
SubjectstringYesSubject or title of the purchase order.
Vendor IDstringYesID of the vendor for the purchase order. Find in Zoho CRM under Vendors.
Additional FieldsjsonNo{}Additional fields for the record. Keys should match Zoho CRM API field names (e.g. Email, Phone, Description, Billing_Address, etc). Address fields should be nested objects with address_fields property.

Purchase Order: Delete

ParameterTypeRequiredDefaultDescription
Purchase Order IDstringYesID of the purchase order.

Purchase Order: Get

ParameterTypeRequiredDefaultDescription
Purchase Order IDstringYesID of the purchase order.

Purchase Order: Get Many

ParameterTypeRequiredDefaultDescription
Return AllbooleanNofalseWhether to return all results or only up to a given limit.
LimitnumberNo5Max number of results to return. (shown when Return All is false)
OptionsjsonNo{}GetAll filter options. Supported keys: fields (comma-separated string or array), sort_by (field API name), sort_order (asc/desc), approved (boolean), converted (boolean), include_child (boolean), territory_id (string).

Purchase Order: Update

ParameterTypeRequiredDefaultDescription
Purchase Order IDstringYesID of the purchase order.
Update FieldsjsonNo{}Fields to update. Keys should match Zoho CRM API field names. At least one field is required.

Quote: Create

ParameterTypeRequiredDefaultDescription
ProductsjsonNo[]Array of product detail objects. Each must include “id” (product ID) and “quantity”. Example: [{“id”:“123”,“quantity”:2,“list_price”:100}]
SubjectstringYesSubject or title of the quote.
Additional FieldsjsonNo{}Additional fields for the record. Keys should match Zoho CRM API field names (e.g. Email, Phone, Description, Billing_Address, etc). Address fields should be nested objects with address_fields property.

At least one product is required — a quote with an empty Products array fails before the request is sent.

Quote: Create or Update

ParameterTypeRequiredDefaultDescription
ProductsjsonNo[]Array of product detail objects. Each must include “id” (product ID) and “quantity”. Example: [{“id”:“123”,“quantity”:2,“list_price”:100}]
SubjectstringYesSubject or title of the quote.
Additional FieldsjsonNo{}Additional fields for the record. Keys should match Zoho CRM API field names (e.g. Email, Phone, Description, Billing_Address, etc). Address fields should be nested objects with address_fields property.

Quote: Delete

ParameterTypeRequiredDefaultDescription
Quote IDstringYesID of the quote.

Quote: Get

ParameterTypeRequiredDefaultDescription
Quote IDstringYesID of the quote.

Quote: Get Many

ParameterTypeRequiredDefaultDescription
Return AllbooleanNofalseWhether to return all results or only up to a given limit.
LimitnumberNo5Max number of results to return. (shown when Return All is false)
OptionsjsonNo{}GetAll filter options. Supported keys: fields (comma-separated string or array), sort_by (field API name), sort_order (asc/desc), approved (boolean), converted (boolean), include_child (boolean), territory_id (string).

Quote: Update

ParameterTypeRequiredDefaultDescription
Quote IDstringYesID of the quote.
Update FieldsjsonNo{}Fields to update. Keys should match Zoho CRM API field names. At least one field is required.

Sales Order: Create

ParameterTypeRequiredDefaultDescription
ProductsjsonNo[]Array of product detail objects. Each must include “id” (product ID) and “quantity”. Example: [{“id”:“123”,“quantity”:2,“list_price”:100}]
Account IDstringYesID of the account associated with this sales order.
SubjectstringYesSubject or title of the sales order.
Additional FieldsjsonNo{}Additional fields for the record. Keys should match Zoho CRM API field names (e.g. Email, Phone, Description, Billing_Address, etc). Address fields should be nested objects with address_fields property.

Sales Order: Create or Update

ParameterTypeRequiredDefaultDescription
ProductsjsonNo[]Array of product detail objects. Each must include “id” (product ID) and “quantity”. Example: [{“id”:“123”,“quantity”:2,“list_price”:100}]
Account IDstringYesID of the account associated with this sales order.
SubjectstringYesSubject or title of the sales order.
Additional FieldsjsonNo{}Additional fields for the record. Keys should match Zoho CRM API field names (e.g. Email, Phone, Description, Billing_Address, etc). Address fields should be nested objects with address_fields property.

Sales Order: Delete

ParameterTypeRequiredDefaultDescription
Sales Order IDstringYesID of the sales order.

Sales Order: Get

ParameterTypeRequiredDefaultDescription
Sales Order IDstringYesID of the sales order.

Sales Order: Get Many

ParameterTypeRequiredDefaultDescription
Return AllbooleanNofalseWhether to return all results or only up to a given limit.
LimitnumberNo5Max number of results to return. (shown when Return All is false)
OptionsjsonNo{}GetAll filter options. Supported keys: fields (comma-separated string or array), sort_by (field API name), sort_order (asc/desc), approved (boolean), converted (boolean), include_child (boolean), territory_id (string).

Sales Order: Update

ParameterTypeRequiredDefaultDescription
Sales Order IDstringYesID of the sales order.
Update FieldsjsonNo{}Fields to update. Keys should match Zoho CRM API field names. At least one field is required.

Vendor: Create

ParameterTypeRequiredDefaultDescription
Vendor NamestringYesName of the vendor.
Additional FieldsjsonNo{}Additional fields for the record. Keys should match Zoho CRM API field names (e.g. Email, Phone, Description, Billing_Address, etc). Address fields should be nested objects with address_fields property.

Vendor: Create or Update

ParameterTypeRequiredDefaultDescription
Vendor NamestringYesName of the vendor.
Additional FieldsjsonNo{}Additional fields for the record. Keys should match Zoho CRM API field names (e.g. Email, Phone, Description, Billing_Address, etc). Address fields should be nested objects with address_fields property.

Vendor: Delete

ParameterTypeRequiredDefaultDescription
Vendor IDstringYesID of the vendor.

Vendor: Get

ParameterTypeRequiredDefaultDescription
Vendor IDstringYesID of the vendor.

Vendor: Get Many

ParameterTypeRequiredDefaultDescription
Return AllbooleanNofalseWhether to return all results or only up to a given limit.
LimitnumberNo5Max number of results to return. (shown when Return All is false)
OptionsjsonNo{}GetAll filter options. Supported keys: fields (comma-separated string or array), sort_by (field API name), sort_order (asc/desc), approved (boolean), converted (boolean), include_child (boolean), territory_id (string).

Vendor: Update

ParameterTypeRequiredDefaultDescription
Vendor IDstringYesID of the vendor.
Update FieldsjsonNo{}Fields to update. Keys should match Zoho CRM API field names. At least one field is required.

All Operations

ParameterTypeRequiredDefaultDescription
Zoho AccountcredentialNoConnect your Zoho account via OAuth2.
Max ConcurrencynumberNo10Maximum number of items to process concurrently.

Output Data

The Zoho response is merged onto the input item’s JSON — your original fields survive and Zoho’s fields are added alongside them, overwriting any key of the same name. Binary data on the input item is forwarded onto every output item.

How many items come out depends on the operation:

OperationOutput items per input item
create, upsert, updateOne — the record details Zoho returns for the write.
deleteOne — the result of the deletion.
getOne — the requested record.
getAllOne per record returned — a single input item fans out across the whole result set. A result set of zero produces no output item at all, so the input item does not pass through.
getFieldsOne per field definition in the Lead module’s schema.

Return All changes how much Get Many fetches, not the shape: on, Zoho is paged through until every record is collected; off, the first Limit records are kept. Either way the records leave as separate items, so a Get Many that matched nothing leaves that branch empty — test for the presence of items downstream rather than for a “no results” flag.

When a delete returns an empty body, the node reports the deletion itself:

{
  "id": "4876876000000240001",
  "deleted": true
}

Every other field is whatever the Zoho CRM API returned for that call — the node does not rename, nest or filter them, so a create carries the record details Zoho supplies for a write and a get carries the record’s own fields. Reference them downstream by expression, e.g. {{ $json.id }}.

An item whose Zoho call fails carries an _error object instead, and its original JSON is not merged onto it.

Usage Examples

  • Create a new contact in Zoho CRM
  • List all deals from Zoho CRM
  • Update account information in Zoho CRM
  • Delete a lead from Zoho CRM
  • Upsert a vendor record in Zoho CRM

Example Configuration

Create an account and set a few extra fields on it:

{
  "type": "zoho",
  "parameters": {
    "resource": "account",
    "operation": "create",
    "accountName": "Acme Corporation",
    "additionalFields": {
      "Phone": "555-123-4567",
      "Website": "https://acme.com",
      "Description": "Leading manufacturer of widgets"
    }
  }
}

Fetch one deal by its record ID:

{
  "type": "zoho",
  "parameters": {
    "resource": "deal",
    "operation": "get",
    "dealId": "4876876000000240001"
  }
}

Raise an invoice with two line items:

{
  "type": "zoho",
  "parameters": {
    "resource": "invoice",
    "operation": "create",
    "subject": "Q1 Services Invoice",
    "Product_Details": [
      { "id": "4876876000000186029", "quantity": 2, "list_price": 500 },
      { "id": "4876876000000186030", "quantity": 1, "list_price": 1000 }
    ],
    "additionalFields": {
      "Due_Date": "2026-03-31"
    }
  }
}

Create the product if it is new, or update it if Zoho already holds a match:

{
  "type": "zoho",
  "parameters": {
    "resource": "product",
    "operation": "upsert",
    "productName": "Premium Widget Pro",
    "additionalFields": {
      "Unit_Price": 299.99,
      "Product_Code": "PWP-001",
      "Product_Category": "Widgets",
      "Description": "Professional grade widget with advanced features"
    }
  }
}

List up to 50 contacts, keeping only the fields you need and sorting by surname:

{
  "type": "zoho",
  "parameters": {
    "resource": "contact",
    "operation": "getAll",
    "returnAll": false,
    "limit": 50,
    "options": {
      "fields": ["First_Name", "Last_Name", "Email", "Account_Name"],
      "sort_by": "Last_Name",
      "sort_order": "asc"
    },
    "maxConcurrency": 5
  }
}

Error Handling

ModeBehavior
stopHalts workflow on first error
continueSkips failed items, passes successful ones through
errorPortRoutes failed items to Error output port

Tips

Zoho CRM tool for CRUD operations on accounts, contacts, deals, leads, invoices, products, purchase orders, quotes, sales orders, and vendors via the Zoho CRM API v2.

Common Patterns

  • Creating records with relationships. When creating records that reference other records (like deals referencing accounts), use the ID of the related record.
  • Batch operations. The tool processes items concurrently up to the maxConcurrency limit.
  • Working with address fields. Address fields should be structured as nested objects — a Billing_Address entry inside Additional Fields holding address_line_1, address_line_2, city, state, zip_code and country, for example.
  • Lead-specific operations. For leads, you can retrieve field schema information with the Get Fields operation.

Frequently asked questions

How do I link records to each other?

By the related record's ID. When creating something that references another record — a deal referencing an account — supply that record's ID rather than its name.

How does it handle a batch of items?

It processes them through the same operation, so a list of leads can be created in one node run rather than one at a time.

Which records can it manage?

Accounts, contacts, deals, leads, invoices, products, purchase orders, quotes, sales orders and vendors — both the CRM and the quote-to-cash objects.

Which credential does it need?

A Zoho OAuth2 credential.

Build with the Zoho CRM node

Drop it into a workflow, wire it to an agent, or call it on a schedule. You'll need Zoho OAuth2 credentials first.

Open BusyBot

Last updated . Spotted something wrong? Tell us.