# Webhooks
Source: https://nordvec.com/docs/guides/webhooks#manual-redelivery-and-testing

## Manual redelivery and testing [#manual-redelivery-and-testing]

The delivery log in workspace settings shows each delivery with its latest
status code, how many attempts it took, and the last error. From there:

- **Resend delivery** re-delivers the original event of a past delivery (same
  `webhook-id`, same JSON content) as a single attempt. It does not enter the retry schedule and never
  counts toward auto-disable, so it is safe to use while debugging a flaky
  receiver. The resend carries the **original `webhook-id`**, so a receiver
  that already processed the event before answering with an error treats it
  as the same message.
- **Replay undelivered** bulk-replays every terminally-failed and
  dropped delivery of the endpoint, oldest first (deliveries still on their
  automatic retry schedule are excluded, so a replay can never duplicate a
  retry that was going to succeed anyway). Replayed deliveries use the full
  retry schedule and carry the **original `webhook-id`**: to your service a
  replay is the same message again, so idempotency handling on `webhook-id`
  makes catch-up safe whether or not the original ever arrived. An event that
  a resend or an earlier replay already delivered is skipped, and so is one
  that is still being delivered. Choose how far back to go (the last 24
  hours, the last 7 days, or everything retained), and the dialog previews
  how many events that range will send before you start. The preview checks
  up to 500 events; when the range holds more, it says so and shows the count
  as a minimum ("at least N"), because the rest of the range has not been
  counted yet. The replay itself has no such limit: it pages through the whole
  range 500 events at a time, with progress shown as it goes, and reports the
  final totals when it finishes. Replays arrive
  out of sequence order; order the caught-up events by the payload's
  `sequence`.
- **Send test event** delivers a signed event to exactly that endpoint,
  regardless of its event subscriptions, and shows the outcome (the status
  code, or why it failed) as soon as the attempt finishes. Pick
  `webhook.ping`, whose `data` is empty, to confirm reachability and exercise
  your signature verification end to end, or any live event type to receive
  that event with the example `data` shown above and exercise your handler for
  it. Every test event carries `"test": true` in its envelope, and a real event
  never carries the field, so your handler can tell an example from the real
  thing and skip acting on it. A test event never opens, advances or resets the
  failure window.