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

# Events

> Every webhook request captured by Hookdrop

An event is a single webhook request captured by one of your [endpoints](/concepts/endpoints). Every time a provider sends a request to your capture URL, Hookdrop stores it as an event — immediately and in full — before attempting to forward it anywhere.

## Event fields

Each event contains everything from the original request:

| Field         | Description                                        |
| ------------- | -------------------------------------------------- |
| `method`      | HTTP method of the request (`GET` or `POST`)       |
| `headers`     | All request headers, including signature headers   |
| `body`        | The raw payload exactly as the provider sent it    |
| `source_ip`   | The IP address the request came from               |
| `status`      | Current delivery status (see below)                |
| `received_at` | Exact timestamp when Hookdrop received the request |

## Status values

Every event moves through a status lifecycle based on delivery attempts to your [destinations](/concepts/destinations).

| Status        | What it means                                                          |
| ------------- | ---------------------------------------------------------------------- |
| `received`    | Captured and queued for delivery, but no attempt has been made yet     |
| `delivered`   | Successfully forwarded to at least one destination                     |
| `failed`      | A delivery attempt failed; Hookdrop will retry automatically           |
| `dead_letter` | All retries exhausted — see [Dead Letter Queue](/concepts/dead-letter) |

<Info>
  An event moves to `delivered` as soon as any destination returns a 2xx response. If you have multiple destinations, Hookdrop tracks each delivery attempt individually.
</Info>

## Viewing events

Events appear in your dashboard in real time as they arrive. For each event you can inspect the full headers, raw body, source IP, and the complete delivery history including response codes and response bodies from your server.

## Searching and filtering

Use the dashboard or the API to find the events you care about:

| Query parameter | What it does                                                  |
| --------------- | ------------------------------------------------------------- |
| `status`        | Filter by `received`, `delivered`, `failed`, or `dead_letter` |
| `from`          | Return events after a given ISO date string                   |
| `q`             | Search within the payload body                                |
| `page`          | Page number (default: `1`)                                    |
| `limit`         | Results per page (default: `50`)                              |

For example, to list all failed events from the API:

```bash theme={null}
GET /api/endpoints/{id}/events?status=failed
Authorization: Bearer TOKEN
```

## Replaying an event

You can re-deliver any event to all configured destinations at any time:

```bash theme={null}
POST /api/endpoints/{id}/events/{eventId}/replay
Authorization: Bearer TOKEN
```

This re-enqueues the event exactly as it was originally received, with the original headers and body intact.

<Tip>
  Replay is especially useful after a server outage. Once your server is back up, replay any missed events without asking your webhook provider to resend.
</Tip>

## API reference

See [Events](/api-reference/events) for the full list of operations: list, get, replay, and retrieve delivery history.
