Retry behavior
Sotion expects your endpoint to respond with a 2xx status code (e.g. 200 OK) within 10 seconds. If it doesn't, we try the delivery again, up to four tries in all, and then drop the event.
Tries: the first delivery plus up to 3 retries. We retry without waiting longer between tries, so a short outage on your side can use up all four.
Timeout: 10 seconds per try.
Dead letter: after the fourth failed try, the event goes to a dead letter queue. We don't send it again, and it is deleted after four days.
What we retry and what we drop
We retry when your endpoint answers with a status that isn't 2xx or 3xx (for example 404 or 500), doesn't answer within 10 seconds, or can't be reached, and when your host's DNS lookup fails.
We drop the event at once, without retrying, when:
your endpoint answers with a redirect (3xx). We don't follow redirects, so point the webhook at the final address;
the URL's host resolves to a private, local or reserved address.
Duplicates and missed events
A retry sends the same event again, with the same id in the payload and the same X-Webhook-Delivery header. If your endpoint did the work but answered too late, it gets the event a second time, so use the event id to skip events you have already handled.
There is no way to replay failed events at this time, and events that happen while a webhook is switched off are never sent. Make sure your endpoint is reliable and responds quickly, for example by storing the event and doing the work after it answers.