Contact updated

Incoming webhook deliveries are authenticated with HMAC signature headers (X-Chatway-Signature and X-Chatway-Timestamp), not your Chatway API key.

An existing contact was updated.

Use contact.updated to keep an existing CRM record synchronized. Find the record using data.contact.id, then inspect data.updated_fields and the matching entries in data.previous_values and data.current_values. For example, an email change should update the existing contact rather than create a second record under the new address. Use Get Chat Contact to retrieve a fresh profile and Contact created for the initial contact notification.

For signature verification and retries, see Webhooks overview.

POST webhook: contact.updated

Parameters

NameInRequiredTypeDescription
X-Chatway-EventheaderYesstringEvent name for this delivery. Example: contact.updated
X-Chatway-Webhook-IdheaderYesstring (uuid)Unique webhook subscription ID. Example: 9f3c2a1b-4d5e-4f70-8a9b-0c1d2e3f4a5b
X-Chatway-Delivery-IdheaderYesstringUnique ID for this HTTP delivery attempt (`del_` + 32 hex characters). A new value is sent on each retry. Example: del_1b0279b1f28f12c0b9f2a2fdbf3758ee
X-Chatway-Delivery-AttemptheaderYesstringAttempt number for this event (`1` on first try). Sent as a decimal string in the header. Example: 1
X-Chatway-TimestampheaderYesstringUnix timestamp in seconds when the request was signed. Sent as a decimal string in the header. Example: 1770201001
X-Chatway-SignatureheaderYesstring`sha256=` followed by the lowercase hex HMAC SHA256 of `{X-Chatway-Timestamp}.{raw request body}`, keyed with your webhook secret. The example is computed for the example body serialized as compact JSON, the example timestamp, and the placeholder secret `whsec_exampleSecretForDocsOnly00000000`. Example: sha256=5acc28571882f63c2ffb9504466bd3a952d4b75ca35bb2b887fdbbf8bf064f35

Request body

Signed JSON envelope for this event.

application/json

Responses

200

Return any 2xx status to acknowledge receipt.

410

Optional HTTP 410 Gone to signal the endpoint is permanently unavailable. Like every non-2xx response below 500 (including 408 and 429), it is not retried. It does not disable the subscription; turn the webhook off in Chatway Settings if you want deliveries to stop.

Examples

Request body example

{
    "id": "evt_1234567890abcdef1234567890abcdef",
    "event": "contact.updated",
    "data": {
        "contact": {
            "id": "9b0c5fe6-35ad-459d-b6ba-4288191f84f1",
            "name": "John Doe",
            "email": "[email protected]",
            "phone": "+1XXXXXXXXXX"
        },
        "updated_fields": [
            "email"
        ],
        "previous_values": {
            "email": "[email protected]"
        },
        "current_values": {
            "email": "[email protected]"
        }
    },
    "occurred_at": "2026-02-04T10:30:00Z",
    "version": "2026-09"
}