Skip to main content

How each attempt is judged

A stopped event has status: "failed" and a terminalFailureAt time in GET /v1/webhooks/events.

Automatic retries

A retryable failure is attempted again about 2 minutes later, up to 10 attempts in total, so automatic delivery gives up roughly 20 minutes after the first attempt. Treat the timing as approximate. Events for one API key are delivered in order, so a failing event holds back later events for the same key until it is delivered or its attempts run out. Fix a failing endpoint quickly, and replay anything that ran out of attempts. If your endpoint fails 5 times in a row, delivery to it pauses for about 60 seconds before a single trial attempt. Other customers’ deliveries are not affected.

Inspecting delivery state

status filters: none, pending, retrying, delivered, failed, comma-separated. See Webhook management.

Manual redelivery

After fixing your endpoint, replay an event:
The answer is 202 Accepted with the event. The replay:
  • carries the same event id and X-Kash-Event-Id, so a receiver that already processed the event treats it as a duplicate;
  • is signed with the key’s current secret;
  • works on an event in any state, including one already delivered, which is handy for testing a handler with a real payload;
  • is itself retried like any delivery.
Each event can be replayed at most 5 times (429 WEBHOOK_REPLAY_LIMIT_REACHED after that). There is no bulk replay: list the failed events and replay them one by one.

Testing locally

The kash CLI can sign a payload the same way the API does and POST it to your endpoint, without touching production data:
Use --timestamp-ms to test your freshness check, and kash webhooks verify to check a signature offline. To trace the trade behind an event, pass its correlationId to kash trace or GET /v1/traces/{correlationId}.

Common patterns

“My handler was broken for an hour”

  1. Fix and redeploy the handler.
  2. List GET /v1/webhooks/events?status=failed,retrying and walk the cursor.
  3. POST …/redeliver each event id. Your deduplication makes this safe for events you did process.

Next

Verifying signatures

Always verify before processing.

Secret rotation

Rotate without dropping deliveries.