Webhooks + email · one event log
Catch every event,
even when nothing's listening.
Point a webhook or an email address at AnyHook: every event caught, retried, and kept in one log your code or your agent reads back.
Signatures verified at the edge for 21 sources. Forged requests never reach your server.
Senders give up. Your handler runs twice.
Every retry-on-timeout sender hits the same wall. Four flavors of the same pain, you're probably hitting at least one.
Stripe 10s. LLM 45s.
Sender times out → retry → 2× credits for one payment.
Slack 3s. Agent 15s.
Slack retries → bot dumps identical replies.
Vercel kills @ 10s.
Cold start → 504. Sender retries → 504 loop.
Server down. Events pile up.
Sender exhausts retries → 147 events lost forever.
Change one URL.
No SDK. No code changes. Point Stripe, GitHub, or Shopify at your AnyHook inbound URL, we queue, buffer, and forward.
Three steps. Thirty seconds. Async decoupling for your webhooks.
Swap the URL
In Stripe, GitHub, or Shopify, replace your endpoint with your AnyHook inbound URL. Paste your provider's webhook signing secret so AnyHook can verify every request at the edge.
We queue it instantly
AnyHook's edge verifies the signature and drops the webhook into a durable queue before answering, which takes ~0.4s. The sender gets its 200, your backend processes at its own pace.
Your API receives it
Events flow from the queue to your endpoint on a controlled schedule. Full payload, headers, and delivery status, all visible in one dashboard.
See every event.
Inbound payload, each delivery attempt, and the response body, one screen before you hit Replay.
APIs for AI agents.
Give your agent an API key. It handles the rest, provisioning, monitoring, and recovery through a simple REST API.
Provision a relay
Your agent creates a webhook relay and gets an inbound URL. Point Stripe at this URL, AnyHook verifies signatures and forwards to your endpoint.
Clear traffic, full control.
Receive → normalize → log → deliver. Every webhook visible at each hop, from inbound to your API.
Catch it fast.
Edge ack in ~0.4s.
Cloudflare Workers at the edge accept the webhook, queue it durably, and only then return 200, in ~0.4s median, 1.1s p95. The tightest sender budget is 3s. Your downstream can take as long as it needs.
Drop the SDKs. Check one header.
Stripe, GitHub, Shopify, every provider signs differently. Paste your provider's signing secret once, and AnyHook validates every request at the edge. You get one unified signature.
Original provider headers preserved. Your existing SDK verification still works, or just check one AnyHook header and skip the rest.
Supported Event Sources
Zero-config signature unification
Unified AnyHook-Signature
21 sources, one HMAC. AnyHook verifies Stripe/GitHub/Shopify signatures at the edge, then re-signs every delivery with a fresh AnyHook-Signature. Verify once on your server, trust everything.
Retry-safe by design
Original provider signatures expire after ~5 minutes, retries fail verification on your server. AnyHook solves this: we verify once at the edge, then re-sign with a fresh timestamp on every retry. Your server never sees an expired signature.
Original headers preserved
Raw body forwarded byte-for-byte with original Stripe-Signature intact. Need to double-verify on first delivery? Your existing SDK still works, AnyHook-Signature is additive, not a replacement.
AES-256-GCM encrypted at rest
Every webhook payload, header, and signing secret is encrypted before it hits the database. Zero plaintext secrets stored. A database breach yields only ciphertext.
Your server goes down.
Nothing is lost.
Timeout? 500? Deploy gone wrong? AnyHook absorbs the impact, protects your quota, and holds every event until you're ready.
Exponential backoff
5xx or timeout? We retry on an increasing schedule, 5 min, 30 min, 2 hours, 12 hours. Client errors (400, 422, etc.) are marked failed immediately, no wasted retries.
Circuit breaker
20 consecutive failures → progressive pause (10 min → 30 min → 2 h → 24 h → deactivate). Inbound keeps receiving, only outbound pauses. Any single success resets everything.
Failure alert
When all retries are exhausted, you get an email with the event ID, destination, HTTP status, and a direct link to the event in your dashboard.
Batch replay
Server back up? One call to POST /replay-failed replays every failed event. Or inspect first with GET /undelivered. Replays don't count against your quota.
Built for builders.
Same webhook relay, three common situations teams land in first.
Senders retry. Your agent runs twice.
Slack 3s · GitHub 10s · Stripe 10s · Your LLM 45s.
Every retry-on-timeout sender hits the same wall. Stripe retries at 10s. Slack at 3s. GitHub at 10s. Shopify at 5s. Your handler fires again mid-run, duplicate fulfillment, dirty DB rows, duplicate messages, duplicate token burn. We catch the event in ~0.4s and hold it until your agent finishes. One delivery, guaranteed.
Swap the URL. Ship tonight.
No SQS. No DLQ config. No SDK.
Point your Stripe webhook here instead of your server. We handle retries, logs, and replay. Developing locally? Set your destination to a tunnel URL, or capture real events in production and replay them to localhost anytime.
Don't build it. Outsource it.
$20/mo beats 2 weeks of your time.
Queue, worker, DLQ, dead-letter alerts, manual replay UI. You've done it before. It still silently drops under load. Outsource the commodity work.
Simple pricing.
Start free. Upgrade when your traffic grows. No surprise bills on Free, metered overage on paid plans so we never silently drop your events.
- EventsCovers a Stripe SaaS with ~200 customers, a GitHub team of 20, or a Shopify store with ~500 orders/month. More than enough for most indie projects.3,000 / month
- HistoryHow long AnyHook keeps your events, fully replayable the whole time. After this period events are permanently deleted.3 days
- TimeoutTime AnyHook waits for your endpoint to respond. Enough for most endpoints. For longer tasks (AI agents, batch jobs), return HTTP 202, AnyHook handles the rest.60s
All limits
- Apps1
- Delivery attempts3
- Max payload512 KB
- OverageNone
- 100 events / day cap
- Email alerts
- Email support
- EventsTotal webhook events AnyHook will receive and attempt to deliver per calendar month.50,000 / month
- HistoryYour events, kept for a year: full replay for 30 days, then a read-only encrypted archive. The log is sealed daily into a published hash chain, so any later edit is detectable and you can recompute it yourself from /api/v1/anchors. Browse, export, and delete archived events from the dashboard's Archived view. Fair use 50 GB included.1 year
- TimeoutTime AnyHook waits for your endpoint to respond. Great for AI agents and heavier processing. For tasks over 2 minutes, return HTTP 202, AnyHook handles the rest.120s
All limits
- Apps10
- Delivery attempts5
- Max payload2 MB
- Overage$0.90 / 1k
- No daily cap
- 1-year tamper-evident history
- Metered overage, events never dropped
- EventsTotal webhook events AnyHook will receive and attempt to deliver per calendar month.250,000 / month
- HistoryYour events, kept for seven years: full replay for 90 days, then a read-only encrypted archive. The log is sealed daily into a published hash chain, so any later edit is detectable and you can recompute it yourself from /api/v1/anchors. Browse, export, and delete archived events from the dashboard's Archived view. Fair use 250 GB included.7 years
- TimeoutTime AnyHook waits for your endpoint to respond. Built for AI agents, multi-step workflows, and heavy processing. Return HTTP 202 if you need even longer.5 min
All limits
- Apps50
- Delivery attempts10
- Max payload4 MB
- Overage$0.70 / 1k
- No daily cap
- 7-year tamper-evident history
- Custom domains soon
- EventsFlexible
- HistoryFlexible
- TimeoutFlexible
All limits
- AppsFlexible
- Delivery attemptsFlexible
- Max payloadCustom
- OverageCustom
- SSO and reviews
- Dedicated onboarding
- Custom routing options
Most teams start with Pro, production-grade volume, zero maintenance. Retry queues, dead-letter handling, idempotency, let us own the complexity so you can ship what matters.
FAQ
You can. Here's what you're signing up for:
Reliability: Idempotency keys, dead-letter queues, backoff state machines. One missed edge case and you double-process a payment or silently drop an event. Most teams find these bugs in production, at 2 AM.
Security: Every provider signs differently. Stripe HMAC-SHA256 + timestamp, GitHub raw SHA-256, Shopify Base64. You maintain one verifier per provider, handle key rotation, encrypted storage. Skip one = accepting unsigned traffic.
Observability: Debugging means grepping CloudWatch across Lambda invocations. No searchable event log, no replay, no full payload history.
Cost: Infra is $50-200/mo. The real cost is $3,000-5,000/mo in engineer time: on-call, migrations, debugging stuck retries. AnyHook Pro is $20/month and zero maintenance.
Different hops. Stripe's clock runs on the connection to your public URL. Point that at AnyHook and Stripe waits on our edge, which returns 2xx in ~0.4s median, 1.1s p95 against the 10s Stripe allows.
The Timeout column is our delivery clock: how long we wait for your endpoint to respond (60s Free, 120s Pro, 5 min Scale). Most endpoints respond well within that. For tasks that take even longer, return 202 Accepted and process async.
Zapier/Make are low-code automation platforms: visual editors, drag-and-drop flows. AnyHook is a developer-grade relay: your webhook, your endpoint, your code, your infrastructure.
Writing Python or TypeScript to process webhooks? Use AnyHook. Want "if payment → send email" without code? Use Zapier.
Events are written to a durable queue before we return 200 to the sender. If our Forwarder is temporarily down, events queue up and process on recovery. The sender already got their 200, no retries, no data loss.
Uptime published at status.anyhook.net.
Yes: that's exactly what AnyHook is for. We acknowledge Stripe in ~0.4s median, 1.1s p95, well inside the 10s it allows. Your Agent runs as long as it needs.
Your endpoint should return 202 Accepted immediately, then process async. AnyHook's delivery timeout (60s Free, 120s Pro, 5 min Scale) only applies to that initial HTTP round-trip.
No. Return 200 as soon as the webhook is authenticated. Run business logic async. This is Stripe's recommended pattern.
With AnyHook: edge validates signature → event queued → Stripe gets its 200 in ~0.4s median, 1.1s p95 → failures retried and replayed in AnyHook instead of forcing Stripe to redeliver.