I work with Laravel on a daily basis, and at some point I started integrating more than one payment gateway into the same project. Each gateway sends webhooks differently: different payload, different headers, signature validated in a different way. Nothing surprising for anyone who's been through this, but the volume of manual testing kept growing fast.

The tools I was already using

I started using expose.dev, since it was already part of the Laravel ecosystem I worked with every day. It worked well for the basics: spin up a tunnel, point the provider at it, receive the webhook. As I started needing more consistent testing, I paid for the version with a fixed subdomain, so I wouldn't have to reconfigure the endpoint on the provider every session.

The problem showed up with persistence. Requests were only visible while the console was open. I'd close the terminal, close the session, and lose the history. To debug something that happened an hour earlier, there was nothing to go back to.

To fix that, I started using webhook.site in parallel, since it keeps a history. The problem is its tunneling is pretty raw: no stable auto-reconnect, and I'd frequently lose the forwarding link, which broke the test halfway through.