Documentation Menu

Debug Stripe Webhooks Locally in 2 Minutes

The Problem with Free Tunnels

Stripe's webhook infrastructure is highly strict. They require an HTTPS endpoint that responds within seconds. If you use the free tier of generic tunneling tools, your forwarding URL changes every time you restart your tunnel. This forces you to constantly log into the Stripe Dashboard, update the endpoint URL, and re-copy the new signing secret (whsec_...). This creates massive friction during local development.

Hookmetry solves this by giving you a permanent, persistent forwarding URL. You configure Stripe once, and you never have to touch the dashboard again.

Step 1: Install Hookmetry CLI

Install the CLI globally to securely route traffic from our edge network directly into your local machine.

npm install -g @hookmetry/cli

Step 2: Start the Secure Tunnel

Point the CLI to the exact local route handling Stripe events (e.g., your Express app running on port 3000):

hookmetry listen --forward localhost:3000/webhook/stripe

The CLI establishes an outbound WebSocket connection, meaning it works through corporate firewalls and NATs without opening any inbound ports on your router.

Step 3: Configure Stripe (Just Once)

  1. Go to your Stripe Developer Dashboard > Webhooks.
  2. Click Add an endpoint.
  3. Paste your permanent Hookmetry Forwarding URL into the Endpoint URL field.
  4. Select the events you want to listen to (e.g., payment_intent.succeeded).
  5. Click Add endpoint.

See it in Action

Trigger a test payment in Stripe. The payload hits Hookmetry's edge, traverses your secure tunnel, and lands directly in your local Node.js debugger with full headers and raw body bytes intact. You never have to restart or reconfigure Stripe again.

Was this page helpful?

Your feedback helps us improve the docs.