ウェブフック:起きたことを他のツールに知らせる
Webhookは、公開、フォームの送信、レコードの変更など、プロジェクトで何かが起きた瞬間に、他のツールへ短いメッセージを送ります。このページでは、追加の方法、メッセージの内容、受信側が正規のものか確認する方法、受信側が停止しているときの動作を説明します。
Webhookとは
プロジェクトが別のサービスに電話をかけて、起きたことを知らせるようなものだとお考えください。相手のツールから渡されたアドレス(URL)をBriksに登録し、通知したいイベントを選ぶと、そのイベントが起きるたびにBriksがそこへメッセージを送ります。多くの自動化ツール、顧客リストのツール、スプレッドシートのアドオンで、このようなアドレスを発行できます。
技術的には、各メッセージは POST リクエストです。これは本文を伴う呼び出しで、ここではプログラムが読み取れるテキスト形式の JSON で書かれます。受け取ったツールが本文を読み、設定した内容を実行します。
| スタジオでの表示どおりのイベント | コード | 送信されるタイミング |
|---|---|---|
| Published | site.published | サイトの新しいバージョンが公開されました。 |
| Form received | form.received | 訪問者がサイトのフォームからメッセージを送信しました。 |
| Record changed | record.changed | プロジェクトのデータベースのレコードが追加、変更、または削除されました。 |
record.changed は、スタジオで行った変更に反応します。Databaseタブでレコードを追加、編集、削除したとき、コレクションを空にしたとき、データベースを復元したときです。訪問者が送る予約リクエストのように、公開サイトが自動で保存するレコードでは作動しません。
form.receivedは、本番環境からの送信だけでなく、プレビューからの送信でも送られます。どちらからかは各メッセージに記されているので、連携先のツールでプレビューの送信を除外できます。
各プランの上限
| プラン | プロジェクトごとのWebhook数 | 1プロジェクトあたりの1日の呼び出し回数 |
|---|---|---|
| Free | 1 | 2,000 |
| Starter | 5 | 5,000 |
| Pro | 10 | 10,000 |
| Studio | 25 | 50,000 |
| Agency | 50 | 100,000 |
その日の呼び出し回数を使い切ると、配信は送信されず Failed と表示されます。表示文言は「Today's calls for this project are used up, so this delivery was not sent. Send it again tomorrow.」です。
プロジェクトにプランが許す数のwebhookがあると、Add webhook はグレーになり、数の横の Get more リンクからアップグレードのウィンドウが開きます。そこには、もう一つ追加できる最小のプランが示されます。
Webhookを追加する
Add webhookを押す
場所: Settings, Webhooks
このページには、プランの上限に対する現在の数が、たとえば「1 of 5 on your plan」のように表示されます。Editor、Admin、Ownerがwebhookを追加できます。
アドレスを入力
場所: Add a webhook
もう一方のツールから受け取ったアドレスをAddressに貼り付けてください。数字ではなく名前で書かれた、公開のhttpsアドレスである必要があります。
メモを追加
場所: Add a webhook
Note は任意で、120文字までです。あとからWebhookを見分けるのに役立ちます。たとえば
Enquiries sheetのように入力します。イベントを選ぶ
場所: Add a webhook
通知を受け取りたいイベントにチェックを入れます。PublishedとForm receivedは最初からチェックされています。必要に応じて変更してください。
シークレットを保存してコピーする
場所: Your signing secret
Add webhook を押します。ダイアログに、
whsec_で始まる署名シークレットが表示されます。Copy を押して保管してください。表示されるのは一度だけです。そのあと Done を押します。テスト送信
場所: Settings, Webhooks
Webhookの3点メニューを開き、Send a test event を選びます。次のように表示されます: A test event is on its way. See how it went under Deliveries.
リストの各ウェブフックには、アドレス、メモ、イベント、署名に使うシークレット(最初の数文字)、直近の配信の結果が表示されます。スイッチで On と Off を切り替えられ、三点メニューには Send a test event(1時間に最大10回まで、オンのときのみ)、Change、New signing secret、Delete があります。
納品のイメージ
どの配信も同じ3つの部分でできています。type(イベントのコード)、timestamp(起きた時刻、UTC)、data(詳細)です。フォーム送信の例を示します。
{"type":"form.received","timestamp":"2026-10-08T09:41:07.000Z","data":{"form":{"id":"…","subject":"結婚式のお問い合わせ","page":"/contact","fields":[{"label":"お名前","value":"Ellie Marsh"},{"label":"挙式日","value":"2027年6月14日"}],"replyTo":"ellie@example.com"},"production":true}}
| イベント | dataに入るもの |
|---|---|
form.received | form:その id、subject、送信元の page、fields(それぞれ label と value で、フォームの順番どおり)、そしてフォームがメールアドレスを求める場合は訪問者のメールである replyTo。続いて production:公開中のサイトなら true、プレビューなら false です。 |
site.published | url: 公開されたアドレス。production: サイトが本番環境にあるかどうか。abTest: A/B テストが実行中かどうか。served: メッセージを送った時点で、そのアドレスで新しいバージョンが応答しているのを Briks が確認したかどうか。 |
record.changed | action:created、updated、deleted、cleared、restored のいずれかです。collection:対象のコレクションです。record:レコードのidです。レコードの値は含まれません。 |
test | message と、id と name を持つ project。Send a test event を押したときだけ送信されます。 |
各配信には、webhook-id(メッセージのID)、webhook-timestamp(送信された時刻、秒単位)、webhook-signatureの3つのヘッダーも付きます。これらはオープンなStandard Webhooks形式に従っているため、対応するツールで配信を検証できます。
配信が本物であることを確認する
アドレスには誰でもメッセージを送れるため、受け取る側は信用する前に署名を確認する必要があります。署名は、あなたとBriksだけが持つ署名用シークレットで作られます。プロジェクトにWebhookがあると、WebhooksページのChecking a delivery is genuineの下に短いコード例が表示されます。確認の流れを言葉にすると、次のとおりです。
- JSONとして読み取る前に、届いたままの本文をテキストとして取得します。
webhook-id、webhook-timestamp、本文を、ピリオドでつなぎます。- シークレットの先頭にある
whsec_を取り除き、残りをbase64からデコードします。それがキーです。 - 連結したテキストに、このキーを使って HMAC SHA-256 で署名し、結果を base64 で書き出して、先頭に
v1,を付けます。 - この値が
webhook-signatureのスペース区切りの値のどれかと一致し、タイムスタンプが現在から5分以内であれば、その配信は本物です。
再送される配信は同じwebhook-idを保つので、受信側は処理済みのidを保存しておけば、重複をスキップできます。
配信と再試行
Deliveries には、過去30日間の配信がすべて新しい順に並びます。Status で絞り込み、Show を押してください。1件をクリックすると、メッセージ全文、エラー、送信先アドレスからの応答を確認できます。
| ステータス | 意味 |
|---|---|
| Sending | 最初の実行を待っています。 |
| 再試行中 | 試行が失敗し、次の試行が予定されています。この行には、次の試行の何時間後かが表示されます。 |
| Delivered | そのアドレスは、成功を表すウェブのコードである2xxのステータスで応答しました。 |
| Failed | すべての試行が失敗したか、配信をまったく送信できませんでした。 |
各試行は、応答を最大15秒待ちます。応答が2xxでなければ、Briksは再試行します。試行は全部で5回で、1回目はすぐに、その後は約30秒後、2分後、8分後、32分後に行い、最初から最後までで約45分です。410(gone)の応答が返ると、再試行はすぐに止まります。リダイレクトには従わないため、最終的なアドレスを指定してください。
配信が Failed または Delivered になったら、Send again で同じIDの同じメッセージを、署名し直して再送します。Webhookはオンになっている必要があります。
インサイトと設定
Insights は過去30日間をまとめています。Deliveries(配信数)、Delivered(配信成功の割合)、Failed after every try(再試行の回数つき)、Average answer(平均応答時間)です。その下の By event と By address で、失敗が集中している箇所がわかります。
SettingsのDownload the webhooksの下にDownload JSONがあり、各webhookのアドレス、イベント、メモが含まれます。署名シークレットは含まれません。危険ゾーンには、配信ログを削除して再試行をすべて止めるClear logと、プロジェクト名を入力するとすべてのwebhookを削除するDelete allがあります。どちらもOwnerとAdminが使えます。
実例:フォームの入力内容を別のツールへ送る
フォームの送信内容はスタジオからエクスポートできないため、届いた内容を別のツールに残すにはウェブフックを使います。スタジオにも保存され、最新の100件が Settings, Forms に表示されます。
ヨークのウェディングフォトグラファーが、お問い合わせをお客様リストに送ります
相手のツールからアドレスを取得する
場所: Her client list tool
彼女はそこで受信 Webhook を作成し、発行されたアドレスをコピーします。
Webhookを追加する
場所: Settings, Webhooks
彼女はアドレスを貼り付け、メモに
Client listと書き、Publishedのチェックを外して、Form receivedだけにチェックを入れたままにします。ツールにシークレットを渡す
場所: Her client list tool
彼女のツールは署名を確認するので、ダイアログを閉じる前に、設定へ署名シークレットを貼り付けます。
試してみる
場所: Settings, Webhooks, Deliveries
テストイベントを送信すると、DeliveriesにDeliveredと表示されます。
フィールドを対応させる
場所: Her client list tool
彼女は
fieldsのラベルであるお名前、挙式日、会場を自分のツールの列に対応づけ、productionがfalseのメッセージは無視するよう設定します。
ある夫婦が、彼女の公開サイトのお問い合わせフォームに入力します。
サイトが本番環境にあるため、問い合わせは彼女の受信箱に届き、少しあとにクライアント一覧にも表示されます。