Webhookとは?イベント通知の仕組みをわかりやすく解説

まずは、これだけ

Webhookは、外部サービスで何かが起きたとき、自分のアプリへ自動で通知を送ってもらう仕組み。
こちらから何度も確認しに行かなくても、イベント発生をきっかけに連絡が届きます。

外部サービスでイベントが発生し、Webhookによって自分のアプリへ通知が届く様子
イベント:注文・決済・更新などが起きる Webhook:指定したURLへ通知が届く

Webhookは「起きたら知らせる」仕組み

Webhookは、外部サービス側でイベントが起きたときに、あらかじめ登録しておいたURLへ通知を送る仕組みです。

たとえば「決済が完了した」「フォームが送信された」「注文ステータスが変わった」といった出来事を、自分のアプリやサーバーへ知らせるために使われます。

イベント

外部サービス側で起きた出来事。決済完了や投稿作成など。

通知

イベントの内容が、自分のサーバーへ送られてくる。

自動処理

通知を受けて、DB更新やメール送信などを始められる。

APIとの違いは「聞きに行く」か「届く」か

通常のAPI利用では、自分のアプリが外部サービスへリクエストを送り、最新情報を取りに行きます。これを何度も繰り返すと、まだ変化がないときにも通信が発生します。

Webhookでは、外部サービス側でイベントが起きたときだけ通知が届きます。変化をすぐ知りたい処理と相性が良い仕組みです。

APIで何度も確認する方法と、Webhookでイベント発生時に通知が届く方法を比較した図解
APIで定期的に確認する方法に対して、Webhookはイベント発生をきっかけに通知が送られます。
APIで確認

自分のアプリから「新しい情報はある?」と取りに行く。

Webhookで通知

外部サービスから「変化があったよ」と送ってもらう。

使い分け

必要なときに取得するならAPI、起きた瞬間を知りたいならWebhook。

通知先URLを先に登録する

Webhookを使うには、自分のサーバー側に通知を受け取るURLを用意します。外部サービスの設定画面へそのURLを登録しておくと、イベント発生時にそのURLへHTTPリクエストが送られます。

自分のサーバーで通知先URLを用意し、外部サービスに登録してWebhook通知を受け取る流れ
Webhookでは、通知を受け取るURLを先に用意し、外部サービスへ登録しておきます。
1 URLを用意 自分のサーバーに受け取り口を作る
2 登録する 外部サービスへ通知先URLを設定
3 イベント発生 決済完了や注文作成などが起きる
4 通知が届く 登録したURLへデータが送られる
5 処理する 画面更新やメール送信を実行

受け取った通知は確認してから使う

Webhookは外部から自分のサーバーへ届く通知なので、届いた内容をそのまま信じ切らないことも大切です。多くのサービスでは、署名や秘密の文字列で「本当にそのサービスから届いた通知か」を確認する仕組みを用意しています。

また、通知を受け取ったらすぐ成功を返し、時間のかかる処理はあとで行う設計にすることがあります。ここでは、まず「通知を受ける入口」と「受けた後の処理」を分けて考える、と覚えておけば十分です。

送信元を確認

署名や秘密の値を使い、本物の通知かを確認する。

何度も届くことがある

失敗時の再送に備え、同じ通知を重複処理しないようにする。

素早く返事する

受け取り成功を返し、重い処理は別で進めることがある。

ここまでのまとめ

Webhookは、外部サービスでイベントが起きたときに、自分のアプリへ通知を送ってもらう仕組みです。定期的に確認しに行くのではなく、変化があったタイミングで知らせてもらえる点が特徴です。

Webhookは「何か起きた?」と聞き続ける代わりに、「起きたらこのURLへ知らせて」と先に登録しておく仕組みです。