Pick events when you configure Developer → Webhooks or POST /v1/settings/developer/webhooks/endpoints (filterTypes / enabled events in the app).
Deliveries are signed for verification (headers svix-id, svix-signature, …). The JSON body is a flat object per event — there is no universal { type, data } wrapper. See Webhooks and Webhook signature examples.

Messaging (most integrators)

Subscribe to these for send/receive automation.
EventWhen it firesSample body (fields may include more in production)
message.newNew message in a conversation (inbound from a contact, or certain outbound echoes).See below
message.sentOutbound message was sent from your workspace.conversation_id, message_id, channel_id
message.status_updateDelivery/read/failed status changed for a sent message.message_id, status, often conversation_id, organization_id
conversation.updatedConversation metadata changed (assignment, status, preview, tags).conversation_id, status
contact.updatedContact profile linked to conversations was updated (also emitted on some creates).contact_id, name, organization_id
template.status_updateWhatsApp template approval status changed.template_id, status

message.new (inbound text)

{
  "message_id": "9f1fd66d-c37a-4b50-a8c2-b4dca523f9c8",
  "conversation_id": "0f89b0f9-74b4-44f9-b9b6-48f6d4de57aa",
  "contact_id": "c1a2b3c4-d5e6-7890-abcd-ef1234567890",
  "channel_id": "wzp_abc123",
  "direction": "inbound",
  "from_phone": "6281234567890",
  "msg_type": "text"
}

message.status_update

{
  "message_id": "9f1fd66d-c37a-4b50-a8c2-b4dca523f9c8",
  "conversation_id": "0f89b0f9-74b4-44f9-b9b6-48f6d4de57aa",
  "status": "delivered",
  "organization_id": "org_123"
}
status values align with message records from GET /v1/messages/{messageID} (sent, delivered, read, failed, …). More narrative examples: Webhook payload examples.
WazapinKapso (structured)YCloud
message.newwhatsapp.message.receivedwhatsapp.inbound_message.received
message.sentwhatsapp.message.sent(outbound in whatsapp.message.updated)
message.status_updatewhatsapp.message.delivered / .read / .failedwhatsapp.message.updated
Wazapin uses one status event with a status field instead of splitting every transition into separate event types.

Commerce

EventWhen it fires
commerce.order.updatedOrder or payment state changed in Commerce.
{
  "order_id": "ord_01h2",
  "order_no": "INV-1042",
  "status": "paid",
  "payment_status": "paid"
}
Available if your product uses Wazapin CRM webhooks. Examples:
EventWhen it fires
crm.record.createdCRM record created (deals, people, companies, tasks, …).
crm.record.updatedCRM record updated.
crm.record.deletedCRM record deleted.
crm.deal.stage_changedDeal moved to another pipeline stage.
crm.task.completedTask marked completed.
crm.comment.created / crm.comment.deletedComment on a record.
crm.list.entry_added / crm.list.entry_removedList membership changed.
crm.relationship.linked / crm.relationship.unlinkedRecord relationship changed.
crm.import.committedImport job finished.
See app webhook settings for the full CRM list.
Sample shape for record events:
{
  "object_kind": "people",
  "record_id": "rec_01h2",
  "display_name": "Ayu Pratiwi",
  "organization_id": "org_01h2"
}
If a live delivery differs from a sample, trust your first production payload and Webhook payload examples. The full event list in the app is the source of truth for what you can subscribe to.