Webhooks
Events for every message state change.
Use webhooks to move delivery state from Dugble into your own product: delivered OTPs, failed receipts, bounced emails, and retry attempts.
Dugble
event source
your-api.com
/webhooks
Attempt 1 of 2
HTTP 500 · retrying in 2s
Delivery contract
Every event is signed and self-contained.
Each event carries the type, message ID, channel, recipient, and a timestamp plus a signature your backend verifies before it ever mutates state. Return a 2xx only once you've safely processed it.
POST /webhooks/dugble HTTP/1.1
Host: your-api.com
Content-Type: application/json
X-Dugble-Event: message.delivered
X-Dugble-Signature: t=1721642042,v1=5f3d8c9e2a1b...
{
"event": "message.delivered",
"message_id": "msg_9c41af",
"channel": "sms",
"to": " +233531184325",
"occurred_at": "2026-07-22T09:14:04Z"
}Best practices
Build a handler that won't break under retries.
Verify signatures
Reject events that fail the X-Dugble-Signature check before updating product state.
Handle retries
Return a 2xx response only after your endpoint has safely processed the event.
Store event IDs
Deduplicate webhook deliveries so repeated attempts do not mutate data twice.
Webhook event types
X-Dugble-Event
Confirmed on device or by the receiving server.
Provider rejected or could not route the message.
Rejected: invalid address or full mailbox.
Your endpoint failed to acknowledge: retry queued.
Send your first message in the next five minutes.
Create a workspace, generate an API key, and watch the delivery event come back in the dashboard.