How to distinguish webhook retries from duplicate successes

Use a six-attempt log to separate a recovered delivery, an unacknowledged event and repeated 2xx responses without replaying webhooks.

A count of failed HTTP requests hides the difference between a recovered event and one that never received a success response. Try the built-in six-row sample in Webhook delivery triage.

Group attempts by endpoint and event ID

Map a stable endpoint alias, event ID and HTTP status. Do not use the event ID alone: the same event can be delivered to more than one endpoint. Strip authorization headers and payloads from your export; these fields are not needed.

Read three different outcomes

  • orders / evt-02: 503 then 200. The failure is followed by an acknowledgment.
  • orders / evt-03: 500 only. No success is visible in this export.
  • billing / evt-01: 200 then 204. Two deliveries were acknowledged. This does not prove a customer was charged twice.

Verify downstream state before taking action

Look up the event in the destination system and check the export window before considering a replay. The tool reads a file; it does not call endpoints or reissue requests. Compare a later export if the original window ended before the retry.