Upsert Records

zoho_crm.upsert_records
ActionCRM & salesconnection required

Calls the Zoho CRM API with the connection's credentials.

Insert records into a Zoho CRM module, or update the ones that already exist, matching on the duplicate check fields. Each result says whether it was an insert or an update and on which field it matched.

Connection

Required
Yes — the node will not save without one
Auth type
OAuth 2.0
Providers
Zoho CRM
Secret shape
{"client_id": "…", "client_secret": "…", "refresh_token": "…"}
Config it needs
data_center, api_domain, accounts_url, api_version
Resolved by
config.connection_id, else node.connection_id

Configuration

5 fields, 1 required. A dotted path is a nested object and name[] an array of objects — the editor renders the same tree.

FieldTypeRequiredDefaultConstraintsExample
module
API name of the module to act on, such as Leads, Contacts, Accounts, Deals, Tasks, Products, Vendors or Invoices. A custom module's API name works too.
stringYes——Leads
record
One record as a JSON object keyed by Zoho field API names, for example {"Last_Name": "Doe", "Company": "Acme"}. Use records for a batch.
objectNo——{"Company":"Acme","Last_Name":"Doe"}
records
Several records as a JSON array of objects keyed by Zoho field API names. Zoho accepts at most 100 records per call.
arrayNo—array of object—
duplicate_check_fields
Field API names Zoho checks for an existing record, in order, as a JSON array. Leave unset to use the module's unique fields.
arrayNo—array of string—
trigger
Which automations Zoho should run for this write, as a JSON array of workflow, approval, blueprint, pathfinder or orchestration. Leave unset to run them all; send an empty array to run none.
arrayNo—array of string—
  • At least one of record, records must be set.

Example configuration

Every value below is the contract’s own example or default — nothing invented.

{
  "module": "Leads",
  "record": {
    "Company": "Acme",
    "Last_Name": "Doe"
  }
}

Output

One shape.

result

FieldTypeExample
module
The module API name the batch was written to.
string—
action
Which write this was, for example create or upsert.
string—
records
One status object per input record, in input order.
array—
succeeded
The status objects Zoho accepted, each with its new id.
array—
failed
The status objects Zoho refused, each with its error code.
array—
ids
The ids of the records Zoho wrote, in order.
array—
success_count
How many records of the batch Zoho wrote.
number—
failure_count
How many records of the batch Zoho refused.
number—
status
success when every record was written, partial when some were refused.
stringsuccess
{
  "action": "",
  "failed": [],
  "failure_count": 0,
  "ids": [],
  "module": "",
  "records": [],
  "status": "success",
  "succeeded": [],
  "success_count": 0
}

Notes

  • Zoho accepts at most 100 records in one call.
  • A partial success is normal: read status, succeeded and failed rather than assuming the whole batch landed. The step fails only when Zoho refused every record in the batch.

See Upsert Records run in a workflow.

In a technical demo we add the Zoho CRM connection, drop the node on the canvas and let Workflow Health pre-flight it before the first real run.