Webhooks are HTTP promises with retry semantics bolted on. This diagram follows an event from trigger to terminal state: build the payload, POST it, and either land a 2xx or fall into the retry machinery — exponential backoff with jitter, the same event ID on every attempt, and a dead letter queue when attempts run out. The two mechanisms that make the whole thing correct are the event ID and the signature. The ID is what makes retries safe: the receiver deduplicates on it, so a lost response is harmless instead of causing a double charge. The signature is what makes replay safe: the receiver can verify each retry really came from the sender.
The ordering is the delivery contract. A 2xx ends the story; anything else starts the backoff clock, and the backoff grows because a failing receiver needs time to recover, not a faster stream of punishment. The dead letter queue is the guarantee that failure is never silent — every event ends somewhere, either delivered or parked where a human can see it.