First Webhook in 5 Minutes
Receive a webhook on your local machine in under five minutes. No account required.
What you'll need
- Python 3.8+ (to install the CLI)
- A local server running on any port — or use
curlto simulate one
Step 1 — Install the FirmHook CLI
bashpip install firmhook
Or with uv (faster):
bashuv tool install firmhook
Verify:
bashfirmhook --version
Step 2 — Start the tunnel
Point the tunnel at whatever port your local server is running on:
bashfirmhook listen 3000
You'll see output like this:
firmhook 0.2.0 | Press Ctrl+C to stop
Tunnel URL: https://api.firmhook.com/tunnel/a3f2c1d4-...
Forwarding: http://localhost:3000
Ready. Waiting for requests... (Ctrl+C to stop)The Tunnel URL is a public HTTPS endpoint. Anything posted to it is forwarded to http://localhost:3000 in real time.
Step 3 — Send a test request
Open a second terminal and post to your tunnel URL:
bashcurl -X POST https://api.firmhook.com/tunnel/<your-session-id> \ -H "Content-Type: application/json" \ -d '{"event": "test", "message": "hello from firmhook"}'
You'll see the request appear in the firmhook listen output:
→ POST http://localhost:3000 [application/json]
← 200 (18ms)Step 4 — Paste the URL into any webhook provider
Copy the Tunnel URL and paste it into any service that sends webhooks — Stripe, GitHub, Shopify, or your own app. Every incoming request is forwarded live to your local server.
Note: The tunnel URL is valid only while firmhook listen is running. Pressing Ctrl+C immediately invalidates it. Re-run the command to get a new URL.What's next?
- Local Development — persistent dev mode with event history and retries
- Create Your First Endpoint — set up a production-grade ingest pipeline
- Platform Setup — full walkthrough of organisations, API keys, sources, and routing rules