本文へスキップ

Webhook

Webhookとは、HTTPコールバックの一種です。選んだイベントが起きた瞬間に、あるシステムが、こちらからの問い合わせを待たずに、こちらの管理するURLへ自動でPOSTリクエストを送ります。ポーリングではなくプッシュ型で、イベントの発生に合わせて送信元がデータを送るため、エンドポイントはタイマーで問い合わせる代わりに、数秒以内にデータを受け取れます。

更新日:2分で読めます執筆 fromHello

要点

  1. Webhookはポーリングではなくプッシュ型です。イベントが起きた瞬間に送信元のシステムがデータを送るため、「何か新しいものは?」という問い合わせを繰り返さずに済みます。

  2. エンゲージメントプラットフォームでは2つの方向が重要です。送信側では、ジャーニーの途中でノードが外部システムを呼び出し、受信側では、外部システムからのイベントを取り込みます。

  3. 公開URLには誰でもPOSTできるため、ペイロードはすべて信頼できないものとして扱います。署名を検証し、すばやく応答してください。

Webhookはどう機能しますか?

データを持つシステムにURL(エンドポイント)を登録し、どのイベントに関心があるかを伝えます。そのイベントのいずれかが起きると、そのシステムは、何が起きたかを記したペイロード(通常はJSON)を付けて、エンドポイントにHTTP POSTを送ります。サーバーはペイロードを読んで処理を行い、受信を知らせるために2xxのステータスを返します。こちらからのリクエストがきっかけではなく、送信元が自発的に送ったものです。ほとんどのプロバイダーは各リクエストに署名しており、本当にそのプロバイダーから届いたものかを確認できます。

WebhookとAPIのポーリング:何が違うのか?

ポーリングはプル型です。何か変化があったかどうかに関係なく、コードが決まった間隔でAPIに「何か新しいものは?」と尋ねます。Webhookはプッシュ型で、送信元は報告すべきことがあるときだけ呼び出してきます。ポーリングはリクエストの大半が無駄になり、イベントから反応までに遅れが生じます。Webhookは数秒以内に届き、それ以外のときは静かです。その代わり、エンドポイントは公開されていて、急な集中にも耐えられる必要があります。

Webhookと関連する用語。

エンゲージメントプラットフォームはWebhookをどう使いますか?

  • 送信側:ジャーニーの中にあるWebhookノードが、フローの途中で外部システムにPOSTします。リードがコンバージョンしたらSlackに通知する、ステータスをCRMに同期する、フルフィルメント処理を開始する、といった用途です。
  • 受信側:レシーバーがほかのツールからのイベントを取り込みます。決済プロバイダーが支払いの成功を報告し、フォームツールが新しいリードを渡すことで、夜間のインポートを待たずにプロファイルとジャーニーが反応します。
  • この双方向の配管があるからこそ、カスタマーエンゲージメントプラットフォームはスタックの中心に位置できます。Knockのような配信専用のサービスは、送信側だけに特化しています。

小さなチームにとってなぜ重要か

2人のチームでは、張り付いて変化を確認し続けることはできません。また、数分おきに確認するcronジョブは遅れとコストの両方を生みます。Webhookがあれば、誰も見ていなくても、何かが起きた瞬間にあるツールが別のツールに反応できます。注意点は2つです。公開URLには誰でもPOSTできるため、すべてのリクエストで署名を検証し、本文は信頼できないものとして扱います。そして、送受信するイベントをログに残し、記録されない裏ルートにせず、トラッキングプランと整合させます。

FAQ

よくある質問

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

    APIは、データが欲しいときにこちらから呼び出すものです。Webhookは、データが変わったときに向こうから呼び出してくるものです。両者は補完し合います。レコードの読み取りや更新にはREST APIを使い、レコードが変わった瞬間に知らせてもらうためにWebhookを使えば、問い合わせを繰り返す必要がなくなります。

  • Webhookのエンドポイントを安全にするには?

    すべてのリクエストを信頼できないものとして扱います。ほとんどのプロバイダーは共有シークレットでペイロードに署名しているので、署名を再計算し、一致しないものはすべて拒否します。エンドポイントはHTTPSで提供し、2xxをすばやく返してください。時間のかかる処理はバックグラウンドジョブに回し、送信側がタイムアウトして再送しないようにします。

  • Webhookが発火したときにエンドポイントが停止していたら?

    ほとんどのプロバイダーは、失敗した配信をしばらくの間バックオフしながら再試行し、そのあと諦めます。短時間の停止なら、たいていは乗り切れます。ただし、再試行は無期限に保証されているわけではありません。同じイベントが複数回届くこともあるため、ハンドラーは冪等にし、取りこぼせないものは送信元のAPIと突き合わせてください。

  • Webhookを受け取るには何かを構築する必要がありますか?

    POSTリクエストを受け付けて2xxを返す、公開されたHTTPSのURLが必要です。エンゲージメントプラットフォームに受信するWebhookの場合、レシーバーは通常組み込まれており、送信元のツールにURLを貼り付けるだけです。送信側の呼び出しは、ジャーニーのWebhookノードが代わりに行います。

fromHelloは、オープンソースのマーケティングオートメーションです。

人の行動をきっかけにメッセージを届けます。fromHello Cloudは、ウェイトリスト経由でアーリーアクセスを提供しています。

アーリーアクセス

fromHello Cloud

小さくまとまるために始めたわけではない。

fromHello Cloudのアーリーアクセスは、段階的にご案内します。 オンボーディングは伴走型です。セットアップからコンタクトの移行まで、私たちがお手伝いします。

ご利用の準備が整い次第、メールでお知らせします。スパムは送りません。

まだ登録する段階ではありませんか?GitHubで見る