Webhook
Webhookは、保存済み検索の条件に新しく合致した企業と、その企業の該当求人を、指定したHTTPS URLへ自動でPOSTする機能です。CRMや社内通知、営業ワークフローの起点に利用できます。
保存済み検索にフィルターグループが含まれる場合は、そのAND・OR条件もWebhookの判定に使われます。
利用前に準備する
- 配信条件に使う保存済み検索
- POSTを受け取れる公開HTTPS URL
- Signing Secretを安全に保管する場所
Webhookの一覧を開く
企業検索または求人検索の上部にある「Webhooks」を押します。一覧では、名前、送信先URL、保存済み検索、状態を確認できます。

状態は次のいずれかです。
| 状態 | 意味 |
|---|---|
| 有効 | 日次配信の対象です |
| 無効 | 配信を一時停止しています |
| 停止中 | 参照していた保存済み検索が削除されています |
Webhookを作成する
- 「Webhooks」を開き、「Webhookを作成」を押します
- 配信条件にする保存済み検索を選びます
- 配信対象を選びます
- 名前とWebhook URLを入力します
- 自動生成されたSigning Secretをコピーし、安全な場所へ保存します
- 「作成」を押します

配信対象の違い
違いは、Webhookを作成した時点ですでに保存済み検索へマッチしている企業を、今後の配信候補に残すかどうかです。
どちらを選んでも、作成直後に現在のマッチ企業がまとめて配信されることはありません。新しい求人が確認された日の定期配信で、企業ごとに初回の1回だけ配信されます。一度配信された企業は、その後に別の求人が出ても再配信されません。
| 選択肢 | 作成時点ですでにマッチしている企業 | 作成後に初めてマッチする企業 | この設定が向いている場合 |
|---|---|---|---|
| すべてのマッチ企業を配信 | 配信候補に残します。作成後にその企業の新しい求人が確認されると、初回の1回だけ配信します | 新しい求人によって条件へマッチした日に、初回の1回だけ配信します | 現在マッチしている企業も、今後動きがあれば受け取りたい場合 |
| 新規登録企業のみを配信 | 作成時に配信済みとして除外リストへ登録し、今後も配信しません。作成時の配信もありません | 作成後に新しく条件へマッチした企業だけを、初回の1回だけ配信します | 現在マッチしている企業は除外し、これから新たにマッチする企業だけを受け取りたい場合 |
たとえば、作成時点でA社がすでにマッチしている場合、「すべてのマッチ企業を配信」では、作成後にA社の新しい求人が出るとA社を配信します。「新規登録企業のみを配信」では、A社を最初から除外するため、その後にA社の新しい求人が出ても配信しません。
「新規登録企業のみを配信」は、作成時点でマッチしている企業を除外リストへ登録するため、その企業数に応じてクレジットを消費します。この処理ではWebhookは送信されません。画面に企業数、単価、必要クレジット、残高が表示され、残高が不足している場合は作成できません。
Signing Secretは作成画面を開いたときに自動生成されます。必要に応じて再生成できます。この画面以外では再表示できないため、作成前にコピーして保存してください。
テスト送信する
Webhook一覧の履歴ボタンを押し、「テスト送信」を実行します。送信先からHTTP 2xxが返ると成功です。本番配信を始める前に、受信側で本文と署名を確認してください。
配信のタイミングと単位
- 配信処理は日次で実行されます
- 通常は、前日(日本時間)に取得が完了した求人データを対象にします
- 条件に合致した企業ごとに1回のPOSTを送ります
- 同じWebhookで一度配信した企業は、その後の一致では除外されます
- 1社あたり求人は最大100件を本文へ含み、実際の一致件数は
totalJobCountで確認できます
受信するデータ
代表的なリクエスト本文は次の構造です。
{
"id": "evt_example",
"webhookId": "wh_example",
"occurredAt": "2026-08-23T00:10:00Z",
"data": {
"corporate": {},
"jobs": [],
"totalJobCount": 3
},
"meta": {
"matchedCorporateCount": 12,
"deliveredCorporateCount": 8
}
}
corporate と jobs の項目は、セールスブレインREST APIの企業・求人レスポンスと同じ形式です。
署名を検証する
リクエストヘッダー X-SalesBrain-Signature には、次の形式で署名が入ります。
t=<UNIX時刻>,v1=<HMAC-SHA256の16進文字列>
受信側では、<UNIX時刻>.<加工していないリクエスト本文> をSigning SecretでHMAC-SHA256計算し、v1 と定数時間比較してください。リプレイ攻撃対策として、時刻差が5分以内であることも確認します。
import crypto from "node:crypto";
const signed = `${timestamp}.${rawBody}`;
const expected = crypto
.createHmac("sha256", process.env.SALESBRAIN_WEBHOOK_SECRET)
.update(signed)
.digest("hex");
const valid = crypto.timingSafeEqual(
Buffer.from(expected, "hex"),
Buffer.from(signatureV1, "hex"),
);
署名計算には、JSONとして再変換する前の生の本文を使ってください。
配信履歴を確認・再送する
Webhook一覧の履歴ボタンから、日次実行と各企業への配信状況を確認できます。配信詳細では対象日、法人番号、イベントID、HTTPステータス、試行履歴、送信本文を確認できます。
- HTTP 2xxを成功として扱います
- 送信先の応答待ちは10秒です
- 一時的な失敗は最大5回まで再試行します
- 最終的に失敗した配信は、配信詳細から手動で再送できます
- クレジット不足分は、クレジット追加後に最大7日分まで追いつき配信します
送信先は公開HTTPS URLに限られます。プライベートIPや特殊用途IPを指すURLは登録・配信できません。