Message updated

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

A chat message was edited.

Triggered when message content or attachments change after an edit from the agent or visitor app.

Internal notes and reminders are not included.

Use message.updated to revise a message already stored in your transcript. Find it by data.message.id, inspect data.updated_fields, and use data.previous_values for the earlier values. Read the edited values from data.message. For example, a content change updates the existing message's text rather than creating another transcript entry. To retrieve conversation history, pass data.conversation.id to List Conversation Messages.

For signature verification and retries, see Webhooks overview.

postWebhookmessage.updated

Headers

X-Chatway-Eventstring required

Event name for this delivery.

X-Chatway-Webhook-Idstring uuid required

Unique webhook subscription ID.

X-Chatway-Delivery-Idstring required

Unique ID for this HTTP delivery attempt (del_ + 32 hex characters). A new value is sent on each retry.

X-Chatway-Delivery-Attemptstring required

Attempt number for this event (1 on first try). Sent as a decimal string in the header.

X-Chatway-Timestampstring required

Unix timestamp in seconds when the request was signed. Sent as a decimal string in the header.

X-Chatway-Signaturestring required

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.

Payload

idstring required

Stable event ID (evt_…). Same across HTTP retries for this notification.

eventstring required

Event name. For this webhook, always message.updated.

occurred_atstring date-time required

When the business event occurred.

versionstring required

Payload schema version.

Example payload

{
  "id": "evt_1234567890abcdef1234567890abcdef",
  "event": "message.updated",
  "data": {
    "message": {
      "id": "679f5ba4-3cbf-42eb-86dc-63566cec6b58",
      "content": "Hello, I need help with my order",
      "attachments": [],
      "created_at": "2026-02-04T10:31:12Z",
      "edited_at": "2026-02-04T10:35:00Z"
    },
    "updated_fields": [
      "content"
    ],
    "previous_values": {
      "content": "Hello, I need help"
    },
    "conversation": {
      "id": "0f46c0a1-8938-40e3-b2b5-bb56f569fcab",
      "channel": "website",
      "status": "open",
      "widget_name": "Main site widget",
      "identifier": "eouqtiupanm6uvglwshy"
    },
    "visitor": {
      "id": "9b0c5fe6-35ad-459d-b6ba-4288191f84f1",
      "name": "John Doe",
      "email": "john@example.com",
      "phone": "+1XXXXXXXXXX"
    }
  },
  "occurred_at": "2026-02-04T10:35:00Z",
  "version": "2026-09"
}

Response

Return any 2xx status to acknowledge receipt.

Changes

Webhooks have no change history: a webhook is keyed by its event name rather than a path and method, so no recorded change can name it.