Know what happened to every email, as it happens
Add an endpoint, choose its events, and we POST each one to your server as signed JSON. Failed deliveries are retried for days.
Everything in webhooks
- 17 event types
Sent, scheduled, delivered, delayed, bounced, complained, opened, clicked, failed, suppressed and cancelled emails, plus contact and domain changes.
- Signed in the Standard Webhooks format
Each request carries an HMAC-SHA256 signature, so you can check it came from us. Standard webhook verification libraries work too.
- Retried on a schedule
Answer with any 2xx within 15 seconds. Otherwise we retry after 5 seconds, 5 and 30 minutes, then 2, 5, 10 and 10 hours.
- Turned off, and we tell you
An endpoint that keeps failing for 5 days is turned off and we email you. Turn it back on from its page.
- Replay and test
Deliveries are kept for 30 days. Replay any of them, or send a test event, from the endpoint's page.
- Rotate the secret
Rotate an endpoint's signing secret from its page. The old one stops working at once.
Know the moment it happens
Sends, deliveries, bounces, opens and clicks arrive at your endpoint as signed POST requests. If your server is down, we retry on a schedule, and you can replay any delivery from the console.
- Events17 events to subscribe toEmail11
- sent
- scheduled
- delivered
- delivery_delayed
- bounced
- complained
- opened
- clicked
- failed
- suppressed
- canceled
Contact3- created
- updated
- deleted
Domain3- created
- updated
- deleted
Opened and clicked events need open or click tracking, which is off until you turn it on for a domain.
- SigningSigned and verifiable
Each request is signed with HMAC-SHA256 over its id, timestamp and body, using your endpoint's whsec_ secret. The Svix library verifies it as is.
- svix-id
- svix-timestamp
- svix-signature
import { Webhook } from "svix" const wh = new Webhook(secret) const event = wh.verify(body, headers) - Retries & limitsDelivered, even after a bad day
- Time to answer
- 15 seconds
- Retries
- 7, over about 28 hours
- Failing for 5 days
- Endpoint turns off
- Replay a delivery
- From the console
Endpoints per planFree1Pro10Scaleunlimited
From first step to done
- 1Add an endpointA public HTTPS URL, in the console or with POST /webhooks.
- 2Choose its eventsPick the event types this endpoint should receive.
- 3Verify each requestCheck the signature on the raw body with your signing secret before trusting the event.
- 4Respond quicklyReturn a 2xx within 15 seconds and do slow work afterwards.
- Event types
- 17
- Response timeout
- 15 seconds
- Turned off after
- 5 days of failures
- Deliveries kept
- 30 days
- Endpoints
- Free 1 · Pro 10 · Scale Unlimited
Ship email today
Start free with 3,000 emails a month. Upgrade only when you need more.
- 3,000 emails a month free
- No credit card needed
- Upgrade anytime
- 1Create your free accountGet an API key in seconds.
- 2Verify a sending domainAdd the DNS records we show you.
- 3Send with one requestcURL, Node.js, Python: plain HTTP.