> ## Documentation Index
> Fetch the complete documentation index at: https://kavenio.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Set up webhooks

Kavenio webhooks deliver account, post, ad, and delivery events to HTTPS
endpoints you configure for your organization.

## Delivery Model

Webhook delivery is at least once. Your endpoint can receive the same event or
delivery more than once after retries, network errors, worker restarts, or a
manual replay.

Use these headers to make handlers idempotent:

* `x-kavenio-event-id`: stable event id.
* `x-kavenio-delivery-id`: stable delivery id for this endpoint delivery.
* `x-kavenio-event-type`: event type, such as `post.published`.
* `x-kavenio-attempt`: delivery attempt number.

Store `x-kavenio-delivery-id` or the event id plus event type before applying
side effects. If you have already processed that id, return a 2xx response.

## Retries And Dead Letters

Kavenio treats any non-2xx response, timeout, DNS failure, or unsafe endpoint
resolution as a failed attempt. Delivery workers retry with backoff until the
maximum attempt count is reached. After the final failed attempt, the delivery
is marked `dead_lettered` and appears in webhook delivery logs.

Repeated dead-letter outcomes increment the endpoint failure count. After the
threshold is reached, Kavenio pauses the endpoint by setting `isActive` to
`false` and `disabledAt` to the time it was paused. Fix the endpoint, then
reactivate it from webhook settings.

## Event Dedupe

Post lifecycle webhooks keep the same event payload shape while using
target-aware dedupe keys internally. Multi-target posts can therefore enqueue
distinct lifecycle events as target status changes without requiring you to
handle a new payload version.
