Upsert Contact

freshworks_crm.upsert_contact
ActionCRM & salesconnection required

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

Create a contact, 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.

FieldTypeRequiredDefaultConstraintsExample
unique_identifier
The one unique field Freshworks should match on, as a JSON object such as {"emails": "jane@example.com"} or {"id": 123}.
objectYes—≥ 1 characters{"emails":"jane@example.com"}
fields
The contact fields to change, as Freshworks field names and values. Only the keys you send are modified; everything else on the record is left alone.
objectYes—≥ 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

FieldTypeExample
contact
The contact record, inside the 'contact' envelope Freshworks returns it in.
object—
contact.id
The Freshworks id of the contact.
number—
{
  "contact": {
    "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 Contact 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.