Dugble

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.

Webhook requestsigned
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

message.delivered

Confirmed on device or by the receiving server.

message.failed

Provider rejected or could not route the message.

message.bounced

Rejected: invalid address or full mailbox.

message.retrying

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.

Start building