> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.fluveo.com/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.fluveo.com/_mcp/server.

# Webhooks (dashboard)

> **Dashboard status: Built, Test mode only.** This screen is live in the dashboard
> today for Test mode. In Live mode it tells you endpoint management isn't available
> yet and every endpoint action stays disabled.

The Webhooks screen lists your registered [webhook endpoints](/webhooks) with their
URL, subscribed event types, and status. Add an endpoint and choose the events it
should receive. Open an endpoint to edit its URL, its events, or whether it is
enabled, to rotate its signing secret, to send it a test event, to see its recent
delivery attempts, or to delete it.

* **Signing secrets are shown once.** The full secret appears only right after you
  create an endpoint or rotate its secret. Store it then; afterwards the dashboard
  shows only the masked form. If the secret can't be displayed, rotate it to get one
  you can store.
* **Disabled endpoints** (auto-disabled after repeated delivery failures) are
  re-enabled in place with **Enable endpoint**. The endpoint keeps its signing secret.
* **URLs are saved exactly as entered.** A URL that appears to contain a secret key,
  token, or card number is refused, so it can't be saved from the dashboard.
* **Retry an unconfirmed create from the same page.** If a create ends without a
  confirmed result, submit again from that page without changing anything, also
  after reloading it in the same tab: if the endpoint was registered, you get that
  same endpoint and its signing secret instead of a second one. This holds for 24
  hours. If the endpoint was changed since (for example its secret rotated), you
  get that endpoint without its signing secret; rotate the secret on the endpoint
  to get one you can store. If it was deleted since, register it again. A create
  retried another way, such
  as from a new tab, may still register a duplicate you can delete. A rotation or
  an edit whose result wasn't confirmed may already have taken effect.

## Send a test event

Open an endpoint, choose one of the event types it receives, and select **Send test
event**. Fluveo sends one signed test event to the endpoint's saved URL and shows
whether it was delivered, the HTTP status, how long the endpoint took to answer, the
test event id, and up to the first 1,024 bytes of the answer as plain text.

* **Test mode only.** In Live mode the dashboard shows that test events and delivery
  history aren't available, and requests nothing.
* **Clearly a test.** A test event is marked as a test in its signed body
  (`fluveo_test_event: true`, `livemode: false`, an `evt_test_` id). It never appears
  in Events, never counts as a real event, and never creates or changes a payment,
  refund, dispute, or payout.
* **Sent once.** A failed test is shown, not retried, and never counts toward
  disabling the endpoint.
* **Disabled endpoints can be tested.** The test event is still sent, and the
  endpoint stays disabled.
* **https on port 443 only.** Endpoints whose saved URL uses another port or scheme
  can't receive test events; they still receive real deliveries.
* **Limits.** Each limit is a sustained rate with a burst of the same size: per store
  and mode sustained 20 per minute, burst 20; per endpoint sustained 5 per minute,
  burst 5; per destination host, store, and mode sustained 10 per minute, burst 10;
  per destination host across all stores sustained 300 per minute, burst 300. A
  refusal because of a limit is definite: nothing was sent.
* **An unconfirmed result may have been delivered.** If a send ends without an
  answer, check the endpoint's delivery attempts before sending again. If you send
  the same event type again right away from the same open endpoint, it carries the
  same test event id; closing or reloading the endpoint, switching endpoints, or
  sending another type in between starts a new test event.
* **Not yet available in every environment.** Test events stay off until they are
  enabled for the environment; until then the dashboard says so when you send one.

## Delivery history

An endpoint shows its most recent delivery attempts, real and test, newest first:
the event type, the time, whether it was a test, the result, the HTTP status, and the
attempt number where known. **Recent deliveries** on the Webhooks screen merges the
same history across your endpoints and names the endpoint of each attempt.

The history is best-effort: it keeps up to 20 attempts per endpoint from the last 7
days, may be incomplete, and is available in Test mode only. When it can't be loaded,
the dashboard says so instead of showing an empty list; deliveries themselves are not
affected.

This is the dashboard view of [Webhook Endpoints](/webhooks). For the delivery and
verification contract, see [Webhooks](/webhooks) and
[best practices](/webhooks/best-practices).