Pick events when you configure Developer → Webhooks or POST /v1/settings/developer/webhooks/endpoints (filterTypes / enabled events in the app).
Messaging (most integrators)
Subscribe to these for send/receive automation.
| Event | When it fires | Sample body (fields may include more in production) |
|---|---|---|
message.new |
New message in a conversation (inbound from a contact, or certain outbound echoes). | See below |
message.sent |
Outbound message was sent from your workspace. | conversation_id, message_id, channel_id |
message.status_update |
Delivery/read/failed status changed for a sent message. | message_id, status, often conversation_id, organization_id |
conversation.updated |
Conversation metadata changed (assignment, status, preview, tags). | conversation_id, status |
contact.updated |
Contact profile linked to conversations was updated (also emitted on some creates). | contact_id, name, organization_id |
template.status_update |
WhatsApp 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.
:::details[Migrating from Kapso or YCloud?]
| Wazapin | Kapso (structured) | YCloud |
|---|---|---|
message.new |
whatsapp.message.received |
whatsapp.inbound_message.received |
message.sent |
whatsapp.message.sent |
(outbound in whatsapp.message.updated) |
message.status_update |
whatsapp.message.delivered / .read / .failed |
whatsapp.message.updated |
Wazapin uses one status event with a status field instead of splitting every transition into separate event types.
:::
Commerce
| Event | When it fires |
|---|---|
commerce.order.updated |
Order or payment state changed in Commerce. |
{
"order_id": "ord_01h2",
"order_no": "INV-1042",
"status": "paid",
"payment_status": "paid"
}:::details[CRM events (advanced)] Available if your product uses Wazapin CRM webhooks. Examples:
| Event | When it fires |
|---|---|
crm.record.created |
CRM record created (deals, people, companies, tasks, …). |
crm.record.updated |
CRM record updated. |
crm.record.deleted |
CRM record deleted. |
crm.deal.stage_changed |
Deal moved to another pipeline stage. |
crm.task.completed |
Task marked completed. |
crm.comment.created / crm.comment.deleted |
Comment on a record. |
crm.list.entry_added / crm.list.entry_removed |
List membership changed. |
crm.relationship.linked / crm.relationship.unlinked |
Record relationship changed. |
crm.import.committed |
Import 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"
}:::