技術解説 · 出典付きの回答

メールWebhookとは?仕組みと実装方法

メールWebhookとは、メール配信サービスが特定のイベントを宛先サーバーに通知するために発行するHTTPコールバックです。アプリケーションがAPIをポーリングしてステータスの更新を確認する代わりに、配信失敗やリンクのクリックといったイベントが発生した直後に、プロバイダーがあらかじめ指定されたURLへJSONまたはXMLのペイロードをプッシュします。

仕組み

イベントが発生すると、メールプロバイダーはHTTP POSTリクエストを生成します。このリクエストには、メッセージID、受信者のアドレス、タイムスタンプなどのイベントのメタデータを含むペイロードが入っています。受信サーバーは公開エンドポイントで待ち受け、届いたリクエストを検証し、受信を確認するために200 OKレスポンスを返す必要があります。サーバーがエラーを返した場合、プロバイダーは指数バックオフ戦略を使って配信を再試行することがあります。

送信者にとっての重要性

Webhookは送信者レピュテーションの維持に欠かせません。ハードバウンスや迷惑メール報告をリアルタイムで受け取ることで、開発者は無効なアドレスを自動的にリストから削除できます。これにより存在しないメールボックスへの繰り返し送信を防げます。こうした送信は、ISPが送信者を低品質と判断する主要なシグナルの1つです。これらのシグナルに素早く対応することで、全体の到達率を高められます。

運用上の考慮事項

よくある失敗は、受信サーバーがペイロードを同期的に処理してタイムアウトエラーになることです。これを避けるには、Webhookを受け取ったらRedisやRabbitMQのようなシステムのキューに入れ、すぐに受信確認を返す非同期のアーキテクチャを実装します。また、セキュリティも非常に重要です。偽装されたイベント通知を防ぐため、サーバーはプロバイダーの署名を検証するか、送信元IPを確認する必要があります。

具体的な実装例

典型的な流れでは、ResendやAmazon SESのようなプロバイダーでURLを設定します。ユーザーがメール内のリンクをクリックすると、プロバイダーは { event: click, email: user@example.com, link: https://site.com/offer } のようなボディを付けて/webhooks/emailにPOSTリクエストを送信します。アプリケーションはこれを受けてデータベースのユーザーレコードを更新し、キャンペーンが成功したことを記録します。

ツールとの連携

Webhookを設定するには、公開URLとペイロードをテストする手段が必要です。SendHQやその無料ツール(https://sendhq.cc/tools)を使うと、メール基盤の技術的な要件を管理し、設定が業界標準に沿っていることを確認できます。

よく寄せられる質問

APIとWebhookの違いは何ですか?

APIは、クライアントがデータを取得するためにサーバーへ送るリクエストです。Webhookは、イベントが発生したときにサーバーがデータを自動的にプッシュするためにクライアントへ送るリクエストです。

メールWebhookのエンドポイントを保護するには?

ヘッダーで秘密トークンを使う、メールサービスが提供するHMAC署名を検証する、またはプロバイダーが所有する特定のIP範囲からの受信トラフィックだけを許可する、といった方法があります。

Webhookイベントの発生時にサーバーがダウンしていたらどうなりますか?

ほとんどの本格的なプロバイダーはイベントをキューに入れ、数時間から数日にわたって何度か再配信を試みてから、そのイベントを配信不能として扱います。

一次情報源