If you've ever developed a webhook integration, you've probably used webhook.site.
It's convenient — paste the URL, fire your event, inspect the payload. Done.
But then I started working on a Stripe integration and realized something uncomfortable:
I was sending live payment event data to a third-party server I know nothing about.
So I built HookDash.
The problem with cloud webhook tools
Tools like webhook.site are great for quick tests, but they have real limitations:
- Your sensitive payloads go through someone else's server — Stripe events, GitHub push hooks, internal API callbacks
- Monthly fees — $9 to $29/month for features that should be basic
- Request history disappears — close the tab, lose everything
- No multi-user support on free plans
- Zero control over data retention
For hobby projects this is fine. For anything with real user data, it's a problem.
What I built
HookDash is a self-hosted webhook inspector you deploy on your own server.
Here's how it works:
- Create a named endpoint in the dashboard
- Point any service (Stripe, GitHub, Shopify) at your unique URL
- Watch requests stream in live
- Inspect headers, body, and query params in a collapsible JSON tree
- Replay any request with a single click
Everything runs on your infrastructure. Your data never leaves your server.
Tech stack
I built it with tools I already use daily:
- Laravel 12 — backend, routing, queue jobs
- React 19 + Inertia.js v2 — frontend without the API overhead
- shadcn/ui — clean, accessible components
- Laravel Reverb — WebSockets for real-time request streaming
- MySQL 8 — persistent request history
- Laravel Fortify — authentication out of the box
The real-time part was the most interesting challenge. Laravel Reverb made WebSocket
broadcasting surprisingly straightforward — each incoming webhook fires a broadcast
event that the React frontend picks up instantly via Echo.
The replay feature
My favorite feature is one-click replay.
During development you often need to re-trigger a webhook handler — maybe you fixed a
bug, or you want to test a different code path. Normally you'd have to go back to Stripe
dashboard, find the event, and manually resend it.
With HookDash you just hit replay. The original request — headers, body, everything —
gets re-sent to your handler instantly.
Try it
Live demo: https://demo.hookdash.io
No signup needed, just click around and fire some requests at the demo endpoint.
I'd love feedback — especially if you have feature requests or things that feel off in
the UX. What would make this more useful for your workflow?
Top comments (0)