When this matters
Tracking the message lifecycle is important when:- Confirming that critical notifications (like OTPs) were delivered to the user’s device.
- Monitoring read rates for marketing or customer support chats.
- Troubleshooting slow deliveries or message failures.
- Handling duplicate webhook deliveries.
Lifecycle states
Tracking lifecycle changes
There are two ways to track these status updates:- Webhooks (Recommended): Subscribe to the
message.status_updateevent. Wazapin will post status updates to your server in real time. - GET Polling: Call the GET /v1/messages/ endpoint to retrieve the current state of a message.
Delivery idempotency
Webhook delivery is guaranteed using a retry mechanism, which can occasionally result in duplicate events. To prevent duplicate processing:- Deduplicate incoming webhook events by checking the
svix-id(orwebhook-id) header. - For full details, see Message lifecycle and idempotency.