catchbinJoin the waitlist
Launching as a public beta — second half of 2026

Permanent webhook URLs. Inspect, replay, and debug — without reconfiguring providers every week.

One tool that replaces webhook.site and ngrok — permanent webhook URLs, persistent event history, localhost forwarding, and signature debugging that tells you why verification failed.

catchbin launches as a public beta in the second half of 2026 — free at launch, no price tag and no checkout. Join the waitlist to get in early.

Bin Crew — 100 founding spots, free forever. Be one of the first 100 accounts at launch.

No spam. One email when we launch.

dashboard.catchbin.io / endpoint / abc123
stripe.payment_intent.succeeded200 OK14ms
github.pull_request.openedqueued
shopify.orders.create500 ERR22ms
247 events captured todaylive

Free at launch

Free

For everyone, at launch

Available to anyone who signs up. Permanent webhook URLs are included — they don't expire.

Bin Crew
first 100

Free forever, first 100 accounts

More endpoints, longer retention, and more CLI sessions than the free tier. Claimed by the first 100 accounts at launch and kept free for life.

Solo
coming later

For heavier solo use

A paid solo tier with higher volume and longer retention arrives after launch. Nothing is paid at launch — pricing isn't set yet.

Exact limits aren't finalised yet. The waitlist gets first word when they are.

If you integrate Stripe, you've done this dance

You configured a webhook.site URL, copied it into the Stripe dashboard, watched events flow in for an afternoon — then came back a week later to find the URL had expired. The history is gone. You reconfigure Stripe.

Next attempt: the Stripe CLI. It forwards to localhost, which is what you wanted, except it only works for Stripe and only while your laptop is open. Your teammate can't reproduce the bug because the events never reached anywhere persistent.

So you pay for ngrok, pay for webhook.site Pro, glue them together, and the first signature failure you hit comes back asinvalid signature — no indication of which byte, which header, or which middleware silently rewrote the body.

How it works

Three components: a permanent receiver, durable storage, and a small CLI that tunnels into your dev machine.

01

Catch

Stripe, GitHub, Shopify, or any generic POST hits your permanent catchbin URL. The URL is yours forever — it does not expire when your trial ends.

02

Store

Every byte is persisted, encrypted at rest — 7 days on Free, 14 days on Bin Crew. Headers, raw body, timestamp, source IP. Searchable, exportable, replayable.

03

Forward / Replay

Pipe live events to localhost through the Go CLI, or replay any historical event to staging with a re-signed payload your handler will accept.

SIGNATURE DEBUGGER

Stop guessing why signatures fail.

When verification fails, catchbin compares what was signed against what arrived and tells you which assumption broke. Most failures are body-mutation issues introduced by a framework middleware between the wire and your handler.

  • Byte-level body comparison
  • Timestamp tolerance analysis
  • Secret format and header structure checks
evt_3PqZk2RxC7Lm1Q8F
signature failed
  • Raw body byte count: 1,847 received vs. 1,852 signed → mismatch
    Middleware is likely modifying body before handler sees it.
  • Timestamp age: 42s (within tolerance)
    Webhook arrived 42 seconds after Stripe signed it.
  • Secret format: starts with whsec_ (looks correct)
    Matches Stripe's secret prefix convention.
  • Header format: valid
    stripe-signature includes t=, v1=, and v0= as expected.

One command. Live on localhost.

The CLI is a single Go binary. No daemon, optional config file.

~/projects/api
$ catchbin forward abc123 localhost:3000

 Connected to catchbin cloud receiver
 Forwarding endpoint: abc123 → localhost:3000

  [10:42:01] stripe.payment_intent.succeeded200 OK (14ms)
  [10:42:38] stripe.customer.updated200 OK (9ms)
  [10:44:55] stripe.charge.failed500 ERR (22ms)

How it compares

Three tools developers reach for when a webhook isn't behaving. Here's what each one gives you on its free tier.

FeatureCatchbinwebhook.site (free)ngrok (free)
Permanent URLYesExpires after ~7 daysChanges each session
Event historyPersistent (7–14 days at launch)Limited~24 hours
One-click replayYesNoNo
Forward to localhostYes (Go CLI)NoYes (tunnel)
PriceFree at launchFreeFree

Questions

Short answers to what people ask before signing up.

Do Catchbin URLs expire?

No. Your webhook URL is permanent. Configure Stripe, GitHub, or any provider to send to it once and it keeps working — it does not rotate when a trial ends or after a few days of inactivity, so you never have to reconfigure the sending provider. Captured events are retained for your plan's history window, which is 7 to 14 days at launch.

Is Catchbin free?

Yes, free at launch with no checkout. There is a Free tier for everyone, and a "Bin Crew" tier that is free forever for the first 100 accounts, with more endpoints, longer retention, and more CLI sessions. A paid Solo tier arrives later; nothing you sign up for at launch is taken away.

How is it different from webhook.site?

Catchbin URLs are permanent and never expire, every event is stored and encrypted, and you can replay any captured event with one click. webhook.site's free URLs expire after about a week and it has no replay, so configured providers break and history is lost.

Does it work with providers other than Stripe?

Yes. Catchbin captures any webhook or generic HTTP POST — GitHub, Shopify, Twilio, Paddle, or your own services. The signature diagnostics are tuned for common providers like Stripe, but the capture, storage, and replay features work for any source.

Can I forward webhooks to localhost?

Yes, through a single Go CLI binary. Point it at your endpoint and it streams live events to a local port, so you can develop against real webhook traffic without a tunnel and without exposing your machine to the public internet.

When does Catchbin launch?

Catchbin launches as a public beta in the second half of 2026. Join the waitlist to get in early and to claim one of the 100 free-forever Bin Crew spots.

Get in before catchbin opens.

Public beta lands in the second half of 2026. The waitlist hears first.

Bin Crew — 100 founding spots, free forever. Be one of the first 100 accounts at launch.

No spam. One email when we launch.