Skip to main content
Refer to Webhooks concept for how signed delivery works. Refer to Events reference for the wire contract.

Overview

A subscription matches Events by type and filter. A destination receives them as signed HTTP POSTs. Create both in one call with subscriptions create, or attach a second subscription to an existing destination. Providers and custom URLs use the same model. Discover provider fields with dome webhooks providers list. Operating limits (body cap, rate, retention) are on Webhooks. The typical workflow is:
  1. Create a subscription and optional filters.
  2. Test the destination, then verify signatures on custom HTTPS endpoints.
  3. Inspect attempt history and replay failures when needed.
  4. Rotate the signing secret when credentials change.

Requirements

Before you begin, authenticate to Dome and select a workspace.

Permissions

Webhook operations require platform permissions. People and scoped API keys call the webhooks API. Agent credentials cannot. Most roles can inspect subscriptions and deliveries. Creating destinations, rotating secrets, and changing subscriptions need eventing.manage. Replay re-sends requests to your systems and can trigger downstream automation, so it uses a separate eventing.replay permission.

Create a subscription

Create a subscription and its destination atomically. A failed request leaves neither record behind. The response reveals the destination’s whsec_… signing secret once. Store it before moving on. It is only rotatable afterward, never readable. On the API, pass either delivery_endpoint (create a new destination) or destination_id (attach to an existing one). Never both. Standalone destination RPCs (ListDestinations, CreateDestination, UpdateDestination, RotateDestinationSecret, DeleteDestination) support shared-destination setups. CLI and MCP create the destination inline with the subscription. The dashboard can also pick an existing destination.
Requires eventing.manage.
Custom HTTPS endpoint:
Slack via incoming-webhook URL:
For provider-specific settings, credentials, shared destinations, MCP, and API examples, see the webhooks CLI reference.

Filters

You can narrow which events deliver. An event must satisfy every filter that applies to its type. A filter constrains only event types that carry its field. Exact match
Glob pattern (* any run, ? one char, full-value match)
OR set (repeat the same key)
Filter keys: agent_name, connection_name (resolved from IDs at delivery time), agent_id, tool_name, plus each event type’s own filterable payload fields. The dashboard Event catalog marks them. Repeated keys OR. Distinct keys AND. Caps: 16 keys, 16 alternatives per key, 256-byte patterns with up to 8 wildcards. Per-request security decisions (mcp.tool_call.completed, mcp.tool_result.filtered, llm.output.filtered, access.denied) are high volume. Point them at a log sink rather than a chat channel, and narrow with filters.

Test a subscription

Send a fixed eventing.test event through a subscription’s destination to verify signing, headers, and the destination’s own routing.
Requires eventing.manage.
The command prints the queued delivery ID. Check the outcome with dome webhooks deliveries get <id>.

Verify a signature

Verify custom HTTPS deliveries with any Standard Webhooks library. Return 2xx within 10 seconds to acknowledge. Acknowledge first, process async. Slow handlers time out and burn retry budget.

Inspect deliveries

Inspect delivery attempt history, including the retained body while it is available.
Requires eventing.view.
Failed deliveries in a time window:
One delivery with attempt history and the retained body:

Replay deliveries

Replay one delivery or bulk-replay failures in a window. A replay creates a new delivery from the retained body (fresh webhook-id, same Dome-Event-Id) so consumers that dedupe correctly ignore the overlap. Bulk replay processes up to 500 deliveries per run. Repeat to continue. Canceled deliveries are never recovered.
Requires eventing.replay.
Replay one delivery:
Bulk-replay terminal failures from the last 24 hours:
Narrow by subscription and status:
replay-failed prints matched · replayed · skipped (body expired) · failed. It is safe to re-run: deliveries with a live or succeeded replay are not matched again.

Rotate the signing secret

Rotate a destination’s signing secret without dropping deliveries. For 24 hours, the webhook-signature header carries a signature per key (current first, previous second) so a consumer verifying with either secret keeps working. Update your verifier to the new secret within the 24-hour grace window.
Requires eventing.manage.
The command prints the new signing secret once (whsec_…) with its key ID.

Next steps