Webhook 相关项目名字很像,但问题域差很多:有的是「收到 HTTP 就跑脚本」,有的是「帮 SaaS 把事件可靠推给客户」,有的是「收 Stripe / GitHub 这类入站回调」。本文只谈 webhook 本身;本地要把公网回调打进开发机,见 内网穿透工具对比。先分清方向再选型。
先分三类
| 类型 | 典型需求 | 代表 |
|---|---|---|
| 入站接收(Inbound) | 接第三方回调:验签、缓冲、回放、触发本地动作 | Hookdeck Event Gateway、adnanh/webhook |
| 出站投递(Outbound / WaaS) | 给客户发 webhook:多租户、重试、签名、订阅门户 | Svix、Hook0、Hookdeck Outpost |
| 双向网关 | 同一套系统既收又发 | Convoy |
下面以开源 / 可自建为主,托管价目会变,以官网为准。
总表
| 项目 | Stars(约) | 语言 | 许可 | 方向 | 定位一句话 |
|---|---|---|---|---|---|
| webhook | 12k+ | Go | MIT | 入站 | 配置文件定义 hook,触发后执行本地命令;不适合要校验 secret 和 signature 的场景 |
| Svix | 3.3k+ | Rust | MIT | 出站为主 | 生产级 Webhooks-as-a-Service;推过 Standard Webhooks 规范 |
| Convoy | 2.8k+ | Go | Elastic 2.0 | 双向 | 自建 webhook 网关:摄取、投递、重试、熔断 |
| Hook0 | 1.4k+ | Rust | SSPL v1 | 出站 | 轻量 WaaS;Cloud / 自建同代码;偏 EU |
| Outpost | 1k+ | Go | Apache-2.0 | 出站 | 开源出站投递;可投 HTTP / 队列 / 对象存储等 |
相邻但不在同一赛道
| 项目 | 说明 |
|---|---|
| Standard Webhooks | 规范 + 验签库,不是投递平台;自建签名协议时优先对齐它 |
| webhook.site / Svix Play 类 | 临时收包调试,不是生产投递 |
| ngrok / Cloudflare Tunnel / Hookdeck CLI | 内网穿透 / 开发期把回调打到本机,见 内网穿透工具对比 |
| 自写「HTTP POST + 重试」 | 原型可以;多租户、门户、熔断、签名轮换做久了成本会追上上面这些项目 |
怎么选
- Git / 脚本钩子、单机自动化 → webhook(adnanh)。
- SaaS 出站、要成熟度与生态 → Svix(托管优先;自建用 MIT server)。
- 必须自建且入站+出站一体 → Convoy(先确认 ELv2 与维护节奏是否可接受)。
- 自建出站、欧盟 / 同代码无阉割叙事 → Hook0(先确认 SSPL)。
- 出站要多目的地或入站要重度缓冲 → Hookdeck(Outpost / Event Gateway)。
- 只统一签名格式 → 实现侧对齐 Standard Webhooks,平台另选。
- 只是本地接公网回调 → 不属于本文选型;用内网穿透工具即可。
许可与定价变动快:上生产前再核对各仓库 LICENSE、自建文档和托管报价。