# Dashboard Live Updates

The [Hooksbase dashboard](https://app.hooksbase.com) keeps delivery and DLQ views fresh as new events flow through your webhooks — you do not need to refresh the page to see new attempts, status changes, or new DLQ entries. This is a dashboard product feature and is not part of the Public API.

## What you see in the dashboard

When you open a delivery or DLQ view, the dashboard streams updates in the background:

- new deliveries appear at the top of the list as they are accepted
- existing delivery rows update their status and attempt counts as retries run
- new DLQ entries appear when a delivery exhausts retries and moves to the dead-letter queue
- DLQ status changes (for example, after a successful re-drive) reflect in the list without a manual reload

Live updates are a short-window incremental refresh — they complement, and do not replace, the delivery list. Closing and reopening the view (or switching tabs and coming back) reloads the current state from scratch.

## How to use it

Live updates are on by default in the dashboard — there is nothing to configure. Practical guidance:

- leave the dashboard open on the deliveries or DLQ view while you are monitoring a cutover or triaging an incident
- a hidden browser tab may briefly pause the stream; clicking back refreshes the current state before resuming
- for long-horizon investigations, prefer the delivery list filters (time range, webhook, status, idempotency key, etc.) — live updates only reflect recent changes

## Getting the same visibility from the Public API

The Public API does not expose a dashboard-style SSE endpoint. For machine automation, use the normal list routes with appropriate filters and polling:

- `GET /v1/deliveries` with `from` and `to` to fetch changes in a rolling window
- `GET /v1/dlq` with cursor pagination for DLQ inspection
- `GET /v1/webhooks/{id}/metrics` and `GET /v1/webhooks/{id}/backlog` for health trends

If you need push-style delivery lifecycle events in your own system, set up [event drains](/docs/event-drains.md) — they forward `delivery.created`, `delivery.succeeded`, `delivery.failed`, `delivery.dlq_entered`, and `attempt.completed` events to sinks you control.

## Common mistakes

- Assuming dashboard live updates are available as a public SSE endpoint. They are not — use the Public API list routes or an [event drain](/docs/event-drains.md) for machine automation.
- Treating the dashboard as a durable event archive. Persistent lifecycle streams belong in an event drain.
- Relying on a hidden tab to stay caught up indefinitely. The dashboard prefers a fresh current view after long idle periods.
