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.
  4. Replay it at your own endpoint. Re-fire any captured request (same method/headers/body) at your handler on demand — so you can debug your code against a real Stripe/GitHub payload without waiting for the upstream to send the event again. (SSRF-guarded: it won't let you target localhost or metadata IPs.)

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 continuous forwarding/proxy. Replay is a manual, per-event "re-fire at my endpoint" — not an always-on forwarder that mirrors live traffic. If you want a permanent passthrough, this isn't that.
  • It's not webhook.site with a decade of integrations. It's the small, persistent-history + replay 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)