// product · webhooks

Know what happened the moment it does.

Don't poll for status — let Drin tell you. Every delivery, bounce, complaint and engagement event is posted to your endpoint in real time, signed with a secret and retried until it lands.

one event · signed payload
# POST → your endpoint · signed with your secret
{
  "type": "email.delivered",
  "created_at": "2026-06-02T14:08:11Z",
  "data": {
    "id": "msg_8fK2q1",
    "to": "user@acme.com",
    "from": "hello@drin.run",
    "subject": "Welcome aboard"
  }
}

# header: Drin-Signature: t=…,v1=…  (verify before trusting)
// what you get[01/03]

Delivery you can build on, not guess at.

01

Signed with a secret

Every request carries a Drin-Signature header. Verify it against your endpoint secret so you only ever trust genuine Drin events.

02

Multi-endpoint

Register several endpoints and subscribe each to the event types it cares about — route deliveries and bounces to different services.

03

Automatic retries

If your endpoint is down or returns an error, Drin retries with backoff so a brief outage never costs you an event.

04

At-least-once

Events are delivered at least once. Use the message id to dedupe, and your handler stays correct under retries.

// the events[02/03]

Eleven things worth knowing.

From the moment a message is accepted to the day a contact opts out — every meaningful state change is an event you can subscribe to. The failure events double as your early-warning system.

email.sentAccepted and handed to the provider
email.deliveredConfirmed delivered to the recipient
email.delivery_delayedTemporarily deferred, retrying
email.openedRecipient opened the message
email.clickedA tracked link was clicked
email.bouncedHard or soft bounce — auto-suppressed
email.complainedMarked as spam — auto-suppressed
email.failedCould not be sent
email.receivedAn inbound message arrived
domain.verifiedA sending domain finished verifying
contact.unsubscribedA contact opted out
// at a glance[03/03]
TransportHTTPS POST, JSON body
SigningDrin-Signature header, HMAC over the payload
EndpointsMultiple, each scoped to chosen event types
DeliveryAt-least-once · automatic retry with backoff
Event types11 lifecycle, inbound, domain and contact events
IdempotencyDedupe on the event id
// wire it up

Get told the moment mail moves.

Add an endpoint, pick your events, and verify the signature. Test in the sandbox; production starts at $3 a month.