How to test webhooks online

You're integrating a service that sends webhooks — GitHub, Stripe, Shopify, Twilio, a payment provider, an internal system — and you need to see exactly what it sends before you write a line of handler code. The fastest way is to point the webhook at a capture URL and watch the requests arrive.

1. Create a capture URL

Click the button at the bottom of this page, or from a terminal:

$ curl https://catchhook.catchhook.workers.dev/new

You get two URLs: one to send webhooks to (/h/…) and one to watch them arrive (/b/…). No account required.

2. Point the service at it

Paste the /h/… URL into the service's webhook settings (GitHub repo → Settings → Webhooks, Stripe dashboard → Developers → Webhooks, etc.), or just curl it yourself to try it out:

$ curl -X POST https://catchhook.catchhook.workers.dev/h/YOUR_BIN -H 'content-type: application/json' -d '{"event":"ping"}'

3. Inspect what arrived

Open the dashboard URL. Every request shows up live within a couple of seconds — method, path, query params, all headers, and the body (JSON pretty-printed, forms decoded). From there you can:

Testing retries and failures

Most webhook senders retry on non-2xx responses. In your bin's settings, set the response status to 500 and watch how (and when) the service retries. Set a 10-second response delay to see what its timeout policy is. Then flip back to 200.

When you'd rather stay in the terminal

$ curl -s https://catchhook.catchhook.workers.dev/cli -o catchhook && chmod +x catchhook
$ ./catchhook tail YOUR_BIN     # live-streams captures into your shell

No signup needed. Or from your terminal: curl https://catchhook.catchhook.workers.dev/new

← All guides · Docs · CatchHook vs webhook.site