Live routing active

One endpoint.
Every branch.
Zero reconfiguring.

Hookman sits between your webhook provider and your deployments. Point Stripe (or Paddle, or GitHub, or anything) at one stable URL — Hookman routes it to whichever branch you're working on.

1,000 webhooks/month free. No card.

You know this pain.

You're deep in a PR for feature/checkout. You need to test Stripe webhooks. So you do this:

1

Open the Stripe dashboard

Navigate to Developers → Webhooks. Find your dev endpoint.

2

Update the endpoint URL

Change it to your branch's preview URL. Remember the path. Paste it. Save.

3

Test your branch. Merge your PR.

Now you're on main. The endpoint still points to the dead preview URL.

4

Switch to a new branch. Repeat.

Every single time. For every webhook provider. For every developer on your team.

This isn't a Stripe problem. It's every webhook service. Paddle, GitHub, Shopify, Twilio — they all have the same model: one endpoint URL, configured once, expected to never change. Your branch deployments change constantly.

Configure once. Route forever.

Set the Hookman URL in Stripe once. Then tell Hookman where each branch lives. Switch branches in your dashboard in one click — or let the GitHub Action do it automatically.

Before
# Every time you switch branches...
stripe webhooks update wh_xxx \
--url https://pr-NEW.myapp.com/webhooks
# Then when you merge...
stripe webhooks update wh_xxx \
--url https://myapp.com/webhooks
# Oh you forgot to update the Paddle one
# And the dev on your team has a different branch
# 😔
After
# Configure Stripe once, forever:
stripe webhooks update wh_xxx \
--url https://hookman.dev/w/acme/pay
# Register your branch deployment:
hookman register \
--branch feature/checkout \
--url https://pr-42.myapp.com
# Done. Hookman routes it. ✓

First webhook in 3 minutes.

Seriously. Here's every step.

1

Create a project

Sign up and create a project. Pick a slug — this becomes part of your Hookman endpoint. Your project maps to one webhook integration (e.g. your Stripe setup, or your GitHub webhooks).

Your endpoint: https://hookman.dev/w/your-org/your-project
2

Register your deployments

Tell Hookman where each branch lives. Use the dashboard, the CLI, or drop the GitHub Action into your workflow and let it handle registration automatically whenever a preview deploys.

# CLI — run this in CI or locally
hookman register \
--org acme \
--project payments \
--branch feature/checkout \
--url https://pr-42.myapp.com/api/webhooks/stripe
Pro tip: Set HOOKMAN_API_KEY in your environment and drop the --key flag entirely.
3

Point your provider at Hookman

In Stripe (or wherever), update the webhook endpoint URL to your Hookman endpoint. You'll never need to change this URL again.

# Stripe CLI
stripe listen \
--forward-to https://hookman.dev/w/acme/payments
# Or configure via Stripe dashboard —
# same URL, never changes
4

Switch branches in one click

When you want to route webhooks to a different branch, flip the switch in the dashboard — or use the CLI. No Stripe dashboard. No copy-pasting URLs. The GitHub Action can do it automatically on every deployment.

# Manual switch via CLI
hookman switch \
--org acme \
--project payments \
--branch feature/checkout
# ✓ Webhooks now routed to feature/checkout
Or add routing metadata. If your webhook payload includes a branch identifier (common with platform webhooks), Hookman can route automatically without any manual switching. Read about routing strategies →

Drop in the GitHub Action.
Never think about it again.

The Hookman GitHub Action listens for deployment_status events — which fire when Vercel, Netlify, or Cloudflare Pages post a preview URL back to GitHub. It registers the deployment automatically, and removes it when the PR closes.

.github/workflows/hookman.yml
name: Hookman webhook routing
on:
deployment_status: # Vercel/Netlify/CF Pages posts the preview URL here
pull_request:
types: [closed] # Clean up on merge
jobs:
hookman:
runs-on: ubuntu-latest
steps:
- uses: hookman-dev/register-deployment@v1
with:
api-key: ${{ secrets.HOOKMAN_API_KEY }}
org: acme
project: payments
webhook-path: /api/webhooks/stripe

Works with any platform that posts deployment URLs back to GitHub — Vercel, Netlify, Cloudflare Pages, Render, Railway, and more. Full reference →

Route however makes sense for you.

Every team works differently. Hookman supports three routing strategies — use one, or combine them.

Manual switch

Flip the active deployment in your dashboard or with hookman switch. Webhooks follow. Good for solo developers who control the flow.

Header routing

Include a routing key in a custom header (e.g. x-hookman-branch: feature/checkout) and Hookman routes to the matching deployment automatically.

Payload routing

Point Hookman at a field in your webhook JSON body (e.g. metadata.branch) and routing happens based on whatever value the sender includes.

Replay

Hookman stores every webhook payload. Hit replay to re-deliver to any deployment — great for debugging without having to trigger a real payment or event again.

Auto-register via CI

The GitHub Action registers and removes deployments automatically. Merge a PR? The deployment is cleaned up. No stale routes.

Retry on failure

If your branch is spinning up, Hookman retries delivery with backoff rather than dropping the webhook. Available on Pro and Team.

Start free. Upgrade when you scale.

No credit card to get started.

Free
£0/mo

For solo devs and side projects.

  • 1 project
  • 3 deployments per project
  • 1,000 webhooks/month
  • 7-day log retention
  • All routing methods
  • Webhook replay
Start free
Team
£49/mo

For teams with multiple collaborators.

  • Unlimited projects
  • Unlimited deployments
  • 500,000 webhooks/month
  • 90-day log retention
  • Up to 5 team members
  • Priority support
Start with Team

Full pricing comparison →

Your webhooks deserve better than copy-paste.

Get a Hookman endpoint in 60 seconds. Free to start, no card required.

Get your endpoint free