You have two ways to receive WhatsApp messages and events.Documentation Index
Fetch the complete documentation index at: https://docs.kapso.ai/llms.txt
Use this file to discover all available pages before exploring further.
BSUID rollout
WhatsApp can now send identity without a phone number. Kapso exposes additive identity fields likebusiness_scoped_user_id, parent_business_scoped_user_id, and username on the relevant payloads.
If you consume inbound payloads, update your parser before assuming phone_number, wa_id, from, or to are always present.
BSUID migration guide
What changes, which fields were added, and what you need to adapt.
1. Kapso webhooks
Kapso sends structured webhook events when messages arrive, conversations change, or delivery status updates. Events include:whatsapp.message.received- New message from customerwhatsapp.message.sent- Message sent to WhatsAppwhatsapp.message.delivered- Message deliveredwhatsapp.message.read- Message readwhatsapp.conversation.created- New conversationwhatsapp.conversation.ended- Conversation endedwhatsapp.conversation.inactive- No activity for X minutes
- Go to Webhooks documentation
- Configure webhook URL and events
- Receive structured JSON payloads
Full webhook documentation
Complete guide to webhook events, signatures, retries, and best practices.
2. Forward Meta webhooks
Alternatively, forward raw Meta webhooks directly to your server. This gives you the exact payload Meta sends, without Kapso’s processing layer. Forwarded Meta payloads can now include BSUID-only identity too. For the Meta-side rollout details, see Meta: business-scoped user IDs. Setup:- Go to your WhatsApp configuration in Kapso dashboard
- Click Edit on your connected number
- Add your Webhook destination URL
- We’ll forward all Meta webhook events to your endpoint
Parse forwarded webhooks
Use the TypeScript SDK to parse raw Meta webhooks:normalizeWebhook() converts Meta’s payload to the same structure as messages.query(), adds kapso.direction, and keeps all raw fields under events.raw.
