Eventfy
Eventfy vs ngrok

ngrok tunnels anything. Eventfy just catches webhooks — permanently.

They solve different problems, and the honest answer is a lot of people need both. This page is about the one job that matters here: getting a webhook from Stripe, GitHub, or Shopify onto your machine without losing it.

Pick ngrok if…

You need to expose any local port — a full app, a webhook, a webhook, an internal demo — for a live session right now, and you don't need what happened yesterday.

Pick Eventfy if…

You specifically deal with webhooks, want a URL that never changes, and want a real history of what arrived while you weren't watching.

Side by side

 ngrok (free tier)Eventfy
URL stabilityNew random URL every restart, unless paidPermanent from day one, on every plan
Works while your laptop is offNo — tunnel dies with the processYes — it's a hosted catcher, not a tunnel
Event historySession-only inspector, gone on restart30–90 days, searchable
Re-fire a payload with editsReplay only, no editingEdit any field, re-fire as many times as needed
SetupInstall a binary, create an account, auth tokenSign up, copy a URL — nothing to install to receive events
Local forwardingYes, that's the core featureYes, via the CLI, once you're ready to write the handler
General-purpose tunneling (non-webhook)Yes — that's what it's forNo — Eventfy is intentionally scoped to webhooks

Where ngrok is actually the better call

If you need to expose a whole app, not just catch webhooks

Demoing a full local app to a client over a video call, sharing a local build for someone else to poke at, exposing a port that isn't a webhook receiver at all — that's squarely ngrok's job, and Eventfy doesn't try to do it. If your actual need is "tunnel my localhost," use ngrok. If your need is specifically "I keep losing Stripe webhooks between restarts," that's the problem Eventfy exists for.

The actual moment this matters

It's not a feature checklist that decides this — it's the specific 20 minutes where a webhook fires while your tunnel is down, or you've restarted ngrok for the fifth time today and forgotten to update the URL in Stripe again. Eventfy's catch URL is the same URL forever, so that specific failure mode just doesn't happen. Everything else — the CLI forwarding, the re-fire, the test suites — exists to make the debugging loop after that faster too.

Try it on your next webhook

5-day free trial. Real card verification, nothing charged until the trial ends.

Start free trial