DEV Community

Conor Dobbs
Conor Dobbs

Posted on

Debugging webhooks without print statements: I built RequestTrace on Cloudflare Workers

Every webhook integration I've ever wired up broke the same way: the provider says it sent the event, my handler says it got nothing useful, and I'm left adding console.log everywhere, redeploying, and waiting for the next event to fire so I can squint at it again.

The usual fix is a disposable-URL inspector like webhook.site. It's great — until you close the tab and lose the exact payload you were about to debug. I wanted the same instant capture, but with history that sticks around and is tied to an account I can come back to. So I built RequestTrace.

What it does

  1. Grab a trace URL. Make an account (magic link, no password) and generate a unique endpoint.
  2. Point a webhook at it. Paste the URL into Stripe, GitHub, Shopify, or anything that sends an HTTP POST.
  3. Inspect every request. Full method, headers, query string, and the raw, untruncated body for every hit — stored and searchable by timestamp, not lost when you close a tab.

How it's built

The whole thing is one Cloudflare Worker with D1 for storage. That means:

  • Capture runs on the edge, close to wherever the provider fires from — low latency, no origin server to keep alive.
  • There's no agent, no client library, no config file. If it can send an HTTP POST, RequestTrace catches it.
  • It's cheap enough to run that the free tier (3 active traces, 7-day retention) can stay genuinely free.

What it deliberately doesn't do

  • No replay/re-fire (yet). It shows you exactly what arrived; it doesn't resend it. That's the most requested thing and it's on the list, but I'd rather ship the honest version first.
  • It's not webhook.site with a decade of integrations. It's the small, persistent-history version.

Where it's at

Free tier is live and free to use today. A Pro tier ($19/mo, longer retention + more traces) is on the page but I haven't wired payments yet — I want to learn whether persistent searchable history is worth choosing over the ephemeral tools before turning on billing.

Try it: https://requesttrace.croncanary.dev

If you debug integrations for a living, I'd genuinely like to know: is "history I don't lose" the feature that makes you switch, or do you actually prefer the zero-account throwaway flow? That answer decides what I build next.

Top comments (0)