Webhook Testing

Ephemeral test sessions, the inspector, custom responses, forwarding, and graduation.

Hookstream gives you a free, no-signup webhook testing tool at hookstream.io/test. Open the page, get a unique URL, and inspect every request in real-time. When you're ready, graduate the session to a full account without losing any data.

No account required. No credit card. No install. Open the page and you have a working webhook URL in under a second.

Create a test session

1

Open hookstream.io/test

A session is auto-created on page load. You get:

  • A unique ingest URL: https://hookstream.io/v1/ingest/src_<id>
  • A two-panel inspector (events list on the left, event detail on the right)
  • 14-day TTL or 2,000 requests, whichever comes first
2

Point a provider at it

Paste the ingest URL into any webhook provider, or hit it with curl:

bash
curl -X POST https://hookstream.io/v1/ingest/src_abc \ -H "Content-Type: application/json" \ -d '{"hello":"world"}'

New events stream into the inspector via WebSocket — no refresh needed.

3

Inspect each request

Click an event to see headers, pretty-printed JSON body, query parameters, source IP, and metadata. Hookstream also auto-detects common providers (Stripe, GitHub, Shopify, Clerk, Svix, etc.) and shows a provider badge so you know what you're looking at.

Prefer the terminal? Use the CLI.

hookstream test

test creates a session and opens the inspector URL. listen creates a session and streams events into your terminal in real-time over WebSocket — headers, body, status, the lot.

Customize the response

By default the ingest URL returns 200 OK. You can override that per session to simulate odd behavior (5xx, redirects, custom bodies):

bash
curl -X PATCH https://hookstream.io/v1/test/sessions/sess_abc/response \ -H "Content-Type: application/json" \ -d '{ "status_code": 201, "headers": { "X-Custom": "value" }, "body": "{\"ok\": true}" }'

Forward to localhost (or anywhere)

Tunnel your live test session to your dev server without setting up ngrok:

1

Expose your local endpoint

Use ngrok, Cloudflare Tunnel, or a local URL your laptop can reach from the internet.

2

Enable forwarding on the session

bash
curl -X PATCH https://hookstream.io/v1/test/sessions/sess_abc/forwarding \ -H "Content-Type: application/json" \ -d '{ "url": "https://your-ngrok-url.ngrok.io/webhook", "enabled": true }'

Forwarding runs via waitUntil, so it never blocks the provider's response — hookstream replies instantly and forwards in the background. The forwarding response shows up in the event detail so you can see what your server said.

Everything else you can do

  • Search and filter across received events.
  • Copy as code — hookstream generates ready-to-paste snippets in cURL, JavaScript, Python, and Go for any captured request.
  • Add notes to events (PUT /v1/test/sessions/:id/events/:eid/note) — handy for documenting what each test was for.
  • Export as NDJSON or CSV: GET /v1/test/sessions/:id/export?format=ndjson.
  • Configure a custom response body to simulate provider-side quirks.

Graduate to your account

Sign up and hookstream offers to "graduate" your test session: the ingest URL stays exactly the same, but the source and all its events move into your org with full pipeline support — destinations, retries, alerts, collections, everything.

bash
curl -X POST https://hookstream.io/v1/test/sessions/sess_abc/claim \ -H "X-API-Key: $HOOKSTREAM_API_KEY"

You don't need to update anything on the provider side — the URL keeps working.

Next Steps

Test Sessions API

Full endpoints for sessions, responses, forwarding, and export.

Learn More
Real-Time Streaming

The same WebSocket infrastructure used by the inspector.

Learn More
Ask a question... ⌘I