LLM call > 20s → Stripe marks failure, retries → handler runs twice → duplicate fulfillment.
/v1/webhook_endpoints · status: failed
Your handler takes 45s for an LLM call. Stripe gives up at 20s and retries. Your customers get double-fulfilled, and your CFO sees the chargebacks.
AnyHook sits between the sender and your handler. Queues, retries, dedupes, logs everything, without touching your handler code.
evt_3Pk2X3b1Lcx
Request timed out. Retrying in 5 min (1 / 3).
$ stripe webhooks update we_1234
--url in.anyhook.net/u/app
✓ Endpoint updated
✓ Delivering to AnyHookevt_3Pk2X3b1Lcx
attempt 1 · idempotent · 47.2s handler
// before
await llm.run(evt); /* 45s */
// after
return Response.json({ ok: true });duplicates prevented
127
LLM call > 20s → Stripe marks failure, retries → handler runs twice → duplicate fulfillment.
/v1/webhook_endpoints · status: failed
Bot must reply in 3s. AI agent takes 30s → Slack drops the event entirely. User sees nothing.
Function killed at 10s. Cold start + AI inference = 504. Sender retries → 504 loop.
Production webhook traffic. Cheaper than 2 weeks of building retries yourself.
You never have to take our word for a delivery. The signature verification library and MCP server are Apache 2.0: github.com/gba3124/anyhook-mcp. The relay service itself is not open source.
Sign up with email or Google. AnyHook gives you an inbound URL like https://in.anyhook.net/you/app. No credit card needed for the free tier.
Open Stripe Dashboard → Webhooks → edit the endpoint → paste the AnyHook URL. Same change works for GitHub, Shopify, Slack, Discord, Paddle. Your handler code stays untouched.
AnyHook returns 200 to the sender in ~0.4s, queues the event, and forwards to your handler with retries + idempotency. Failed events sit in the dashboard with a one-click Replay button.
Good fit
Not a fit
If you've got eng bandwidth to install an SDK and rewrite handlers as durable functions, Inngest is great. AnyHook is for teams who want it solved without changing their handler shape, change one webhook URL, keep your existing code.
Yes. 3,000 events / month (capped at 100 / day), 1 app, no credit card. We keep it small enough that hobby projects ship, but tight enough that production traffic upgrades naturally. No tricks, no expiry.
GitHub, Shopify, Slack, Discord, Paddle, Linear, Clerk, same URL swap pattern works for all of them. Signature verification is auto-detected from the incoming headers.
Partly, and it is worth being precise about which parts. The signature verification library and the MCP server are Apache 2.0 at github.com/gba3124/anyhook-mcp, so you can check every delivery we sign without trusting us and without a dependency on us. The relay service that receives, stores and retries is not open source, and there is no self-host build today.
We store it encrypted at rest (AES-256-GCM) for the retention window of your plan (3 / 30 / 90 days), then it's gone. The key never leaves our infra. You can also enable zero-retention mode where we never persist the body.
On Free, we return an error at the cap and the sender's own retries take over, nothing is silently dropped. Upgrading to Pro lifts the limit immediately; Pro overage is $0.90 / 1K events, with an optional spending cap in the dashboard if you'd rather block than pay.
Sign up free, get your inbound URL, swap it in Stripe. AnyHook absorbs the retries, your handler keeps running exactly the way it does today.