Hookfire vs Hookdeck

Hookdeck gets webhooks into your systems reliably. Hookfire gets them in front of a person. Different jobs, often at the same company.

These two get compared because they both sit at the front of a webhook, but they are pointed in different directions, and choosing between them on a feature grid would mean answering a question nobody asked.

Hookdeck's consumer is a system. It exists so that the events your application depends on survive your deploys, your outages and your rate limits: they are received at the edge, queued, retried, filtered, transformed and delivered to your endpoints, with a record of every attempt and a way to replay in bulk when something was wrong for six hours. It is infrastructure, and the win is measured in events that did not get lost.

Hookfire's consumer is a person. It exists so that somebody finds out. The value is not in the event reaching a machine. It is in the sentence that ends up on a lock screen at the moment the charge failed, with the amount and the customer already in it, written by somebody who looked at what Stripe actually sends. Everything around it is about that: filter rules so the phone only buzzes for what matters, priorities so the important ones cannot be slept through, quiet hours so the unimportant ones can, channels so a team sees what a team should see.

There is genuine overlap in the middle, since both filter, both retry, both keep a delivery history and both push back against spikes, but the overlap is in the mechanism, not in the point. Hookdeck's rate limiting protects your endpoint from a flood. Hookfire's hourly cap protects a human being from two hundred buzzes, which is why, past the cap, the events still arrive and still land in the history: they simply stop interrupting anyone.

Where they differ

The shape of each tool rather than its price list, because that is the part that is still true next quarter.

Hookdeck Hookfire
Who the event is for Your application or service A person: phone, inbox, email or a team channel
What you set up Connections, rules and destinations, in a dashboard or by API An integration and a list of events, in a form, in a few minutes
Local development A CLI that forwards live events to localhost while you build Not a development tool
Transformation Change the payload before it reaches your code No payload transformation; templates change what the notification says, not what is delivered onward
Filtering Rules on the event before it reaches a destination Rules on the payload before anyone is interrupted, written as dot path, operator and value
Retry and replay Retries and bulk replay as a core part of the gateway Three automatic attempts per delivery, plus replaying one by hand from the history
Pushing back on spikes Rate limiting so a burst does not overwhelm a destination An hourly cap per integration; past it events still arrive and are recorded, they just stop buzzing
Noticing silence Alerting on delivery problems An integration that was delivering and has stopped raises its own alert

The parts that only make sense when the consumer is human

Notification templates written per event

Not a generic rendering of the payload: a sentence for `charge.failed` specifically, with the amount and the customer in the title, and a tap-through link to the charge.

Per-person delivery

The same integration can push to one person, email another and post to a shared channel, because the people are the destinations.

Priorities that repeat

Critical alerts re-send every five minutes, up to six times, until somebody acknowledges them through the API, a concept that only makes sense when the consumer is human.

Quiet hours, snooze and mute

Three different ways of saying not now, none of which lose the event, all of which would be meaningless for a machine destination.

Setup without an engineer

Paste a URL, paste a signing secret, tick the events you care about. No connections to model and nothing to deploy.

Choose Hookdeck if

Hookdeck is an event gateway for developers: it ingests webhooks, queues them, retries them, filters and transforms them, routes them to destinations and gives you the observability and replay around all of that, including forwarding events to localhost while you are building.

  • The consumer is a service, not a person. Almost nothing on this page applies to that problem, and Hookfire is the wrong tool for it.
  • You need webhooks to survive your own deploys and outages. A queue in front of your application is exactly the right shape and Hookfire is not one.
  • You want to develop against live events on localhost.
  • You need the payload transformed, or one event routed to several of your own services with different rules.
  • The failure you are managing is events being lost, not events being missed.

Choose Hookfire if

33 providers already mapped and verified, turned into notifications a person can act on.

  • The consumer is you, and what you want is your phone buzzing with something you can act on without opening anything.
  • Nobody on the team wants to build the part that turns a delivered event into a sentence worth reading.
  • You want the alert routed per person, and to a shared channel, rather than to an endpoint.
  • You want the alert to repeat until somebody acknowledges it.
  • The person setting this up would rather not write code at all.

Using both

They sit in series without arguing. A gateway in front of your application and Hookfire beside it is a common enough shape: providers can usually send the same event to two URLs, so your systems get the reliable path and your phone gets the readable one, without either depending on the other.

From the Hookfire side there are two ways to connect them. Hookfire can forward a webhook it has already verified on to your own HTTPS endpoint, signed with a per-destination secret in the same timestamped HMAC scheme Stripe uses, with the destination re-checked against a fresh DNS lookup immediately before each request. And on Max, a custom source accepts JSON from anything that can POST, including a gateway, once you have written a short YAML definition saying what each event's notification should say.

What Hookfire will not do is pretend to be the reliable path. It makes three attempts per delivery and keeps a history you can replay by hand. If your requirement is that no event is ever lost, that requirement belongs to a gateway.

Common questions

Is Hookfire a webhook gateway?
No. It receives webhooks, verifies them, notifies people and can forward the verified payload on to your own endpoints. It does not queue on your behalf, does not transform payloads and makes no delivery guarantee a gateway would make.
Can Hookfire sit behind a gateway?
On Max, through a custom source, since it accepts JSON from anything that can POST. Note that a gateway usually re-signs or strips the original signature, so what you gain in routing you lose in Hookfire being able to verify the provider itself.
Does Hookfire retry failed deliveries?
Three automatic attempts per delivery, and any delivery can be replayed by hand afterwards against whatever the templates and subscriptions say at that point, which is how you check that a fix worked rather than hoping.
Does Hookfire filter like a gateway does?
Similar mechanism, different purpose. A rule reads a value by dot path, compares it and decides whether the event is worth interrupting someone for. There is no routing decision behind it, because there is only one kind of destination: people.
We already run a gateway. Is there anything left for Hookfire to do?
Only if somebody currently finds out about important events by checking a dashboard. That is the entire gap, and it is either a real one at your company or it is not.

See it on your own events

If the events already flow reliably and nobody finds out about them, that is the gap Hookfire fills.