Stripe · Shopify · GitHub · 另有 19 个
Stripe 发出了。你错过了。它还在这里。
把 Webhook 指向 AnyHook,我们再转发给你。每个事件都在同一份日志里,不管你的服务器有没有响应,任何一个都能一键重放。
在边缘节点为 22 个来源验证签名。添加签名密钥后,伪造的请求永远到不了你的服务器。
- Stripe
- GitHub
- Shopify
- Slack
- LINE
- Discord
- Twilio
- Sentry
- Linear
- Vercel
- Paddle
- Clerk
- Lemon Squeezy
- Intercom
- HubSpot
- Resend
- WooCommerce
- PayPal
- SendGrid
- Svix
- Meta
- Xero
发送方会放弃。你的处理程序会执行两次。
Shopify 只等 5 秒。订单履约要 12 秒。
只改一个 URL。
无需 SDK。处理完成后再返回 200,崩溃就会变成一次重试。
看清每个事件。
收到了什么,你的服务器回了什么,下一次什么时候重试。修好 bug,按下 Replay。
{
"id": 820982911946154508,
"name": "#1042",
"total_price": "129.00",
"financial_status": "paid"
}{ "ok": true }面向 AI 智能体的 API。
在 Claude、Codex 或 VS Code 里添加一个 URL 并登录。你的智能体就能通过 MCP 或普通的 REST 接口配置、检查和重放你的 Webhook。
我们的服务器昨晚宕机了,Stripe 的付款通知一直没到。处理一下。
{ "count": 12, "events": [{ "eventType": "invoice.paid", "status": "failed", "outboundStatus": 503 }, …] }{ "replayed": true, "appSlug": "stripe-payments", "response": { "replayed": 12, … } }{ "events": [{ "eventType": "invoice.paid", "isReplay": true, "status": "success", "outboundStatus": 200 }, …] }你的端点整晚都返回 503,这期间 AnyHook 把 12 个事件全部保存了下来。我已经重放了它们,每一个都收到了 200。
MCP https://anyhook.net/mcp·REST Authorization: Bearer ahk_live_…
流量看得清,也完全由你控制。
一个事件,在 AnyHook 内经过四个环节。
去掉各家 SDK。只验证一个请求头。
22 个来源在边缘节点验证,每次投递都用同一种方式签名。
import { verifyWebhook } from "anyhook-verify";if (!(await verifyWebhook(req, secret)))return new Response(null, { status: 401 });
你的服务器宕机了。
什么都不会丢。
每个事件都会保存下来。重试自动进行,剩下的由 Replay 发送。
为开发者而做。
同一个 Webhook 转发服务,团队最先遇到的三种情况。
发送方会重试。 你的智能体会运行两次。
发送方约 1 秒就能收到 200。你的智能体按套餐可以用 60–300 秒。
简单的定价。
免费开始。付费套餐按事件保留多久、有多少个 App 发送事件来定价。付费套餐的超额部分按量计费,不会悄悄丢弃任何事件。
- 保留期3 天
- 事件10,000/月
- 投递超时60 秒
全部限制
- App 数量1
- 每个 App 的转发目标数3
- 投递次数3
- 请求体上限512 KB
- 超额计费无
- 投递控制不包含
- 告警邮件
- 3 天保留期
- 每日上限 1,000 个事件
- 邮件告警
- 保留期1 年
- 事件50,000/月
- 投递超时120 秒
全部限制
- App 数量10
- 每个 App 的转发目标数20
- 投递次数5
- 请求体上限2 MB
- 超额计费$0.15 / 1k
- 投递控制过滤、限流、延迟
- 告警邮件 + Slack/Discord
- 每个事件保留一年
- Slack/Discord 告警、事件过滤
- 超额按量计费,最高到你设置的上限
- 保留期7 年
- 事件250,000/月
- 投递超时5 分钟
全部限制
- App 数量50
- 每个 App 的转发目标数50
- 投递次数10
- 请求体上限4 MB
- 超额计费$0.17 / 1k
- 投递控制过滤、限流、延迟
- 告警邮件 + Slack/Discord
- 保留七年,可检测篡改
- 无每日上限
- 自定义域名即将推出
- 保留期灵活
- 事件灵活
- 投递超时灵活
全部限制
- App 数量灵活
- 每个 App 的转发目标数灵活
- 投递次数灵活
- 请求体上限定制
- 超额计费定制
- 投递控制包含
- 告警邮件 + Slack/Discord
- SSO 和安全审查
- 专属接入支持
- 定制路由选项
Pro 套餐提供一年的保留期、Slack 或 Discord 告警、事件过滤,超额部分按量计费,而不是丢弃事件。
常见问题,一一解答。
先应答,后处理。Slack 等你的 2xx 只等 3 秒,Shopify 等 5 秒,GitHub 等 10 秒。一次模型调用通常比这更久,于是发送方重试,你的机器人运行了两次,最后 Slack 或 Shopify 会把这个 Webhook 关掉。
把 Webhook 指向 AnyHook,发送方约 1 秒就能收到 200。之后你的处理程序有 Free 60 秒、Pro 120 秒、Scale 5 分钟来完成调用,失败会重试。不用自己搭队列。
可以。但你要承担这些:
可靠性:持久化队列、死信处理、退避状态机。漏掉一个边界情况,你就会同一个订单发两次货,或者悄悄丢掉一个事件。大多数团队是在生产环境、凌晨 2 点发现这些 bug 的。
安全:每个平台的签名方式都不一样。Stripe 是 HMAC-SHA256 + 时间戳,GitHub 是十六进制编码的 HMAC-SHA256,Shopify 是 Base64 编码的 HMAC-SHA256。你要为每个平台维护一个验证器,还要处理密钥轮换和加密存储。漏掉一个 = 接受未签名的流量。
可观测性:调试意味着在一次次 Lambda 调用之间 grep CloudWatch 日志。没有可搜索的事件日志,没有重放,也没有完整的请求体历史。
成本:基础设施每月 $50–$200。真正的成本是每月 $3,000–$5,000 的工程师时间:值班、迁移、排查卡住的重试。AnyHook Pro 套餐$20/月,零维护。
计时的不是同一段链路。Stripe 的计时针对的是到你的公网 URL 的连接。把这个 URL 指向 AnyHook 后,Stripe 等的是我们的边缘节点,边缘节点约 1 秒就返回 2xx,这时你的代码还根本没开始运行。
“投递超时”这一行是我们的投递计时:我们等待你的端点响应的时长(Free 60 秒、Pro 120 秒、Scale 5 分钟)。大多数端点都远在这个时间内响应。更耗时的任务,返回 202 Accepted,然后异步处理。
Zapier/Make 是低代码自动化平台:可视化编辑器、拖拽式流程。AnyHook 是面向开发者的转发服务:你的 Webhook、你的端点、你的代码、你的基础设施。
写代码处理 Webhook?用 AnyHook。在 n8n、Make 或 Zapier 里搭流程?把 AnyHook 放在工作流的 Webhook 触发器前面:平台发给 AnyHook,AnyHook 转发到触发器 URL,工作流宕机期间到达的事件会等你重放,而不是凭空消失。
我们先把事件写入持久化队列,再向发送方返回 200。如果我们的转发器宕机,事件会在队列里等待,恢复后再发出:发送方早已拿到它的 200。
如果边缘节点完全无法保存一个事件(队列和两个备用存储都不可用),它会改为返回 503,由发送方自己的重试兜底。AnyHook 从不为没有保存下来的事件返回 200。
可用性数据公布在 status.anyhook.net。
行:这正是 AnyHook 的用途。不管你的智能体要多久,我们都会约 1 秒应答 Stripe。
你的端点应该立即返回 202 Accepted,然后异步处理。AnyHook 的投递超时(Free 60 秒、Pro 120 秒、Scale 5 分钟)只作用于最初那一次 HTTP 往返。
你的服务器不再响应时,每个发送方会怎么做。
它们最终都会放弃,只是放弃的方式各不相同。下面是它们公开的规则、你能用来恢复的时间窗口,以及窗口关闭后再也找不回的东西。
- Stripe 禁用了你的 Webhook 端点。这是恢复步骤。Stripe Webhook 回调端点被禁用,30 天的恢复窗口比听起来要短。顺序:重新启用,再用 Events API 回填。
- Shopify 删除了你的 Webhook 订阅:原因全在这 5 秒Shopify 只给你的端点五秒,四小时内重试八次,然后删除订阅。没有任何报错。订单只是不再进来。
- GitHub Webhook 收不到:只有一次尝试和三天时间GitHub 不会重试失败的 Webhook 投递,一次都不会。投递记录只保留三天,之后一次出问题的部署就让你永久失去这些事件。
- WooCommerce Webhook 不是在下单时发出的WooCommerce Webhook 回调靠 Action Scheduler 和 WP-Cron 发出,只在有人访问网站时才运行。连续失败超过五次,Webhook 就会被禁用。
全部 28 篇指南,包括 Slack、Twilio、HubSpot、n8n,以及讲同一个 Webhook 收到两次的几篇。
还在本地联调?内网穿透地址每次重启都会变,而平台那边完全不用知道。
同样的问题,只是另一端换成了模型:回调要求几秒内应答,而你的处理程序调用模型要花更久。