Upsert Deal
freshworks_crm.upsert_deal
ActionCRM & salesconnection required
Calls the Freshworks CRM API with the connection's credentials.
Create a deal, or update the existing one that matches the unique identifier you name.
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
2 fields, 2 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 |
|---|---|---|---|---|---|
unique_identifier The one unique field Freshworks should match on, as a JSON object such as {"emails": "jane@example.com"} or {"id": 123}. | object | Yes | — | ≥ 1 characters | {"emails":"jane@example.com"} |
fields The deal fields to change, as Freshworks field names and values. Only the keys you send are modified; everything else on the record is left alone. | object | Yes | — | ≥ 1 characters | — |
Example configuration
Every value below is the contract’s own example or default — nothing invented.
{
"unique_identifier": {
"emails": "jane@example.com"
}
}Output
One shape.
result
| Field | Type | Example |
|---|---|---|
deal The deal record, inside the 'deal' envelope Freshworks returns it in. | object | — |
deal.id The Freshworks id of the deal. | number | — |
{
"deal": {
"id": 0
}
}Notes
- Freshworks answers 201 when the upsert created a record and 200 when it updated one; that distinction is in the status line, not the body, so this node reports the record that now exists without claiming which of the two happened.
- Only 'id' and fields Freshworks treats as unique may be used as the unique identifier. 'email' is deprecated for contacts — use 'emails'.
See Upsert Deal 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.