← All articles

Webhook Pricing Models: Per-Event, Per-Seat, Self-Hosted

Webhooker Team Updated 11 min read
Flat illustration of webhook pricing models: one pipe carrying the same traffic, metered four different ways by a dial gauge, a stack of coins, a row of seats, and a self-hosted unit with a wrench that is a blue node carrying the Webhooker pulse.

Webhook pricing for webhook gateway infrastructure usually follows one of four models: per-event pricing on inbound webhooks, per delivery, per seat, or self-hosted with no vendor invoice at all. Each model is predictable under one workload and painful under another. Per-delivery billing charges you for fan-out, per-seat billing charges you for hiring, and self-hosting charges you in engineer-hours nobody put on a purchase order. The unit being metered matters more than the headline price.

Teams often find that out after signing. Two services can advertise similar monthly prices and differ by an order of magnitude on the same workload, because one counts the webhooks that arrive and the other counts the requests that leave. Only the first tracks your business volume.

Why webhook pricing is hard to compare

The category has no shared unit. Vendors meter inbound events, outbound deliveries, active destinations, workspace seats, or some combination, and the pricing page rarely says which one moves when your traffic moves.

Take a concrete workload. You receive 50,000 Stripe events a month, and each has to reach three internal services: a billing worker, an analytics pipeline, a Slack notifier. Under an inbound meter that is 50,000 billable units. Under a delivery meter the same traffic is 150,000. Your business is the same in both cases. The second model simply counts fan-out you would have done anyway.

Now add a bad afternoon. One destination returns 503s and the gateway retries each delivery six times before giving up. If retries are billable, someone else’s outage lands on your invoice. For a product-by-product view rather than the models behind them, we keep a separate piece on how the main webhook gateways compare, plus a checklist for shortlisting EU-hosted Hookdeck alternatives that puts billing unit and overage next to residency.

Table: the four common pricing models, the unit each one meters, and the workload shape that makes each one expensive.

ModelMetered unitPredictable whenBreaks when
Per-event (inbound)Webhooks receivedTraffic tracks business volumeFan-out is billed separately on top
Per-deliveryOutbound HTTP requestsOne event goes to one placeYou fan out, or a destination fails and retries
Per-seatWorkspace membersThe team is stable and smallYou onboard support, ops or contractors
Self-hostedNothing, upfrontYou already run queues at scaleSomeone has to be on call for it

Model 1: per-event, metered inbound

The meter runs when a webhook arrives at your ingest URL. One POST from Stripe, one billable event. It maps cleanly onto how a business grows: more orders means more order.created webhooks means a bigger bill, in roughly linear proportion, and you can forecast it from your own dashboards.

One question decides whether the model holds. If the vendor charges per inbound event and per outbound delivery, you are on a hybrid and the inbound price is half the story. Ask directly: if this event has to reach four destinations, do I pay once or four times? The answer moves the effective price by 4x, and the pricing page does not always give it.

Model 2: per-delivery

The meter runs on the way out: each attempted request to a destination is a billable unit, so one event delivered to four services costs four units.

The bigger cost is what this model does to your architecture. Once fan-out is metered, every new consumer carries a line-item cost, and engineers respond rationally: they stop adding destinations. Instead of routing payment.succeeded to three small, independently deployable services, someone builds one fat endpoint that receives everything and re-dispatches internally. That is a message bus rebuilt inside your application, badly, to avoid a billing line. The invoice shows the deliveries you avoided and none of the coupling you took on.

Per-delivery billing also moves other people’s reliability problems onto your bill. Retries are deliveries, and a well-behaved gateway makes a lot of them, since exponential backoff is designed to keep trying long after a destination stops answering. A destination down for two hours produces the same events, more attempts, and a larger invoice. Find out whether retries are billed before anything else. Some vendors bill only the first attempt, which removes most of the sting.

Model 3: per-seat

Seat-based pricing decouples cost from traffic entirely. You pay for people with dashboard access, whatever the volume of webhooks they watch. For a small team with heavy volume that can be the cheapest arrangement available, and the bill moves only when headcount does.

It also penalizes the behavior you want. Support wants to check whether a customer’s order fired, and an ops engineer wants the delivery log during an incident. When each of those is a purchasing decision, teams share one login and lose the audit trail that made the dashboard worth having. Check whether read-only access costs the same as full access.

Model 4: self-hosted

Run the queue yourself and there is no per-event fee at all. For teams already operating Postgres, a job runner and an on-call rotation, this is a legitimate answer: the marginal cost of one more consumer of existing infrastructure can be near zero, and a Postgres job queue on SKIP LOCKED is a smaller lift than a broker.

