eusend
Webhooks

Webhooks

Subscribe to email events and receive real-time HTTP POST notifications at your endpoint.

Subscribe to email events and receive real-time HTTP POST notifications at your endpoint. Webhook deliveries are retried up to 3 times with exponential back-off on failure.

POST/webhooks
ParameterTypeDescription
urlrequiredstringPublic HTTP(S) endpoint to receive events. Private, loopback, and internal addresses are rejected — both at creation and again (after DNS resolution) before each delivery.
eventsrequiredstring[]Event types to subscribe to. Use "*" to subscribe to all events.
create webhook
curl -X POST https://api.eusend.dev/webhooks \
  -H "Authorization: Bearer eu_live_xxxxxxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://yourapp.com/webhooks/eusend",
    "events": ["email.delivered", "email.bounced", "email.complained"]
  }'
response — 201 Created
{
  "id": "a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d",
  "url": "https://yourapp.com/webhooks/eusend",
  "events": ["email.delivered", "email.bounced", "email.complained"],
  "secret": "AbCdEfGhIjKlMnOpQrStUvWxYz0123456789ABC",
  "createdAt": "2026-05-20T10:00:00.000Z"
}

The secret is only returned once, at creation time. Store it securely — you'll need it to verify incoming webhook signatures.

Your endpoint must respond directly with a 2xx status. Redirects (3xx) are not followed and count as a failed delivery.

The rest of the webhooks surface:

GET/webhooks

List webhooks.

GET/webhooks/:id

Get webhook + recent deliveries.

PATCH/webhooks/:id

Update url / events.

DELETE/webhooks/:id

Delete webhook.