hookstream
The modern event gateway for developers. Ingest, transform, route, and deliver webhooks with retries, DLQ, real-time streaming, and full observability.
hookstream is an event gateway that sits between your webhook senders and your infrastructure. It ingests events, applies filters and transforms, delivers them to 8 destination types with automatic retries, and gives you end-to-end observability. Built on Cloudflare Workers and Durable Objects, it's fast at the edge and cheap to run.
What you can build
Core primitives
Sources
A source is a webhook endpoint. Each source gets a unique URL like https://hookstream.io/v1/ingest/<source_id> that accepts any HTTP method. Optional signature verification, IP filtering, deduplication.
Destinations
A destination is where events get delivered. Every destination runs on its own DeliveryScheduler Durable Object with retries, circuit breaker, and DLQ.
Connections
A connection links a source to a destination. Add content-based filters and JSONata transforms to shape what gets delivered where.
Events
Every incoming request becomes an event — immutable, searchable, replayable. See live delivery attempts in the dashboard or via WebSocket.
Try it right now
No signup required — open the test inspector, copy the temporary URL, and send it a POST. You'll see the event land live in the two-panel inspector with headers, body, and a custom response configurator.
bashcurl -X POST https://hookstream.io/v1/ingest/<source_id> \ -H 'Content-Type: application/json' \ -d '{"type": "order.created", "data": {"id": "ord_123", "amount": 4999}}'
javascriptawait fetch('https://hookstream.io/v1/ingest/<source_id>', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ type: 'order.created', data: { id: 'ord_123', amount: 4999 }, }),});
pythonimport requestsrequests.post( 'https://hookstream.io/v1/ingest/<source_id>', json={'type': 'order.created', 'data': {'id': 'ord_123', 'amount': 4999}},)
gobody := []byte(`{"type":"order.created","data":{"id":"ord_123","amount":4999}}`)http.Post("https://hookstream.io/v1/ingest/<source_id>", "application/json", bytes.NewReader(body))
You don't need to run a server to receive webhooks. Use webhook testing to spin up an instant public URL and inspect requests in real time.