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.
# 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)
Every request carries a Drin-Signature header. Verify it against your endpoint secret so you only ever trust genuine Drin events.
Register several endpoints and subscribe each to the event types it cares about — route deliveries and bounces to different services.
If your endpoint is down or returns an error, Drin retries with backoff so a brief outage never costs you an event.
Events are delivered at least once. Use the message id to dedupe, and your handler stays correct under retries.
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 provideremail.deliveredConfirmed delivered to the recipientemail.delivery_delayedTemporarily deferred, retryingemail.openedRecipient opened the messageemail.clickedA tracked link was clickedemail.bouncedHard or soft bounce — auto-suppressedemail.complainedMarked as spam — auto-suppressedemail.failedCould not be sentemail.receivedAn inbound message arriveddomain.verifiedA sending domain finished verifyingcontact.unsubscribedA contact opted outPOST, JSON bodyDrin-Signature header, HMAC over the payloadidAdd an endpoint, pick your events, and verify the signature. Test in the sandbox; production starts at $3 a month.