Here is the thing nobody tells you about Stripe webhooks: they look simple until they are not.
It was a Friday night. I had just shipped a new feature. Everything worked in development. In production? Silent failure. The payment succeeded, but my database never updated. No error. No warning. Just... nothing.
Three hours of debugging later, I found the problem: my webhook handler was crashing on a malformed payload edge case, Stripe was retrying silently, and by the time I checked, the original event had long expired from the retry queue.
Sound familiar? It turns out this is the most common webhook problem developers face.
What I Built
I stopped that night and built Hooklog — a webhook proxy that gives you full visibility into what is actually hitting your endpoints.
With Hooklog:
- Live payload inspection — see every webhook as it arrives, headers and body
- Failure alerting — get emailed the moment a webhook returns 4xx or 5xx
- Replay — re-send any captured webhook to debug your fix
- No signup required — just create an endpoint and start sending webhooks
It takes 30 seconds to get a URL and start debugging.
Why I Built It
The existing tools (ngrok, Webhook.site, RequestBin) give you URL capture but miss the failure mode that costs developers the most: the silent failure. The webhook that arrives, your server processes it wrong, returns 500, Stripe retries twice, gives up, and you never know it happened until a customer emails you three days later asking why their account was not updated.
Hooklog is built specifically for this. It monitors your endpoint response codes and emails you on failure — so you know in minutes, not days.
The Stack
Built with Next.js, Express, and PostgreSQL. Dockerized, deployed to production over the weekend. Not a complex product — just a focused tool that solves one specific pain.
If you have ever lost an evening to webhook debugging, you know exactly what I mean. Try Hooklog free — no signup required, 10k events/month on the free tier.
Would love feedback from developers who have dealt with this firsthand.
Top comments (0)