Webhook とは、あるサービスで特定のイベントが発生したとき、事前に登録した URL に対して自動的に HTTP リクエスト (通常は POST) を送信する仕組みです。「何かあったら教えて」と電話番号を渡しておくようなもので、イベント駆動型のサービス連携を実現します。
Webhook の対義語にあたるのがポーリング (Polling) です。ポーリングは「新しい情報はありますか?」と定期的に問い合わせる方式で、変化がなくても問い合わせが発生するため非効率です。Webhook はイベントが起きたときだけ通知が飛ぶため、リアルタイム性が高く、サーバー負荷も低く抑えられます。
短縮 URL サービスでの Webhook 活用例として、リンクがクリックされたときにリアルタイムで通知を受け取るケースがあります。たとえば、重要なキャンペーンリンクのクリックを Slack チャンネルに即座に通知したり、クリックデータを自社のデータベースに自動蓄積したりできます。
Webhook の実装で注意すべき点がいくつかあります。第一に、受信側のエンドポイントは HTTPS で公開する必要があります。第二に、Webhook の送信が失敗した場合のリトライ処理を考慮する必要があります。多くのサービスは指数バックオフで数回リトライしますが、受信側がダウンしている間のイベントは失われる可能性があります。第三に、Webhook の送信元を検証するために、署名 (HMAC-SHA256 など) を確認するセキュリティ対策が重要です。
Webhook は GitHub (プッシュ通知)、Stripe (決済完了通知)、Slack (メッセージ投稿) など、現代の Web サービスの連携基盤として広く普及しています。Zapier や IFTTT のような自動化ツールも、内部的には Webhook を活用しています。関連書籍は Amazon でも探せます。