# Events and timeline

Inspect every request, event and attempt, and see exactly what happened to each one.

Everything Gateway does is recorded. When someone asks "did the Stripe webhook arrive?" or "why didn't billing hear about this?", the answer is in **Events**.

## Requests, events and attempts

| Record | What it is |
|---|---|
| **Request** | One HTTP request a source received, accepted or rejected, with its headers, body, size and whether it verified. |
| **Event** | What a [flow](/gateway/flows/) created from the request: one per matching flow. Has a status. |
| **Attempt** | One delivery try: the URL, response status, response body (truncated), latency and trigger (scheduled or manual). |

## The Events page

Newest first, with filters that combine:

| Filter | Finds |
|---|---|
| `status` | Events that are `failed`, `retrying`, `delivered` and so on. Repeatable. |
| `source`, `destination`, `flow` | Everything on one source, destination or flow. |
| `kind` | `gateway` or `dispatch`, since both products share the page. |
| `delivery_group` | One group on a destination with [delivery groups](/gateway/delivery-groups/). |
| `correlation` | Events whose request carried a given correlation value. |
| `range` | A time window such as `24h`. |

Over the API, `GET /v1/events` takes the same filters and pages with `before` ([reference](/api-reference/list-events/)). `GET /v1/events/histogram` returns delivered and failed counts per time bucket for the same filters.

## The timeline

Open an event to see its timeline, every step in order and why:

```text
12:04:11  request received · verified
12:04:11  matched flow stripe-prod → billing-api
12:04:11  attempt 1 · 503 in 212ms
12:04:16  attempt 2 · 200 in 142ms · delivered
```

The timeline includes:

- **The request:** received, verified or refused, a body that failed the source's schema, later copies [dropped as duplicates](/gateway/deduplication/), and flows that filtered it out.
- **The event:** matched flow, a flow's delay, waiting in an inbox, combined with later updates.
- **Each attempt:** the response, the latency and what triggered it.
- **What a person or API call did:** retried, redriven, cancelled, the [circuit breaker](/gateway/circuit-breaker/) opening or closing, an [ordering](/gateway/ordering/) line moving on past a dead letter.
- **What happens next:** the scheduled next retry, marked as upcoming.

`GET /v1/events/:id/timeline` returns the same entries as JSON. `GET /v1/events/:id/raw` returns the request body exactly as it arrived, byte for byte.

## Metrics

Source, destination and workspace metrics show request and rejection counts, delivery counts, success rate and latency over a window such as `24h` or `7d`.

| Endpoint | Shows |
|---|---|
| `GET /v1/sources/:id/metrics` | Requests and rejections over time. |
| `GET /v1/destinations/:id/metrics` | Deliveries, success rate and latency. |
| `GET /v1/summary` | The dashboard overview: requests, events, latency and failures. |

> [!TIP]
> Start at **Failures** when something is wrong. It lists failed events with the reason each gave up, ready to select and [redrive](/gateway/replay-and-dead-letters/).