Webhookは、外部サービスで何かが起きたとき、自分のアプリへ自動で通知を送ってもらう仕組み。
こちらから何度も確認しに行かなくても、イベント発生をきっかけに連絡が届きます。
Webhookは「起きたら知らせる」仕組み
Webhookは、外部サービス側でイベントが起きたときに、あらかじめ登録しておいたURLへ通知を送る仕組みです。
たとえば「決済が完了した」「フォームが送信された」「注文ステータスが変わった」といった出来事を、自分のアプリやサーバーへ知らせるために使われます。
外部サービス側で起きた出来事。決済完了や投稿作成など。
イベントの内容が、自分のサーバーへ送られてくる。
通知を受けて、DB更新やメール送信などを始められる。
APIとの違いは「聞きに行く」か「届く」か
通常のAPI利用では、自分のアプリが外部サービスへリクエストを送り、最新情報を取りに行きます。これを何度も繰り返すと、まだ変化がないときにも通信が発生します。
Webhookでは、外部サービス側でイベントが起きたときだけ通知が届きます。変化をすぐ知りたい処理と相性が良い仕組みです。
自分のアプリから「新しい情報はある?」と取りに行く。
外部サービスから「変化があったよ」と送ってもらう。
必要なときに取得するならAPI、起きた瞬間を知りたいならWebhook。
通知先URLを先に登録する
Webhookを使うには、自分のサーバー側に通知を受け取るURLを用意します。外部サービスの設定画面へそのURLを登録しておくと、イベント発生時にそのURLへHTTPリクエストが送られます。
受け取った通知は確認してから使う
Webhookは外部から自分のサーバーへ届く通知なので、届いた内容をそのまま信じ切らないことも大切です。多くのサービスでは、署名や秘密の文字列で「本当にそのサービスから届いた通知か」を確認する仕組みを用意しています。
また、通知を受け取ったらすぐ成功を返し、時間のかかる処理はあとで行う設計にすることがあります。ここでは、まず「通知を受ける入口」と「受けた後の処理」を分けて考える、と覚えておけば十分です。
署名や秘密の値を使い、本物の通知かを確認する。
失敗時の再送に備え、同じ通知を重複処理しないようにする。
受け取り成功を返し、重い処理は別で進めることがある。
ここまでのまとめ
Webhookは、外部サービスでイベントが起きたときに、自分のアプリへ通知を送ってもらう仕組みです。定期的に確認しに行くのではなく、変化があったタイミングで知らせてもらえる点が特徴です。
Webhookは「何か起きた?」と聞き続ける代わりに、「起きたらこのURLへ知らせて」と先に登録しておく仕組みです。