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 curl to simulate one

Step 1 — Install the FirmHook CLI

bash
pip install firmhook

Or with uv (faster):

bash
uv tool install firmhook

Verify:

bash
firmhook --version

Step 2 — Start the tunnel

Point the tunnel at whatever port your local server is running on:

bash
firmhook 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:

bash
curl -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?