Hookrail
Receive, verify, and deliver webhooks

Webhooks that arrive.

Receive webhooks, verify signatures, transform payloads, and deliver them to your endpoints, with retries until each one lands.

How it works

One hop between your provider and your app

Point a provider at a Hookrail ingest URL and give Hookrail your endpoint. It verifies, filters, and retries in between.

Why Hookrail

What you get

The parts you would otherwise write twice: retries, verification, routing, and somewhere to look when one fails.

Automatic retries & replays

Failed deliveries retry on a backoff schedule you set. Replay any event by hand, one at a time or in bulk.

Issues with Slack & Discord alerts

Repeated failures open a persistent issue you acknowledge and resolve. Alerts post to a Slack or Discord webhook.

Signature verification

Reject payloads the sender didn’t sign. Pick a provider preset, or set the header, format, and key yourself.

Filters & transformations

Send a destination only the events it cares about, and reshape the payload before it goes out.

Quarantine

Webhooks that fail verification are held instead of dropped, so you can see what arrived and why it was rejected.

Multi-project with a REST API

Keep environments and teams in separate projects. Everything in the UI is in the REST API too, behind an API key.

Test against your laptop

The CLI signs in from the terminal and streams live deliveries to a local port.

$ hookrail login
 Logged in to Acme
$ hookrail listen 3000 --source stripe
stripe → http://localhost:3000
Waiting for events… (Ctrl-C to stop)
When one fails

You find out before your customer does

Every attempt keeps its response code and body, so a failure is something you can read rather than guess at. Statuses mean one thing across the whole app.

  • delivered
  • retrying
  • failed
One minute of setup

Start receiving webhooks you can inspect, retry, and replay