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.| 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.status_update
status values align with message records from GET /v1/messages/{messageID} (sent, delivered, read, failed, …).
More narrative examples: Webhook payload examples.
Migrating from Kapso or YCloud?
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 |
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. |
CRM events (advanced)
CRM events (advanced)
Available if your product uses Wazapin CRM webhooks. Examples:
Sample shape for record events:
| 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. |
Related
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.