Quickstart
This guide takes you from zero to a working webhook routing setup. You’ll need a Hookman account — the free tier is enough for everything here.
Time to complete: ~3 minutes.
-
Create a project
A project maps to one webhook integration — for example, your Stripe checkout webhooks, or your GitHub repository webhooks. Each project gets its own Hookman endpoint.
Go to your dashboard, click New project, and choose:
- Name — human-readable, shown in the dashboard
- Slug — used in your endpoint URL; lowercase, hyphens only; can’t be changed later
Your endpoint will be:
https://hookman.dev/w/{org}/{project}For example:
https://hookman.dev/w/acme/payments -
Register your first deployment
Tell Hookman where your branch deployment lives. Pick your preferred method:
Install the CLI and register your deployment:
Terminal window # Install globallynpm install -g hookman# Authenticate — opens your browserhookman login# Register a deploymenthookman register \--org acme \--project payments \--branch main \--url https://myapp.com/api/webhooks/stripeIn your project view, click Add deployment, then fill in:
- Label — the branch name (e.g.
main,feature/checkout) - Target URL — the full URL including path (e.g.
https://myapp.com/api/webhooks/stripe)
Click Save. The deployment appears in your list immediately.
Add this workflow file to register deployments automatically whenever a preview URL is available:
.github/workflows/hookman.yml name: Hookman webhook routingon:deployment_status: # fires when Vercel/Netlify/CF Pages posts a preview URLpull_request:types: [closed] # clean up on mergejobs:hookman:runs-on: ubuntu-lateststeps:- uses: hookman-dev/register-deployment@v1with:api-key: ${{ secrets.HOOKMAN_API_KEY }}org: acmeproject: paymentswebhook-path: /api/webhooks/stripeAdd
HOOKMAN_API_KEYto your repository secrets. See GitHub Action for full options. - Label — the branch name (e.g.
-
Set this as your webhook URL
Configure your webhook provider to POST to your Hookman endpoint. Do this once — you’ll never need to change it.
Terminal window # Stripe CLIstripe webhooks update wh_xxx \--url https://hookman.dev/w/acme/paymentsOr via the Stripe Dashboard: open your endpoint, click Update details, paste your Hookman URL.
In the Paddle Dashboard: go to Notifications, open your notification destination, update the URL to your Hookman endpoint.
In your repository: Settings → Webhooks → Edit, update the Payload URL to your Hookman endpoint.
Any provider that sends a POST request works — Hookman is provider-agnostic. Find the webhook URL setting in your provider’s dashboard and paste your Hookman endpoint.
-
Switch to a branch deployment
When you want webhooks to go to a specific branch, set it as active:
In your project view, find the deployment you want to activate and click Set active. The green indicator moves to that deployment. All incoming webhooks are now forwarded there.
Terminal window hookman switch \--org acme \--project payments \--branch feature/checkout
Verify it’s working
Send a test webhook from your provider and check the Logs tab in your project dashboard. You should see an entry with:
- The routing method used (e.g.
switch) - The deployment it was forwarded to
- The response status from your target
- The end-to-end latency
If the log shows a routing failure, check troubleshooting common errors.
What’s next
- Core concepts — understand projects, orgs, and deployments
- Routing strategies — set up automatic routing without manual switching
- Webhook replay — re-deliver stored webhooks for debugging
- CLI reference — all commands and flags