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

# Webhooks overview

> Receive real-time HTTP notifications when things happen in a Kit account

Webhooks let your integration react to activity in a Kit account the moment it happens, instead of polling the API. When an event occurs — a subscriber is created, activated, or joins a form — Kit sends an HTTP `POST` to a URL you control, with a JSON payload describing what happened.

## Core concepts

* **Endpoint** — a URL you register to receive deliveries, plus the set of events it listens to. Create and manage endpoints through the [V4 API](/api-reference/overview) (`/v4/webhook_endpoints`) or in Kit at [app.kit.com/webhooks](https://app.kit.com/webhooks).
* **Subscription** — the link between an endpoint and an [event type](/webhooks/event-types). One endpoint can subscribe to many events.
* **Event** — something that happened in the account (for example `subscriber.created`). Every event has a UUID `id` you can use to [deduplicate](/webhooks/verifying-signatures#idempotency).
* **Delivery** — one `POST` to one endpoint, carrying an array of 1 to 100 events of the same type. Most deliveries carry a single event; bulk activity batches into fewer, larger deliveries.

## What a delivery looks like

Every delivery is a `POST` with a JSON [envelope](/webhooks/delivery-format) and a signature you can verify:

<ResponseExample>
  ```json theme={null}
  {
    "delivery_id": 123456,
    "events": [
      {
        "id": "9c2e1f3a-6b7d-4e8f-a1b2-c3d4e5f60718",
        "type": "subscriber.created",
        "created": "2026-07-29T14:32:10Z",
        "data": {
          "subscriber": {
            "id": 987654,
            "first_name": "Ada",
            "email_address": "ada@example.com",
            "state": "active",
            "created_at": "2026-07-29T14:32:10Z",
            "fields": {}
          }
        }
      }
    ]
  }
  ```
</ResponseExample>

## Webhook endpoints supersede the legacy webhooks API

The V4 API also has an older webhooks resource, [`/v4/webhooks`](/api-reference/webhooks-legacy/list-webhooks). Webhook endpoints supersede it: build anything new on `/v4/webhook_endpoints`, and expect new capabilities to land here only.

Superseded doesn't mean removed. If you already deliver through `/v4/webhooks`, your integration keeps working — legacy webhooks aren't going anywhere, and there's nothing you have to migrate. The two systems run side by side, independently.

What you gain by building on webhook endpoints:

|                        | Legacy webhooks                                   | Webhook endpoints (this guide)                                                         |
| ---------------------- | ------------------------------------------------- | -------------------------------------------------------------------------------------- |
| Create with            | `/v4/webhooks`                                    | `/v4/webhook_endpoints`                                                                |
| Events per webhook     | one                                               | as many [event types](/webhooks/event-types) as you like, per endpoint                 |
| Event catalog          | a fixed set                                       | a growing catalog of subscriber and resource events                                    |
| Delivery payload       | a single event                                    | a signed [envelope](/webhooks/delivery-format) batching up to 100 events               |
| Signature verification | —                                                 | [`X-Kit-Signature`](/webhooks/verifying-signatures), HMAC-SHA256                       |
| Failed deliveries      | dropped                                           | [retried — 8 attempts over \~41 hours](/webhooks/retries)                              |
| Secret rotation        | —                                                 | [live rotation with an overlap window](/webhooks/verifying-signatures#secret-rotation) |
| Deduplication          | —                                                 | UUID event `id`s, stable across re-sends                                               |
| Manage in the app      | mixed into the Rules list; disable or delete only | a dedicated [app.kit.com/webhooks](https://app.kit.com/webhooks) page                  |

Use webhook endpoints for every new integration. Existing legacy webhooks can stay exactly as they are — migrate whenever the capabilities above are worth having.

## Next steps

<CardGroup cols={2}>
  <Card title="Getting started" icon="rocket" href="/webhooks/getting-started">
    Create your first endpoint and receive a delivery end to end.
  </Card>

  <Card title="Verifying signatures" icon="shield-check" href="/webhooks/verifying-signatures">
    Confirm each delivery really came from Kit.
  </Card>

  <Card title="Event types" icon="list" href="/webhooks/event-types">
    Browse the events you can subscribe to.
  </Card>

  <Card title="Delivery format" icon="box" href="/webhooks/delivery-format">
    The envelope, headers, and HTTP behavior.
  </Card>
</CardGroup>


## Related topics

- [List webhooks](/api-reference/webhooks-legacy/list-webhooks.md)
- [Delete a webhook](/api-reference/webhooks-legacy/delete-a-webhook.md)
- [List webhook endpoints](/api-reference/webhooks/list-webhook-endpoints.md)
- [Create a webhook](/api-reference/webhooks-legacy/create-a-webhook.md)
- [Changelog](/changelog.md)
