Stripe · Shopify · GitHub · ほか 19 サービス
Stripe は送った。受け取れなかった。それは、まだここにある。
Webhook の URL を AnyHook に向ければ、AnyHook がサーバーに転送します。すべてのイベントはサーバーが応答したかどうかにかかわらず 1 つのログに残り、どれも 1 クリックで再送できます。
22 個の送信元の署名をエッジで検証します。署名シークレットを追加すれば、偽造されたリクエストはサーバーに届きません。
- Stripe
- GitHub
- Shopify
- Slack
- LINE
- Discord
- Twilio
- Sentry
- Linear
- Vercel
- Paddle
- Clerk
- Lemon Squeezy
- Intercom
- HubSpot
- Resend
- WooCommerce
- PayPal
- SendGrid
- Svix
- Meta
- Xero
送信元はあきらめる。ハンドラーは 2 回動く。
Shopify の応答期限は 5 秒。注文の発送処理には 12 秒かかる。
変えるのは URL 1 つだけ。
SDK は不要です。処理が終わってから 200 を返せば、クラッシュはリトライになります。
すべてのイベントが見える。
届いた内容、サーバーが返した応答、次にリトライする時刻がわかります。バグを直したら、Replay(再送)を押します。
{
"id": 820982911946154508,
"name": "#1042",
"total_price": "129.00",
"financial_status": "paid"
}{ "ok": true }AI エージェントのための API。
Claude、Codex、VS Code に URL を 1 つ追加してログインします。あとはエージェントが、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_…
流れが見え、すべてを制御できる。
1 件のイベント、AnyHook 内の 4 つの段階。
SDK はいらない。確認するヘッダーは 1 つ。
22 個の送信元をエッジで検証し、すべての配信を同じ方式で署名します。
import { verifyWebhook } from "anyhook-verify";if (!(await verifyWebhook(req, secret)))return new Response(null, { status: 401 });
サーバーがダウンしても、
何も失われない。
すべてのイベントを保存します。リトライは自動で実行されます。残りは Replay で再送できます。
作る人のために。
同じ Webhook 中継サービスで、チームが最初に直面する 3 つの状況に対応します。
送信元はリトライする。 エージェントは 2 回動く。
送信元は約 1 秒で 200 を受け取ります。エージェントには、プランに応じて 60〜300 秒が与えられます。
シンプルな料金。
無料で始められます。有料プランの料金は、イベントの保存期間と App(Webhook の送信元ごとに作る受信設定)の数で決まります。有料プランは超過分を従量課金するため、黙って破棄されるイベントはありません。
- 保存期間3 日
- イベント数10,000 件/月
- タイムアウト60 秒
すべての上限
- App 数1
- App ごとの転送先数3
- 配信試行回数3
- 最大ペイロード512 KB
- 超過料金なし
- 配信制御対象外
- アラートメール
- 3 日間の履歴
- 1 日の上限 1,000 件
- メール通知
- 保存期間1 年
- イベント数50,000 件/月
- タイムアウト120 秒
すべての上限
- App 数10
- App ごとの転送先数20
- 配信試行回数5
- 最大ペイロード2 MB
- 超過料金1k 件あたり $0.15
- 配信制御フィルター、レート制限、遅延配信
- アラートメール + Slack/Discord
- すべてのイベントを 1 年間保存
- Slack/Discord アラート、イベントフィルター
- 超過分は設定した上限まで従量課金
- 保存期間7 年
- イベント数250,000 件/月
- タイムアウト5 分
すべての上限
- App 数50
- App ごとの転送先数50
- 配信試行回数10
- 最大ペイロード4 MB
- 超過料金1k 件あたり $0.17
- 配信制御フィルター、レート制限、遅延配信
- アラートメール + Slack/Discord
- 7 年間、改ざん検知可能
- 1 日の上限なし
- カスタムドメインは近日対応
- 保存期間柔軟に対応
- イベント数柔軟に対応
- タイムアウト柔軟に対応
すべての上限
- App 数柔軟に対応
- App ごとの転送先数柔軟に対応
- 配信試行回数柔軟に対応
- 最大ペイロードカスタム
- 超過料金カスタム
- 配信制御あり
- アラートメール + Slack/Discord
- SSO と審査対応
- 専任のオンボーディング
- ルーティングのカスタマイズ
Pro では、1 年分の履歴、Slack または Discord へのアラート、イベントフィルター、イベントを破棄せずに課金する従量制の超過料金が加わります。
よくある質問と答え。
先に応答し、処理は後で。2xx が返るまで待つのは、Slack が 3 秒、Shopify が 5 秒、GitHub が 10 秒です。モデルの呼び出しはたいていそれより長くかかるので、送信元はリトライし、ボットは 2 回動きます。やがて Slack や Shopify は Webhook を無効化します。
Webhook の URL を AnyHook に向けると、送信元は約 1 秒で 200 を受け取ります。その後、ハンドラーが呼び出しを終えるまでの時間は Free 60 秒、Pro 120 秒、Scale 5 分 で、失敗すればリトライされます。キューを自作する必要はありません。
作れます。ただし、引き受けることになるのは次のものです。
信頼性:必要なのは、永続キュー、デッドレターの処理、バックオフのステートマシンです。エッジケースを 1 つ見落とすだけで、同じ注文を二重に処理したり、イベントを黙って取りこぼしたりします。たいていのチームは、こうしたバグを本番環境で、午前2時に見つけます。
セキュリティ:署名の方式はプロバイダーごとに違います。Stripe は HMAC-SHA256 とタイムスタンプ、GitHub は 16 進数表記の HMAC-SHA256、Shopify は Base64 表記の HMAC-SHA256 です。プロバイダーごとに検証処理を 1 つずつ保守し、鍵のローテーションと暗号化ストレージも扱う必要があります。1 つでも省けば、署名のないトラフィックを受け入れることになります。
可観測性:デバッグとは、Lambda の呼び出しをまたいで CloudWatch を grep することです。検索できるイベントログも、再送も、ペイロードの完全な履歴もありません。
コスト:インフラ代は月 $50〜$200 です。本当のコストはエンジニアの工数で月 $3,000〜$5,000 です。オンコール、移行作業、詰まったリトライのデバッグにかかる時間です。AnyHook Pro は月額 $20 で、メンテナンス不要です。
測っている区間が違います。Stripe のタイムアウトは、公開 URL への接続で測られます。その URL を AnyHook に向ければ、Stripe が待つのは AnyHook のエッジです。エッジは、コードが動き始めるよりも前に約 1 秒で 2xx を返します。
料金表の「タイムアウト」は AnyHook の配信タイムアウトで、AnyHook がエンドポイントの応答を待つ時間(Free 60 秒、Pro 120 秒、Scale 5 分)です。ほとんどのエンドポイントは、この時間内に余裕をもって応答します。それより長くかかる処理では、202 Accepted を返して非同期で処理してください。
Zapier/Make はローコードの自動化プラットフォームで、ビジュアルエディターとドラッグ&ドロップのフローが中心です。AnyHook は開発者向けの中継サービスです。Webhook もエンドポイントもコードもインフラも、自分のものを使います。
Webhook を処理するコードを書くなら、AnyHook を使ってください。n8n、Make、Zapier で構築しているなら、ワークフローの Webhook トリガーの前に AnyHook を置きます。プロバイダーは AnyHook に送り、AnyHook がトリガー URL に転送します。ワークフローがダウンしている間に届いたイベントは、消えずに再送を待ちます。
イベントは、送信元に 200 を返す前に永続キューに書き込まれます。AnyHook の転送処理がダウンしている場合、イベントはキューで待機し、復旧後に送信されます。送信元はすでに 200 を受け取っています。
エッジがイベントをまったく保存できない場合(キューも 2 つのフォールバックも使えない場合)は、代わりに 503 を返すので、送信元自身のリトライでカバーされます。AnyHook が保存していないイベントに 200 を返すことはありません。
稼働状況は status.anyhook.net で公開しています。
はい。AnyHook はまさにそのためにあります。エージェントにどれだけ時間がかかっても、AnyHook は Stripe に約 1 秒で応答します。
エンドポイントはすぐに 202 Accepted を返し、その後で非同期に処理してください。AnyHook の配信タイムアウト(Free 60 秒、Pro 120 秒、Scale 5 分)が適用されるのは、最初の HTTP のやり取りだけです。
サーバーが応答しなくなったとき、送信元はそれぞれどうするか。
どの送信元も、いずれはあきらめます。あきらめ方はそれぞれ違います。ここでは、各社が公開しているルール、復旧に使える期間、その期間が過ぎると失われるものをまとめています。
- Stripe の Webhook エンドポイントが無効化されたとき:原因と復旧手順Stripe に Webhook エンドポイントを無効化されたら、30 日の復旧期間は思うほど長くありません。手順は再有効化、そして Events API からの補完です。
- Shopify に Webhook を削除された。すべては 5 秒で決まる。Shopify の応答期限は 5 秒です。4 時間で 8 回リトライした後、サブスクリプションを削除します。エラーは出ず、注文が届かなくなるだけです。
- GitHub の Webhook が届かない:試行は 1 回、猶予は 3 日GitHub は失敗した Webhook の配信を一度もリトライしません。配信記録は 3 日で消え、その後は、デプロイの失敗で失ったイベントは二度と戻りません。
- WooCommerce の Webhook は注文時に送られないWooCommerce の Webhook はキューに入り、サイトにアクセスがあったときに WP-Cron が送ります。5 回を超える連続失敗で無効化されます。
全 28 本のガイドでは、Slack、Twilio、HubSpot、n8n のほか、同じ Webhook が 2 回届くケースも扱っています。
まだローカルで開発中ですか?トンネルの URL は再起動のたびに変わりますが、プロバイダーにそれを伝える必要はありません。
構図は同じで、相手がモデルの場合もあります。コールバックは数秒で応答を求めますが、ハンドラーのモデル呼び出しはそれより長くかかります。