Stripe webhookイベントが発生しないとき、最初の30分でやること
Stripe webhookが「来ない」ように見えるとき、最初の30分で「イベント未発生/配信失敗/受信・検証失敗」を切り分けるチェックリストです。
Stripe webhookイベントが発生しない(最初の30分でやること)は、まず「そもそもイベントが起きているのか(Stripe側)」「起きているのに届かないのか(配信)」「届いているのに処理できないのか(受信/検証)」を切り分けると、最短で復旧できます。
最初に結論
- 「Webhookが来ない」の原因が イベント未発生 なのか 配信失敗 なのかで、見る画面が変わります。
- まずは Stripe Dashboard の Events と Webhookの配信ログ で「イベントがある/ない」「送信先が正しい/古い」「テスト/本番の取り違え」を確定させます。
- 直近の変更(デプロイ/環境変数/キー/ドメイン/ルーティング)を“時刻で”当てます。
最初の30分でやること
1) 症状を固定する(Stripe Dashboard)
- 期待しているイベントは何か(例:
checkout.session.completed/customer.subscription.created/invoice.paid) - いつから「来なくなった」のか(直近のデプロイ/キー差し替え時刻と照合)
- 対象はテストか本番か(Dashboard右上のモード + アプリのAPIキー)
2) 「イベント自体が起きているか」を確認する(Events)
- Stripe Dashboard の Events で、該当イベントが発生しているかを検索する
- ない場合(よくある原因):
- 決済/購読のフロー自体が成立していない(例: Checkout未完了、支払い失敗)
- テスト/本番のモードが違う(テストで起こして本番を見ている等)
- 別アカウント/別プロジェクト(Connect含む)を見ている
3) 「Webhookに送っているか」を確認する(Webhook配信ログ)
- 該当Endpointに Delivery attempts があるか
- 送信先URLが “今の本番URL” か(www有無/サブドメ/パス/古い環境)
- Endpointが disabled になっていないか
- イベントのListen対象がズレていないか(必要なイベントが含まれているか)
ログの読み方:
- 配信ログがない → (多くは)イベント未発生/モード違い/別アカウント
- 4xx → アプリが拒否(ルーティング/署名検証/HTTPメソッド/ボディ処理)
- 5xx → アプリ例外(DB/外部API/バグ)
- タイムアウト → 同期処理が重い(キュー化/非同期化/冪等化)
4) アプリ側の受信(ルーティング)を確認する
- Webhookの受信URL/メソッドが想定どおりか
- 直近の移行でパスが変わってないか(例:
/api/webhook/stripe→/api/stripe/webhookなど) - ミドルウェアで弾かれていないか(認証/CSRF/リダイレクト)
5) 署名検証(Signing secret)を確認する
- EndpointのSigning secretと、アプリの環境変数が一致しているか
- テスト/本番モードを取り違えていないか
- 生のリクエストボディを改変していないか(検証前にJSONパースしている等)
6) “2xxで速く返す”設計になっているか
- Webhookハンドラが同期で重い処理をしていないか(外部API、重いDB集計など)
- Stripeの再送(retries)を前提に 冪等性 を満たしているか(イベントIDで重複排除)
- 失敗時に、どこで落ちたかがログで分かるか(署名/DB/外部API)
SiteOpsで最短にする
複数サービス運営では、同じ「Webhookが来ない」でも原因が違うことが多いです。SiteOpsは「どの環境で」「どのイベントで」「いつから」「どの変更の直後か」を並べて、最初の30分の切り分けを短縮します。
次に読む
- /media/stripe-webhook-delivery-failure-first-30-minutes
- /media/stripe-webhook-signature-verification-failed-first-30-minutes
相談する(SiteOps)
- まずは ダッシュボード で、影響が出ているサイト(どの異常から触るべきか)を先に列挙します
- 相談したい場合は お問い合わせ から状況を送ってください(止血の順番を一緒に整理できます)
- 料金と導入の流れは 料金ページ にまとめています
参考にした一次情報
この記事を書いた人
川原
SiteOps編集チームの公開窓口として、検索、アクセス、収益データをもとにした運営判断の知見をまとめています。
関連記事
次にやること
複数サイトの検索、アクセス、収益データをまとめて見直すなら、SiteOpsのダッシュボードでサイト別に確認できます。
料金を見る相談したい / お問い合わせ