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