Skip to content

Inspect and replay webhook deliveries

This guide shows you how to read the webhook delivery log, understand why a delivery failed, replay a delivery to your endpoint (or a debug URL), and re-enable an endpoint after it goes dead.

Who can do this: Admins with webhooks:read (view the log) and webhooks:replay (replay deliveries). Re-enabling a dead or paused endpoint requires webhooks:write.

  1. Go to Admin & Security > Integrations > Webhooks.
  2. Find the endpoint you want to inspect and select ⋮ > View deliveries.
  3. The delivery log opens showing each attempt: Time, Event type, Response status, Attempt number (out of 6), Status badge, and Digest (the payloadDigest you can use to correlate with your receiver logs).
  4. Use the Status, Event, and date filters to narrow the log.
  5. Select any row to expand it. A failed or dead row opens with the cause first — the last HTTP response code, how many attempts have been made, and when the next retry will fire (or “retries exhausted — dead-letter” if the budget is gone).

You can replay any delivery that is within the 30-day replay window.

  1. In the delivery log, find the row you want to replay. Select Replay.
  2. In the confirm dialog, the target defaults to the endpoint’s original URL. To replay to a debug server instead, enter an HTTPS URL in the Debug URL field.
  3. Select Replay to confirm.

A new pending delivery row appears in the log. The replay fires on the queue — it is asynchronous, not instant. The HMAC signature is regenerated at the current timestamp, so your receiver’s five-minute tolerance window does not reject it (the signature will differ from the original).

For deliveries older than 30 days, the Replay action is disabled and shows “Past replay window (30 days).”

If an endpoint has exhausted its retry budget, its status changes to dead and delivery stops. The detail page shows a red banner: “Delivery stopped — exceeded retries. Fix your receiver, then Re-enable.”

  1. Fix the issue on your receiver that caused the failures (for example, a misconfigured HMAC secret or a server that was returning 500).
  2. On the endpoint detail page, select Re-enable.
  3. Read the confirmation: “Re-enabling resumes delivery from active. Past failed deliveries are not auto-resent — use Replay for those.” Select Re-enable to confirm.

The endpoint returns to active status and the dead banner clears. If you also need the failed deliveries re-sent, replay them individually (see above).

For a replayed delivery: a new row with pending status appears in the log. Once it resolves, the status updates to delivered or failed.

For a re-enabled endpoint: the “Delivery stopped” banner clears and the status badge shows “Active.”

  • Replay is disabled with “Past replay window” — the delivery is older than 30 days and cannot be replayed. Use your own records or application state to handle the missed event.
  • The replay to a debug URL also fails — the debug replay produces its own row in the log with its own response code. Check that debug URL for the cause.
  • The endpoint went dead again after re-enabling — the underlying issue on your receiver was not resolved. Check the failure detail (expand the failed rows to read the response code) and fix your receiver before re-enabling again.
  • Re-enable is not visible — your role may lack webhooks:write. Contact your organization’s owner.