Batch Upsert Contacts

hubspot.batch_upsert_contacts
ActionCRM & salesconnection required

Calls the HubSpot API with the connection's credentials.

Create or update up to 100 contacts in one idempotent call with POST /crm/v3/objects/contacts/batch/upsert, matched on a unique property. This is the safe choice for a workflow that may run twice.

Connection

Required
Yes — the node will not save without one
Auth type
Bearer token
Providers
HubSpot
Secret shape
the HubSpot private-app token, or {"token": "…"}
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.

FieldTypeRequiredDefaultConstraintsExample
inputs
The contacts to upsert, as a JSON array of {"id": "…", "idProperty": "email", "properties": {…}} objects. `id` carries the matching value and `idProperty` names the property it matches on. At most 100 per call.
arrayYes—array of object[{"id":"ada@example.com","idProperty":"email","properties":{"firstname":"Ada"}}]

Example configuration

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

{
  "inputs": [
    {
      "id": "ada@example.com",
      "idProperty": "email",
      "properties": {
        "firstname": "Ada"
      }
    }
  ]
}

Output

One shape.

result

FieldTypeExample
results
The records HubSpot returned, each with its id and properties.
array—
count
How many records came back.
number—
status
HubSpot's batch status, COMPLETE for a fully successful call.
string—
errors
Per-input errors on a partially successful batch.
array—
{
  "count": 0,
  "errors": [],
  "results": [],
  "status": ""
}

See Batch Upsert Contacts run in a workflow.

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