Skip to main content
POST
Update Contact
Changes the attributes of a contact that is already in your CRM, for example when a lead’s status changes in your own system.

Quick Example

The contact must already exist. To add a new one, use Create Contact.

Use Cases

  • Status changes: update a lead stage or payment status when it changes in your CRM or billing system
  • Enrichment: fill in details you learn later, such as city, company or plan
  • Keeping two systems in step: copy changes from your own database so agents and workflows see current values

Where to find the values

How attributes are saved

Each row in attributes is a key, a value and an optional replace.
  • replace: true (the default here) overwrites the value the contact already has.
  • replace: false only fills an attribute that is empty. An existing value is kept and listed under kept_existing.
  • Edits made by hand win: a value someone typed into the CRM is never overwritten through the API, even with replace: true. It is listed under kept_existing.
  • Matching names: key is matched ignoring case, spaces, underscores and hyphens, so "First Name" matches first_name.
  • Types: the value is checked against the attribute’s type. A number attribute needs a number, a date needs a date, and an enum value must be one of its options.
  • Leaving a value out changes nothing: attributes you do not send keep their values, and a blank value is skipped rather than clearing the attribute.
Only attributes that already exist in CRM → Attributes are saved. A key with no matching attribute is listed under ignored.
The response reports what happened to every row:

Errors worth handling

The number is not a contact on the account this key belongs to. Create it with Create Contact, or check the number and the key.
The X-API-KEY header is missing or does not belong to any account.
The account the key belongs to has been deactivated. Contact support.
The body has no phone number, attributes is not a list, or a row has no key, a non-boolean replace, an object or list as its value, or a value longer than 1000 characters.

Authorizations

X-API-KEY
string
header
required

Body

application/json
to_number
string
required

Phone number with country code. A 10-digit number is read as Indian (+91). Spaces, dashes and + are ignored.

Example:

"+919876543210"

attributes
object[]

CRM attributes to save on the contact. Only attributes that already exist in CRM > Attributes are saved.

Maximum array length: 50

Response

Contact updated

status
string
Example:

"done"

message
string
Example:

"Contact created"

contact
object
attributes
object

What happened to every row of attributes