send.webforms.toRead the docs →

Webhook Retries and Replaying Failed Webhooks

A webhook retry is a sender trying a failed delivery again after a delay, usually with exponential backoff. A replay is sending deliveries that already gave up once the receiving endpoint has been fixed, so no events are lost to an outage.

Retries cover short blips: a deploy, a timeout, a 502 from a load balancer. They space out (seconds, then minutes) so a struggling server is not hammered, and stop after a fixed number of attempts. What is left is a dead delivery: the sender has given up.

Replay covers longer outages. Without it, an endpoint that was down for an afternoon silently loses every event from that afternoon, and someone has to reconstruct them by hand from exports.

Receivers should treat deliveries as at-least-once. A retry or replay can arrive after a request that actually succeeded but timed out on the way back, so de-duplicate on a stable delivery id rather than assuming each request is new.

In WebForms

WebForms retries webhook and chat deliveries automatically, emails you when one gives up, and replays every failed delivery from the last 30 days with one click on the form's Deliveries tab (or one API call). Replays keep the same x-webforms-delivery-id so your receiver can de-duplicate.

More terms