Skip to main content
Events are saved in the database in the same step as the change that caused them, so none are lost when the engine or your app restarts. They go out within a second.

Retries

A call fails when your endpoint answers with anything other than 2xx, or takes longer than 10 seconds. A failed call is tried again, with the wait doubling each time: After 8 attempts (about an hour) the call’s status becomes failed. A wait is never longer than 6 hours. Every retry sends the same body, with the same event id and the same X-Email-Engine-Delivery header (whc_…, the id of the call in the delivery log). Calls fail right away, without retries, when the URL points to a private or local address, or when the endpoint was deleted or paused (enabled: false).

Delivery log

List the calls made to an endpoint, with their status, attempts, the last HTTP status and error, and the body that was sent:
Add event_id=evt_… to see the calls of one event. See Delivery log for the fields. Your dashboard shows the same log under Webhooks.

Missed events

If your endpoint was down for longer than the retries cover, catch up from the API. For example, list emails newer than the last one you processed: