Weav

Webhook delivery

When subscribed events occur, Weav sends an HTTPS POST request to your configured webhook URL.

When subscribed events occur, Weav sends an HTTPS POST request to your configured webhook URL.

Verification headers

  • X-Weav-Event: event type
  • X-Weav-Signature: HMAC SHA-256 of the raw JSON body using your webhook secret
  • Content-Type: application/json

Delivery behavior

  • Any 2xx response is treated as success
  • 410 Gone deactivates the webhook immediately
  • Other non-2xx responses are retried up to 10 attempts with exponential backoff (1m, 2m, 4m, ...)
  • Webhooks are auto-deactivated after repeated permanent failures

Payload

The JSON request body contains:

eventstringrequired

Event type. Values: conversation.created, conversation.deleted, conversation.assigned.updated, conversation.status.updated, conversation.priority.updated, conversation.tags.updated, conversation.customer.message.created, conversation.user.message.created, customer.created, customer.updated, customer.deleted, agent.created, agent.updated, agent.deleted, training.created, training.updated, training.deleted, training.agent.assigned.

idstringrequired

Unique webhook delivery identifier. UUID.

organization_idstringrequired

Organization UUID that emitted the event. UUID.

dataobjectrequired

Event-specific payload. Shape depends on event type.

Example payload

{
  "event": "conversation.created",
  "id": "550e8400-e29b-41d4-a716-446655440000",
  "organization_id": "123e4567-e89b-12d3-a456-426614174000",
  "data": {
    "id": "019a5a3c-f1ce-7066-86ae-1ed35540a7ce",
    "title": "Help with my account",
    "status": "open",
    "priority": "normal",
    "channel": "email",
    "assignee_id": null,
    "assignee_type": null,
    "customer_id": "0197d061-63a9-73c5-b574-e49d8b7964fb",
    "created_at": "2025-11-06T17:35:34+00:00",
    "updated_at": "2025-11-06T17:35:34+00:00"
  }
}