URL を 1 つ変えるだけ · SDK 不要 · 検証は Apache 2.0

Stripe Webhook の保険、
AI SaaS 向け。

LLM の呼び出しで、ハンドラーは 45 秒かかります。Stripe は約 20 秒でタイムアウトし、リトライします。顧客の注文は二重処理され、発送、クレジットの付与、メールの送信が 2 回行われます。

AnyHook は送信元とハンドラーの間に入ります。ハンドラーのコードに手を入れずに、すべてを保存し、リトライし、記録し、再送します。

Free10,000 件/月
$20Pro · 50,000 件
$90Scale · 250,000
Stripe、Webhook
本番
失敗20.04s

evt_3Pk2X3b1Lcx

リクエストがタイムアウトしました。Stripe は最長 3 日間、バックオフ付きでリトライします。

~ stripe-cli
$ stripe webhooks update we_1234
    --url in.anyhook.net/u/app
✓ Endpoint updated
✓ Delivering to AnyHook
anyhook · 配信済み
200 OK

evt_3Pk2X3b1Lcx

1 回目の試行 · 送信元に応答済み · ハンドラー 47.2 秒

0取りこぼし
·
100%配信済み
handler.ts
// before
await llm.run(evt); /* 45s */

// after
return Response.json({ ok: true });
例

回避した送信元のリトライ

127

01

売上を食いつぶす 3 つのタイムアウト。

StripeWebhook
20s

LLM 呼び出しが約 20 秒を超える → Stripe が失敗と判定してリトライ → ハンドラーが 2 回実行される → 二重処理。

/v1/webhook_endpoints · status: failed

SlackEvents
3s

ボットは 3 秒以内に応答しなければなりません。AI エージェントが 30 秒かかると、Slack は 3 回リトライし、ボットが最大 4 回応答することがあります。

ShopifyWebhook
5s

応答が遅れると失敗とみなされ、4 時間にわたり 8 回リトライします。失敗が続くとサブスクリプションが削除され、注文が届かなくなります。

02

今の段階に合うプランを。

Pro

おすすめ
$20/月

本番環境の Webhook トラフィック向けです。リトライを 2 週間かけて自前で作るより安く済みます。

  • 50,000 件/月
  • App 10 個 · 再送可能期間 30 日、保存期間 1 年
  • 配信試行 5 回 · 配信タイムアウト 120 秒
  • 超過分は 1K 件あたり $0.15、黙って破棄しない
  • メール、Slack、Discord の通知 · すべての配信に署名

配信について、AnyHook の言葉をうのみにする必要はありません。署名検証ライブラリと MCP サーバーは Apache 2.0 で公開しています(github.com/gba3124/anyhook-mcp)。中継サービス自体はオープンソースではありません。

03

3 ステップ、30 秒。

  1. ステップ 1

    新規登録して、受信 URL を受け取る。

    メールアドレスか Google で新規登録します。AnyHook が https://in.anyhook.net/you/app のような受信 URL を発行します。Free プランならクレジットカードの登録は不要です。

  2. ステップ 2

    Stripe(などの送信元)で URL を差し替える。

    Stripe ダッシュボード → Webhook → エンドポイントを編集 → AnyHook の URL を貼り付けます。GitHub、Shopify、Slack Events API、Paddle でも同じ変更で動きます。ハンドラーのコードはそのままです。

  3. ステップ 3

    イベントの到着を見守る。何でも再送できる。

    AnyHook はイベントを保存し、送信元に約 1 秒で 200 を返し、リトライ付きでハンドラーに転送します。配信は少なくとも 1 回(at-least-once)なので、重複排除には X-AnyHook-Delivery を使います。失敗したイベントはダッシュボードに残り、Replay(再送)ボタンを 1 クリックで再送できます。

04

ある特定の状況のために。

向いている

  • 本番トラフィックがある個人開発の SaaS や B2B
  • Stripe で課金しているプロダクト(Checkout、Subscriptions、Connect)
  • ハンドラーが LLM、RAG、エージェント実行など、本格的な AI 処理をしている
  • 自作のリトライ処理を信用しきれていない
  • プロバイダーのダッシュボードで URL を 1 つ差し替えられる

向いていない

  • まだ売上がなく、Webhook の信頼性が最大のリスクではない
  • Inngest、Hookdeck、Svix をすでに本番環境で使っている
  • ワークフローエンジンが必要(永続関数、スケジューリング):Inngest を使ってください
  • クラウドへの外部送信を厳しく禁じるオンプレミスの大企業
  • ライブのイベントストリーミング用途(Kafka、WebSocket、SSE)
05

正直に答えます。

Inngest や Hookdeck を使えばいいのでは?

SDK を導入してハンドラーを永続関数として書き直す余力があるなら、Inngest は優れた選択です。AnyHook は、ハンドラーの形を変えずに解決したいチーム向けです。Webhook の URL を 1 つ変えるだけで、既存のコードはそのまま使えます。

Free プランは本当に無料ですか?ずっと無料ですか?

はい。月 10,000 件(1 日の上限は 1,000 件)、App 1 つで、クレジットカードの登録は不要です。趣味のプロジェクトなら十分に動かせる一方、本番のトラフィックなら自然にアップグレードしたくなる量にしています。裏はなく、期限もありません。

Stripe 以外の Webhook にも使えますか?

GitHub、Shopify、Slack Events API、Paddle、Linear、Clerk など、どれも同じように URL を差し替えるだけで使えます。署名検証の方式は、受信したヘッダーから自動で判別します。

AnyHook はオープンソースですか?

一部だけです。どの部分なのかを正確に書いておきます。署名検証ライブラリと MCP サーバーは github.com/gba3124/anyhook-mcp で Apache 2.0 として公開しているので、AnyHook が署名したすべての配信を、AnyHook を信用することも依存することもなく検証できます。受信、保存、リトライを行う中継サービスはオープンソースではなく、現時点でセルフホスト版もありません。

AnyHook は Webhook のペイロードを見られますか?

保存時に暗号化して保存します(AES-256-GCM)。プランの再送可能期間(3/30/90 日)は再送でき、その後 Free のイベントは削除されます。有料プランでは読み取り専用の暗号化アーカイブとして残ります(Pro は 1 年、Scale は 7 年)。鍵が AnyHook のインフラの外に出ることはありません。Pro と Scale では、ゼロリテンションをオンにすることもできます。オンにすると、配信が完了した時点で、イベントのヘッダーとボディがログから消去されます。暗号化アーカイブには、そのコピーが残ります。

月の途中で Free プランの上限を超えたら?

Free では、月間クォータを超えたイベントは、さらにクォータの 20% まで、ログで保留(held)になり、アップグレード後に再送できます。それを超えたときと、1 日の上限を超えたときは、エッジが 429 を返して何も保存せず、メールが届きます。Pro にアップグレードすると、上限はすぐに解除されます。Pro の超過料金は 1K 件あたり $0.15 で、ダッシュボードで任意の超過料金の上限(Spending cap)を設定できます。上限を超えたイベントは、課金されずに保留になります。

30 秒。カード不要。

URL を 1 つ変える。
今夜はぐっすり眠れる。

無料で新規登録して受信 URL を受け取り、Stripe で差し替えます。リトライは AnyHook が吸収し、ハンドラーは今とまったく同じように動き続けます。