Webhook Tunnel · private beta

Durable webhook capture and replay

Keep one stable webhook URL, forward requests to localhost, and replay failed payloads without upgrading to an enterprise webhook router.

100 beta spots left0 / 100 claimed
Free beta for first 100 usersReplay includedNo lost Stripe payloads
Live simulation

Webhook request in motion

18ms
ProviderStripe
POST /in/0123456789ABCDEFGHijklmnopq
202 accepted · body saved
CLIlocalhost
$ webhook listen 8080
connected: /in/0123456789ABCDEFGHijklmnopq
forwarding to localhost:8080
Dashboardlive request visible
POST/webhooks/stripe200

See the webhook that failed locally

Every request is captured before forwarding, so a local 500 is no longer a lost Stripe, GitHub, or Lemon Squeezy payload.

Local Stripe tunnel/in/0123456789ABCDEFGHijklmnopq
POST/webhooks/stripe500
POST/webhooks/stripe200 replay
{
  "type": "checkout.session.completed",
  "customer": "cus_test",
  "amount_total": 1200
}

What it saves

Short feedback loops for the webhook failures that usually burn a debugging session.

Stripe checkout failsReplay the exact payload after the fix.
GitHub sends onceInspect headers and body without asking for another event.
Local server restartsCapture still lands before forwarding resumes.

Why not ngrok?

ngrok is a tunnel. This is a tunnel with durable request history, inspector, and replay built in.

Beta testFree for first 100 users

Free

24h history, stable URLs, Replay enabled.

$0

Pro

30 day history, custom domains, and up to 5 teammates.

~$12/mo

On-prem

Self-hosted license, 90 day history, and private infrastructure.

One-time

Built for developers who hit the same wall

“My local endpoint returned 500 and the provider will not resend the same payload.”
“I need ngrok for the URL, but Hookdeck feels too heavy for a weekend project.”
“I want request history and replay without moving webhook routing into enterprise tooling.”

Quickstart

  1. Create a free beta account.
  2. Issue an API key in the dashboard.
  3. Run webhook listen 8080.
  4. Send provider webhooks to your immutable /in/<publicId> URL.
  5. Inspect and replay captured payloads when local code fails.
Claim beta spot