Use webhooks to notify your application about email events.
Resend uses webhooks to push real-time notifications to you about your email sending. All webhooks use HTTPS and deliver a JSON payload that can be used by your application. You can use webhook feeds to do things like:
You can start receiving real-time events in your app using the steps:
In your local application, create a new route that can accept POST requests.
For example, you can add an API route on Next.js:
On receiving an event, you should respond with an HTTP 200 OK
to signal to Resend that the event was successfully delivered.
Register your publicly accessible HTTPS URL in the Resend dashboard.
You can create a tunnel to your localhost server using a tool like
ngrok. For example:
https://8733-191-204-177-89.sa.ngrok.io/api/webhooks
Send a few test emails to check that your webhook endpoint is receiving the events.
After you’re done testing, deploy your webhook endpoint to production.
Once your webhook endpoint is deployed to production, you can register it in the Resend dashboard.
What is the retry schedule?
If Resend does not receive a 200 response from a webhook server, we will retry the webhooks.
Each message is attempted based on the following schedule, where each period is started following the failure of the preceding attempt:
What happens after all the retries fail?
After the conclusion of the above attempts the message will be marked as failed, and you will get a webhook of type message.attempt.exhausted
notifying you of this error.
What IPs do webhooks POST from?
If your server requires an allowlist, our webhooks come from the following IP addresses:
44.228.126.217
50.112.21.217
52.24.126.164
54.148.139.208
2600:1f24:64:8000::/52
See an example of how to receive webhooks events for Resend emails.