An event is one capture, or one delivery
Exactly two things count as an event:- A capture — a request reaches one of your endpoints and is stored.
- A delivery — a stored event is forwarded to one destination. Each destination is its own event.
What is never counted
The nastiest surprises in usage-based products come from the things you didn’t think you were
paying for. webhook.co counts none of the following.
- Retries. A delivery counts once, when it’s first dispatched — however many attempts the fixed exponential schedule takes to land it. A receiver’s downtime is never your cost.
- Duplicates that dedup collapses. When deduplication folds a retry into the event you already have, it never becomes a second capture.
- Verification handshakes. A provider’s
GETor echo challenge is a control message — never stored, never counted. - Reading your own data. Listing events, inspecting payloads, tailing, and replaying to localhost cost nothing on any surface. (A replay that forwards to a destination is a delivery, and that delivery counts.)
- Forwarding to your own machine.
wbhk listen --forwardandwbhk replayPOST from your CLI, on your machine — we make no outbound request, so there’s no delivery to count. Only the capture does. - A delivery we refuse to send. If a destination’s URL resolves to a private or internal address, we block the request before it leaves our network. Nothing was dispatched, so nothing is billed — however many times a misconfigured URL trips it.
Deleting an event does not reduce your usage. You can delete an individual captured event at
any time (via the API, the CLI, or an MCP agent) — its content is redacted immediately and its
stored payload body is purged shortly after, so it can no longer be read or replayed. But the
event was already counted when it was captured, so deleting it never lowers what you were billed.
This is deliberate: a metered unit you can un-count by deleting after the fact isn’t an honest
counter.
The metering model
Two principles fall out of the single unit above:- One dimension, disclosed up front. You’re metered on events and nothing else, and the unit is stated where you create an endpoint — there’s never a hidden counter running behind a feature you didn’t know you’d triggered.
- A soft cap that pauses, not a surprise bill. The design is to alert you as you approach a limit and then pause capture rather than run up an overage. Your captured data stays exactly where it is; you resume by raising the limit.
Check your usage
Your current usage is available on every surface (thewhk_ key needs billing:read):