The bill still exists; it is denominated in engineer-hours. Signature verification per source, exponential backoff with jitter, per-destination circuit breakers, a dead-letter queue with replay, per-attempt history you can search. None of these is hard in isolation. Together they are a product, and the maintenance never finishes: someone owns it during the incident, someone answers “did this webhook arrive?” at 23:00. A separate article works through what self-hosted webhooks cost to build and run in detail.

Self-hosting can be the right answer. The problem is that its cost rarely enters the comparison, so on a spreadsheet it always appears to win.

The overage trap

Overage is the rule a vendor applies to events above your plan’s quota. It is the part of a webhook price most likely to surprise you, because you do not control how many events your providers send.

Usage-based overage means the meter keeps running past your plan limit at a per-unit rate. For gradual growth that is fair. Spikes are different. A provider replays a backlog after their own incident. A misconfigured source starts sending every state change instead of the three you subscribed to. A system you do not own decides what your invoice says, and you find out at the end of the month.

Three designs are common:

Ask the operational question rather than the pricing one: at 101% of quota, does my event get delivered, and does anyone tell me?

What to check before you sign

Ask a webhook vendor these seven questions before you sign. The answers move your monthly bill more than the headline price per event does.

A worksheet you fill with your own numbers

Reduce every candidate to one comparable figure:

effective cost per inbound event = monthly bill / events received in your busiest month

Use the busiest month rather than the average, because averages hide the spike that overage billing charges for.

Table: fill the middle column from your own traffic, then run each vendor’s model against it.

LineYour numberWhy it matters
Inbound events, busiest monthThe base unit under an inbound meter
Destinations per event (average)Multiplier under a per-delivery meter
Deliveries = events × destinationsThe base unit under a delivery meter
Retry attempts per failed deliveryMultiplier during someone else’s outage
Worst month as % of averageYour real overage exposure
Retention needed, in daysSet by your support process, not the vendor
People who need delivery historySeat limits bind sooner than teams expect

Two rows do most of the work. If destinations-per-event is above one, per-delivery pricing costs a multiple you can calculate exactly. If your worst month sits well above average, the overage rule matters more than the base price.

How Webhooker prices it

We chose the inbound meter for the reason the worksheet points at: of the units above, it is the one that tracks your business rather than your architecture.

One event is one inbound webhook received on your ingest URL. Fan-out to many destinations is not billed per delivery, so routing order.created to five services costs the same as routing it to one. Delivery retries are not new events either; the meter runs once, when the webhook arrives.

On quota, there is no overage billing. Usage up to 120% of your monthly quota is allowed at no charge on every plan. If you pass that buffer regularly, the next plan up is cheaper than the extra usage would be. Paid plans are billed in euros with a VAT invoice, monthly or yearly.

The yearly cycle is twelve months at the price of ten: Pro €290 a year instead of €348, Team €990 instead of €1,188, with the same quotas, retention and features either way. You pick the cycle at checkout, and Free has no yearly option. Event quotas stay monthly on a yearly subscription; only the amount you pay changes.

Retention is a cost lever for us too. Ours is 14 days on Free, 30 on Pro and 90 on Team, with data deleted automatically at the end of the window. Ordered delivery and a static outbound IP are Team-plan features. Quotas, sources, destinations and seats for each plan are on the pricing page.

To check the worksheet against live traffic, point one real source at an ingest URL on a Free account (10,000 events a month, no card) for a week, then compare the event count on your dashboard with the deliveries a per-delivery meter would have charged for.

Frequently asked questions

Do retries count as events?

On Webhooker, no. One event is one inbound webhook received on your ingest URL, and nothing after that is metered again: fan-out to several destinations, retries with exponential backoff against a failing endpoint, or replay from the dead-letter queue. The only way a retry reaches the meter is if the upstream provider re-sends because it never received an acknowledgement. Under per-delivery pricing elsewhere, retries are frequently billable, so ask explicitly before comparing headline prices.

What happens if I go over my monthly quota?

Usage up to 120% of your plan quota is served at no charge, on every plan. There is no overage billing and no surprise invoice, so a provider replaying a backlog or a heavy sales week does not become a line item you never agreed to. If you pass the buffer month after month, the next plan up is cheaper for your traffic, and changing plan takes effect from the dashboard right away.

Is per-event pricing always cheaper?

No, which is why the worksheet exists. If nearly every event goes to a single destination and your team is large, a seat-based or delivery-based plan can work out lower. If you already run Postgres, a job runner and an on-call rotation, self-hosting can be cheaper in cash while costing more in attention. Per-event billing wins when you fan out, when your volume is spiky, and when you want more people looking at delivery history rather than fewer.