Skip to main content
Kit keeps a record of every delivery it makes to a webhook endpoint, along with each attempt: when it ran, the HTTP status your endpoint returned, the first part of the response body, and how long it took. Use it to answer “why isn’t my endpoint receiving events?”, confirm that a retry eventually landed, or recover the events from a delivery your handler missed.
Delivery history is kept for 30 days. Older deliveries and their attempts are removed automatically, so store anything you need for longer on your side.

Matching deliveries to your logs

A delivery’s id in the history is the same value Kit sends as delivery_id in the envelope and in the X-Kit-Delivery header. Log it when you receive a delivery and you can look up exactly what Kit recorded for it.

Delivery statuses

completed_at is set when a delivery reaches delivered or failed, and is null until then. attempt_count is the number of attempts made so far.

List an endpoint’s deliveries

List webhook deliveries returns an endpoint’s deliveries, newest first. Filter by status to find the ones that need attention:
Response
You can also filter by event_type (any value from the event types catalog) and combine it with status. An unrecognized status or event_type returns 422 naming the bad value, rather than an empty list. Results use cursor pagination: pass end_cursor as after to fetch the next page.

Inspect a delivery

Get webhook delivery details returns one delivery with its full attempt history, newest attempt first:
Response
Each attempt:

Get the events that were sent

The events aren’t included by default, because a delivery can carry up to 100 of them. Add include_payload=true to get them back as payload, the same array your endpoint received as events:
include_payload accepts only true or false; any other value returns 422. This is how you recover from a delivery that ended failed: once your endpoint is fixed, fetch the payload and pass each event through your handler. Your handler deduplicates on the event id, so an event that did get processed earlier is skipped safely.

Diagnosing common failures

Access

Delivery history follows the same access rules as the endpoint it belongs to. When you authenticate with OAuth, you can read deliveries only for endpoints your app created; any other endpoint returns 404. An API key can read deliveries for every endpoint on the account. A delivery_id that doesn’t belong to the endpoint, or that is older than 30 days, also returns 404.