v1 vs v2 differences
v1 (legacy)
- Includes nested
whatsapp_configobject in all payloads - Uses
whatsapp_config_idas the primary identifier - Event:
whatsapp.config.createdfor connection lifecycle - Message structure:
message_type,contentfields - Message origin:
message.originat message level
v2 (recommended)
- Phone-number-first with
phone_number_idat top level - No nested
whatsapp_configobject - Event:
whatsapp.phone_number.createdfor connection lifecycle - Message structure: Meta-style with
kapsoextensions - Message origin:
message.kapso.origininside kapso object
Migration to v2
1. Check current version
Look for theX-Webhook-Payload-Version header in incoming webhooks:
2. Update webhook handler
Before (v1):3. Handle message structure
Before (v1):v1 event: whatsapp.config.created
Lifecycle event fired when customer connects WhatsApp (v1 only). For v2, usewhatsapp.phone_number.created instead. See Connection detection.
Headers:
v1 payload examples
message.received
message.sent
conversation.created
Handling both versions
If you need to support both v1 and v2 webhooks during migration:Backward compatibility
v1 webhooks remain fully supported. You can migrate at your own pace:- Existing v1 webhooks continue to work unchanged
- No breaking changes or deprecation timeline
- Both versions use the same signature verification (HMAC SHA256)
- Both versions support the same retry policy and ordering guarantees

