SaaS や
Webhook の送信を自前で作る場合の作業範囲
顧客向けの
- キューと
再送 :イベントの発生と 送信を 分け、 キューに 積んでから 送ります。 送信先が 止まっている ときは、 間隔を 広げながら (指数バックオフ) 数時間から 数日に わたって 再送します。 Stripe は 本番環境で 最長 3 日間、 指数バックオフで 再送すると 公開しています。 同じ イベントが 2 回届く こともある ため、 受信側が 重複を 判定できる イベント ID も 付けます - 署名と
鍵の :受信側が入れ替え 送信元を 確かめられるよう、 本文に HMAC などで 署名します。 鍵の 漏洩や 定期的な 入れ替えに 備え、 新旧 2 つの 鍵で 同時に 署名する 期間を 設けます - 顧客ごとの
送信先の :顧客ごとに管理 URL、 受け取る イベントの 種類、 鍵を 持ちます。 登録・変更・削除の API と、 操作できる 人の 権限も 必要です - 配信記録と
手動の :いつ、どの再送 送信先に、 何を 送り、 何が 返ってきたかを 残します。 「届いていない」と いう 問い合わせに、 記録を 確認して 再送できる 画面が 必要です - 失敗の
通知と :失敗が自動停止 続く 送信先を 担当者に 知らせ、 長期間 届かない 送信先は 止めます。 止めた ことは 顧客にも メールなどで 知らせます - SSRF 対策:送信先の
URL は 顧客が 入力します。 社内ネットワークや クラウドの メタデータの アドレスを 指定されると、 送信サーバーから 内部の システムに 通信が 届きます。 内部の アドレスを 拒否する 中継を 通す、 送信の 処理を 内部に 届かない ネットワークに 置くと いった 対策が 必要です - 固定の
送信元 IP :金融機関や大企業の 取引先は、 受信を IP アドレスで 制限している ことがあります。 送信元の IP を 固定し、 変える ときは 事前に 知らせる 運用が 必要です - 顧客向けの
設定画面 :顧客が自分で 送信先を 登録し、 鍵を 確認し、 届いた 記録を 見て 再送できる 画面です。 この 画面が ないと、 送信先の 登録や 調査の 依頼が すべて サポート窓口に 届きます - 応答の
遅い :応答に送信先への 対応 数十秒かかる 送信先が 1 つ あると、 同じ キューを 使う ほかの 顧客への 送信まで 遅れます。 送信先ごとに 同時に 送る 数を 区切り、 失敗が 続く 送信先への 送信を しばらく 止める 仕組みが 必要です
送信側が
送信を専用サービスに任せる企業の事例
Webhook の
- Clerk
(認証サービス) :Svix でWebhook を 提供しています。 事例では、 自前で 作ると 最初の 版だけで 1 か 月以上、 必要な 機能を そろえた 信頼できる 実装には 熟練した チームで 6 か 月以上 かかると 見積もったうえで、 Svix との 最初の 連携は 2 週間かからずに 済んだと しています - Resend
(メール送信 API) :共同創業者が前職の WorkOS で Webhook の 基盤を 自前で 作った 経験から、 Resend では 最初から 自前で 作らない 方針を とりました。 Svix で 年間 2 億件以上の Webhook を 送っています。 最初は Svix の 顧客向け画面を そのまま 使い、のちに Svix の React ライブラリで 自社の 見た 目に 合わせた 画面を 作っています - Hookdeck Outpost:Hookdeck は
2026 年 4 月 23 日に Outpost の 一般提供を 発表しました。 顧客の 送信先に Webhook や イベントを 送る ための 基盤で、 Apache 2.0 の オープンソースと して 公開されており、 マネージド版と 自社で 動かす版は 同じ コードで 動きます。 送信先には Webhook の ほか、 Kafka、 AWS SQS、 GCP Pub/Sub なども 選べます
署名の
外部サービスに任せる利点
- 公開までの
期間 :再送、署名、 記録、 顧客向けの 画面を 作らずに 済みます。 アプリ側の 作業は、 イベントの 発生時に API を 呼ぶ処理と 送信先の 登録に なります - 届く
確かさ :再送の間隔、 失敗が 続く 送信先の 停止、 応答の 遅い 送信先の 切り 分けが 最初から 入っています - 調査の
しやすさ :配信記録と送信先の 応答が 画面で 見られる ため、 「届いていない」と いう 問い合わせに 記録を 見て 答えられます - 顧客の
自己解決 :顧客が送信先の 登録、 鍵の 確認、 再送を 自分で 行える ため、 サポート窓口への 依頼が 減ります - IP 制限の
ある :固定の取引先への 送信 送信元 IP を 提供する サービスであれば、 取引先は その IP を 許可するだけで 受け取れます
任せる前に確認すること
- 費用の
決まり :方 多くは 送信の 通数で 月額が 決まります。 再送が 通数に 数えられるか、 上限を 超えた ときに 送信が 止まるのか超 過分が 課金されるのかを 確認し、 見込みの 通数で 試算します - 本文の
預け先 :本文は外部サービスを 通り、 配信記録と して 一定期間 保存されます。 保存期間、 保存先の 地域、 個人情報を 本文に 含める 場合の 委託先と しての 扱いを 確認します。 本文に 個人情報を 入れず ID だけを 送り、 受信側に API で 詳細を 取得して もらう 形に すると、 預ける 情報を 減らせます - 署名の
形式 :Standard Webhooks のような公開仕様に 沿っていれば、 あとで 別の サービスや 自前の 送信に 移しても、 顧客の 検証コードは 変わりません - 障害時の
影響 :外部サービスが止まると 送信も 止まります。 稼働率の 保証、 障害中に 送信の 依頼を 受け付け続けるか、 障害情報の 公開方法を 確認します - 契約と
窓口 :規約の言語、 準拠法、 請求の 通貨、 サポートの 窓口が、 社内の 委託先の 審査に 合うかを 確認します
自前で作る場合と外部サービスを使う場合の比較
| 項目 | 自前で | 外部サービスを |
|---|---|---|
| 最初の | キュー・再送・署名・記録・画面を | API の |
| 公開後の | 送信の | 基盤の |
| 再送と | 再送の | 標準で |
| 顧客向けの | 自社で | 用意された |
| 固定の | 送信用の | 対応する |
| 費用の | 開発と | 送信の |
| 本文の | 自社 | 外部サービス |
自前で
Webhook Admin のご案内
当社は、
出典
- Stripe: Webhook エンドポイントで
Stripe イベントを 受信する - Standard Webhooks
- Standard Webhooks: Specification
- Svix: Announcing Standard Webhooks
- Svix: Clerk の
事例 - Svix: Resend の
事例 - Hookdeck: Hookdeck Outpost is GA
- Hookdeck: Changelog
(2026 年 4 月 23 日)
よくある質問
Webhook の送信を自前で作ると、どこに工数がかかりますか?
HTTP の
外部サービスに任せると、Webhook の本文は第三者を通りますか?
通ります。
外部サービスから別のサービスや自前の送信に移せますか?
署名の