Skip to content
API PlatformDevelopers

Webhook events · contacts

contact.updated/1

Contact updated. A contact changed. `changed_fields` lists which fields (names only).

Payload

We POST this JSON to your endpoint. Answer any 2xx within 30 seconds. The same id arrives again on a retry — skip ones you have handled.

Payload fields
FieldTypeWhat it is
idrequiredstringEvent id. The same on every retry: use it to skip duplicates.pattern ^evt_[0-9A-HJKMNP-TV-Z]{26}$
typerequiredstringEvent type.always contact.updated
versionrequiredstringPayload version.always 1
api_versionrequiredstringThe endpoint's API version.
occurred_atrequiredstringWhen it happened.date-time
company_idrequiredintegerYour workspace id.
datarequiredobject
idrequiredintegerContact id.
company_idrequiredintegerWorkspace id.
namestring or nullName.
phone_numberstring or nullPhone, digits only.
custom_identifierstring or nullYour own id, if set.
sourcestring or nullHow it was created.one of: manual, api, import
created_atstring or nullISO 8601.
updated_atstring or nullISO 8601.
changed_fieldsrequiredarray of stringChanged field names.

Example

{
  "id": "evt_01J8Z7BZQ4F6G8J2K5N7Q9S1VC",
  "type": "contact.updated",
  "version": "1",
  "api_version": "2026-10-01",
  "occurred_at": "2026-09-24T09:20:00Z",
  "company_id": 1001,
  "data": {
    "id": 48213,
    "company_id": 1001,
    "name": "Jane Doe",
    "phone_number": "15555550123",
    "custom_identifier": null,
    "source": "api",
    "created_at": "2026-09-23T03:02:10Z",
    "updated_at": "2026-09-23T03:02:10Z",
    "changed_fields": [
      "name"
    ]
  }
}

Headers

  • Webhook-Signature: t=…,v1=… — how to check it
  • Webhook-Id (also Webhook-Event-Id): the event id, the same on every retry — skip ones you have handled
  • Webhook-Delivery-Id: this delivery attempt, new on every try

API calls that can cause it