Conversation resolved

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

A conversation was resolved by an agent, automation, or system.

resolved_by uses the same object shape as assigned_by on tag.assigned and agent.assigned: agent, automation, or system.

Use conversation.resolved to record closure in a ticketing system or stop an open-conversation timer. Identify the conversation with data.conversation.id and the actor with data.resolved_by. For example, your activity history can distinguish an agent resolving a conversation from an automation doing so. To resolve or reopen a conversation through the API, see Resolve Conversation. This webhook describes the resolved event; the API operation supports both status changes.

For signature verification and retries, see Webhooks overview.

postWebhookconversation.resolved

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 conversation.resolved.

occurred_atstring date-time required

When the business event occurred.

versionstring required

Payload schema version.

Example payload

{
  "id": "evt_1234567890abcdef1234567890abcdef",
  "event": "conversation.resolved",
  "data": {
    "conversation": {
      "id": "0f46c0a1-8938-40e3-b2b5-bb56f569fcab",
      "channel": "website",
      "status": "resolved",
      "widget_name": "Main site widget",
      "identifier": "eouqtiupanm6uvglwshy",
      "resolved_at": "2026-02-04T11:00:00Z"
    },
    "visitor": {
      "id": "9b0c5fe6-35ad-459d-b6ba-4288191f84f1",
      "name": "John Doe",
      "email": "john@example.com",
      "phone": null
    },
    "agent": {
      "id": "26fa75f2-7ac1-47b4-84e1-b943491ba4da",
      "name": "Sarah",
      "email": "sarah@example.com"
    },
    "resolved_by": {
      "agent": {
        "id": "26fa75f2-7ac1-47b4-84e1-b943491ba4da",
        "name": "Sarah",
        "email": "sarah@example.com"
      }
    }
  },
  "occurred_at": "2026-02-04T11:00: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.