Update Contact

highlevel.update_contact
ActionCRM & salesconnection required

Calls the HighLevel API with the connection's credentials.

Update a contact; only the fields you fill in are sent.

Connection

Required
Yes — the node will not save without one
Auth type
OAuth 2.0
Providers
HighLevel
Secret shape
{"client_id": "…", "client_secret": "…", "refresh_token": "…"} for a marketplace app, or {"access_token": "…"} for a Private Integration Token
Config it needs
location_id, user_type, base_url
Resolved by
config.connection_id, else node.connection_id

Configuration

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

FieldTypeRequiredDefaultConstraintsExample
contact_id
The contact id, e.g. 'ocQHyuzHvysMo5N5VsXc' — the last segment of the contact's URL in HighLevel.
stringYes———
first_name
Stored on the contact in HighLevel; blank leaves it unset.
stringNo———
last_name
Stored on the contact in HighLevel; blank leaves it unset.
stringNo———
name
Full name, when you do not have the parts.
stringNo———
email
Email address.
stringNo—email format—
phone
Phone number in E.164, e.g. +15558675309.
stringNo———
address1
Street address.
stringNo———
city
Stored on the contact in HighLevel; blank leaves it unset.
stringNo———
state
State or region.
stringNo———
postal_code
Postal or ZIP code.
stringNo———
country
Two-letter country code, e.g. US.
stringNo———
website
Absolute http(s) URL to store; blank leaves it unset.
stringNo———
timezone
IANA timezone, e.g. America/Chicago.
stringNo———
source
Where the contact came from.
stringNo———
assigned_to
User id the contact is assigned to.
stringNo———
date_of_birth
Date of birth, YYYY-MM-DD.
stringNo—matches \d{4}-\d{2}-\d{2}2026-01-31
dnd
Mark the contact Do-Not-Disturb across every channel.
booleanNo———
custom_fields
HighLevel's customFields list, as JSON — one entry per field, each with the field's id (or key) and its value.
arrayNo—array of object—
tags
Tags to set on the contact, as a list, a JSON array or a comma-separated string.
arrayNo—array of string—
fields
Any other contact body field HighLevel accepts, as JSON. Merged last, so it wins over the fields above.
objectNo———

Example configuration

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

{
  "date_of_birth": "2026-01-31"
}

Output

One shape.

result

FieldTypeExample
id
The contact id.
string—
locationId
The sub-account the contact belongs to.
string—
firstName
Given name.
string—
lastName
Family name.
string—
name
Full name as HighLevel stores it.
string—
email
Email address.
string—
phone
Phone number.
string—
companyName
Company name.
string—
source
Where the contact came from.
string—
assignedTo
User id the contact is assigned to.
string—
tags
Tag names on the contact.
array—
customFields
Custom-field values, each with its id.
array—
dateAdded
When the contact was created (ISO-8601).
string—
dateUpdated
When the contact last changed (ISO-8601).
string—
{
  "assignedTo": "",
  "companyName": "",
  "customFields": [],
  "dateAdded": "",
  "dateUpdated": "",
  "email": "",
  "firstName": "",
  "id": "",
  "lastName": "",
  "locationId": "",
  "name": "",
  "phone": "",
  "source": "",
  "tags": []
}

Notes

  • HighLevel's update body does not accept companyName or gender; set those with highlevel.create_contact or highlevel.upsert_contact.

See Update Contact run in a workflow.

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