DEV Community

Vojislav Mihailovic
Vojislav Mihailovic

Posted on

Why I built a self-hosted alternative to webhook.site

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:

  1. Create a named endpoint in the dashboard
  2. Point any service (Stripe, GitHub, Shopify) at your unique URL
  3. Watch requests stream in live
  4. Inspect headers, body, and query params in a collapsible JSON tree
  5. 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)