Bulk Upsert Deals
freshworks_crm.bulk_upsert_deals
ActionCRM & salesconnection required
Calls the Freshworks CRM API with the connection's credentials.
Create or update up to 100 deals in one request, which Freshworks runs as a background job.
Connection
- Required
- Yes — the node will not save without one
- Auth type
- API key
- Providers
- Freshworks CRM
- Secret shape
- the API key, or {"api_key": "…"}
- Config it needs
- bundle_alias, domain, base_url
- Resolved by
- config.connection_id, else node.connection_id
Configuration
1 field, 1 required. A dotted path is a nested object and name[] an array of objects — the editor renders the same tree.
| Field | Type | Required | Default | Constraints | Example |
|---|---|---|---|---|---|
records The records to upsert. Each entry pairs one unique field with its value and a "data" object of fields to write, e.g. {"emails": "jane@example.com", "data": {"first_name": "Jane"}}. | array | Yes | — | 1–100 characters; array of object | — |
Output
One shape.
result
| Field | Type | Example |
|---|---|---|
accepted True when Freshworks queued the bulk job. | boolean | — |
job_id The background job's id, taken from the job_status_url Freshworks returned. Pass it to the Get Bulk Job Status node to find out how the write actually ended. | string | — |
job_status_url The URL Freshworks published for polling the job. | string | — |
message Freshworks' own acknowledgement message for the job. | string | — |
{
"accepted": false,
"job_id": "",
"job_status_url": "",
"message": ""
}Notes
- This write is asynchronous. Freshworks answers with a job id, not a result: poll freshworks_crm.get_job_status to learn how many records succeeded and why the rest failed.
- At most 100 records per request, and at most 10 bulk-upsert jobs may be in flight for one account at a time.
See Bulk Upsert Deals run in a workflow.
In a technical demo we add the Freshworks CRM connection, drop the node on the canvas and let Workflow Health pre-flight it before the first real run.