Skip to content

Introduction

Hookman is a webhook routing proxy for developers. It gives you a single stable URL that you configure in Stripe, Paddle, GitHub, or any other webhook provider — once — and never change again. Instead of updating the endpoint every time you switch branches, you tell Hookman where each branch lives and flip a switch.

The problem Hookman solves

Most webhook providers expect a single destination URL. That works fine in production, but during development you’re constantly switching between branch deployments:

  • mainhttps://myapp.com/api/webhooks
  • feature/checkouthttps://pr-42.preview.myapp.com/api/webhooks
  • feature/billinghttps://pr-51.preview.myapp.com/api/webhooks

Every branch switch means opening the Stripe dashboard (or running the Stripe CLI), finding your webhook endpoint, updating the URL, saving it, switching back to your code. Multiply that by every developer on your team and every webhook provider you use.

Hookman eliminates that loop entirely.

How it works

  1. You get a Hookman endpoint — something like https://hookman.dev/w/acme/payments
  2. You set that as your webhook URL in Stripe (once, never again)
  3. You register your deployments with Hookman — branch name → URL
  4. You switch the active branch in the Hookman dashboard or CLI

Hookman proxies every incoming webhook to whichever deployment is currently active, in under 5ms of added latency. The original request — headers, body, everything — is forwarded unchanged.

When you need Hookman

Hookman is useful if you:

  • Use preview deployments (Vercel, Netlify, Cloudflare Pages, Render, Railway)
  • Test webhooks from Stripe, Paddle, GitHub, Shopify, Twilio, or similar
  • Work in a team where multiple developers are on different branches simultaneously
  • Spend more than two minutes per week updating webhook endpoint URLs

When you don’t need Hookman

  • You only ever develop against one environment (e.g. always localhost via the Stripe CLI)
  • Your webhook provider supports multiple endpoints natively and you’re happy managing them
  • You’re not using preview/branch deployments

Architecture

Hookman is built entirely on Cloudflare’s infrastructure:

  • The proxy runs on Cloudflare Workers at the edge, worldwide
  • Route config is stored in Cloudflare KV — lookups happen in < 1ms
  • Webhook payloads (for replay) are stored in Cloudflare KV with automatic TTL-based expiry
  • Structured data (projects, deployments, logs) lives in Cloudflare D1

This means the proxy itself adds negligible latency — it’s just a KV read and a forwarded fetch, both happening at the edge closest to your webhook sender.

Next steps

import { LinkCard, CardGrid } from ‘@astrojs/starlight/components’