> For the complete documentation index, see [llms.txt](https://docs.immedio.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.immedio.io/immedio-box/integrations/webhook.md).

# Webhook連携設定

immedio Boxで発生したリードの行動を、指定したURLへリアルタイムに送信するための設定を行う画面です。

## Webhook連携とは

Webhook連携とは、immedio Boxで発生したリードの行動を、指定したURLへリアルタイムにHTTP POSTで送信する機能です。受け取ったデータを自社のCRM・SFA・社内ツール・データ基盤へ直接取り込めます。「外部連携」ページの「Webhook連携」セクションで設定します。

1つの送信先に、名前・送信先URL・シークレット・受け取るイベント（とその対象）をまとめて設定します。送信先は複数登録できます。

[Zapier連携](https://github.com/immedioinc/immedio-docs/tree/main/immedio-box/guides/integrations/zapier.md)との使い分けは次のとおりです。

| 機能        | 適している場合                     |
| --------- | --------------------------- |
| Zapier連携  | ノーコードで他のSaaSにつなぎたい場合        |
| Webhook連携 | 自社で受信サーバーを用意し、データを直接処理したい場合 |

### 全体の流れ

1. 「外部連携」ページの「Webhook連携」セクションで、送信先URLと受け取りたいイベントを登録します
2. 対象のイベントが発生すると、immedio Boxが送信先URLへPOSTします
3. リクエストには署名が付与されるため、受信側はimmedio Boxからの送信であることを検証できます
4. 受信側が2xx（200／201／202／204など）を返した時点で配信完了となります。それ以外の場合は一定時間をおいて再送されます

## Webhook連携でできること

| 機能          | 説明                                        |
| ----------- | ----------------------------------------- |
| 送信先の登録      | イベントの送信先URLを登録できます。複数登録できます               |
| 受け取るイベントの選択 | 8種類のイベントから、受け取るものを選択できます                  |
| 対象の絞り込み     | イベントごとに、対象の資料・ルーム・ページを指定できます              |
| 署名による検証     | 送信元がimmedio Boxであることを、シークレットを使った署名で検証できます |
| シークレットの再発行  | 署名に使うシークレットをいつでも再発行できます                   |
| 有効／無効の切り替え  | 設定を残したまま、送信先への配信を一時的に止められます               |

## Webhook送信先の作成・編集

### 送信先の作成方法

1. 管理画面から「外部連携」を選択します
2. 「Webhook連携」セクションの「送信先を追加」をクリックします
3. 「Webhook送信先の作成」画面で「名前」と「送信先URL」を入力します
4. 「受け取るイベント」で、通知を受け取りたいイベントにチェックを入れます
5. チェックを入れたイベントごとに、対象を指定します
6. 「作成」をクリックします

作成した送信先は「外部連携」ページの「Webhook連携」セクションに一覧表示されます。名前をクリックすると「Webhook送信先の編集」画面が開き、設定を変更できます。

### 設定項目

| 項目          | 説明                                |
| ----------- | --------------------------------- |
| 名前          | 管理画面で識別するための名前です（必須、100文字以内）      |
| 送信先URL      | POST先のURLです（必須）。httpsのURLのみ登録できます |
| 受け取るイベント    | 通知を受け取るイベントと、その対象です（必須、1つ以上）      |
| シークレット      | 署名の計算に使う秘密鍵です。作成時に自動発行されます        |
| この送信先を有効にする | 配信を行うかどうかの切り替えです                  |

「シークレット」と「この送信先を有効にする」は、作成後の「Webhook送信先の編集」画面に表示されます。作成直後の送信先は有効な状態です。

### 受け取るイベント

以下の8種類から、受け取るイベントを選択できます。

| イベント    | eventTypeの値             | 送信されるタイミング         | 対象の指定      |
| ------- | ----------------------- | ------------------ | ---------- |
| コンテンツ作成 | `CONTENT_CREATED`       | 資料が作成されたとき         | なし（全件）     |
| 閲覧開始    | `LEAD_ENGAGED`          | リードが資料の閲覧を開始したとき   | 資料単位       |
| 離脱      | `LEAD_ABANDONED`        | リードが資料から離脱したとき     | 資料単位       |
| ダウンロード  | `LEAD_DOWNLOADED`       | リードが資料をダウンロードしたとき  | 資料単位       |
| ページ到達   | `PAGE_REACHED`          | リードが指定したページに到達したとき | 資料とページ番号の組 |
| AI分析完了  | `AI_ANALYSIS_COMPLETED` | リードのAI分析が完了したとき    | 資料単位       |
| ルーム閲覧開始 | `ROOM_ENGAGED`          | リードがルームの閲覧を開始したとき  | ルーム単位      |
| ルーム離脱   | `ROOM_ABANDONED`        | リードがルームから離脱したとき    | ルーム単位      |

`eventType`の値は、リクエストボディの`eventType`に入ります。

イベントによって発生する資料の種別が異なるため、対象として選べる資料も次のとおり異なります。

| イベント   | 対象に選べる資料の種別       |
| ------ | ----------------- |
| 閲覧開始   | PDF、ドキュメント、URL、動画 |
| 離脱     | PDF、ドキュメント、動画     |
| ダウンロード | PDF、ドキュメント        |
| ページ到達  | PDF               |
| AI分析完了 | PDF               |

### 対象の指定

イベントにチェックを入れると、そのイベントの下に対象を指定する欄が表示されます。

#### 資料単位・ルーム単位のイベント

「すべての資料」（ルーム単位のイベントでは「すべてのルーム」）と「選択する」から選びます。初期状態は「すべて」です。

「選択する」を選ぶと選択欄が表示されます。「資料を選択」「ルームを選択」をクリックして候補から選ぶと、対象が1行ずつ追加されます。追加した対象は、行の右端の「×」で外せます。

* 候補は名前順で先頭20件のみ表示されます。目的の資料・ルームが表示されない場合は、検索ボックスに名前を入力して絞り込んでください
* 削除済み・アーカイブ済みの資料は候補に表示されません
* 同じ対象を重複して選ぶことはできません

#### ページ到達

ページ到達には「すべて」の指定がありません。チェックを入れると選択欄が表示されるので、対象の資料とページ番号の組を1件以上指定してください。

資料を選ぶと行が追加され、ページ番号には初期値として`1`が入ります。ページ番号は1以上の半角数字で入力します。

「資料Aの3ページ目」と「資料Aの10ページ目」のように、同じ資料を複数の行で指定することもできます。

### シークレット

シークレットは`whsec_`で始まる文字列で、署名の計算に使います。「Webhook送信先の編集」画面で確認できます。

初期状態ではマスクされているため、「表示」をクリックすると内容が表示されます。「隠す」をクリックすると再びマスクされます。

シークレットの使い方は「[署名と検証](#signature)」を参照してください。

#### シークレットの再発行

「シークレットを再発行」をクリックすると、確認メッセージが表示されます。

再発行すると**その時点で新しいシークレットに切り替わり、それ以降の配信はすべて新しいシークレットで署名されます。** 新旧を並行して受け付ける期間はないため、受信側の設定更新と合わせて実施してください。

再発行は編集フォームとは別の操作として送信されます。**編集中の未保存の変更は保存されない**ため、先に「保存」を済ませてから再発行してください。

### 有効／無効

「Webhook送信先の編集」画面の「この送信先を有効にする」で切り替えます。無効にすると配信が停止しますが、設定は残ります。

切り替えたあとに「保存」をクリックすると反映されます。一覧では「有効」「無効」として表示されます。

### 削除

一覧の「操作」列のゴミ箱アイコンをクリックすると、確認メッセージが表示されます。削除すると、その送信先への配信は行われなくなります。

## 通知仕様

### 送信タイミング

対象のイベントが発生した後、順次送信されます。1回のリクエストで送られるイベントは1件です。

### HTTPリクエスト仕様

| 項目                        | 値                        |
| ------------------------- | ------------------------ |
| メソッド                      | `POST`                   |
| Content-Type              | `application/json`       |
| `X-Immedio-Box-Timestamp` | 署名に用いたUNIX時刻（秒）          |
| `X-Immedio-Box-Signature` | 署名。`sha256=`に続けて16進数の文字列 |

2つのヘッダーの詳細は「[署名と検証](#signature)」を参照してください。

### 送信されるペイロード

共通の外枠に`eventType`を持ち、`data`配下の内容はイベントごとに異なります。

```json
{
  "eventId": "9f1c8e2a-4b6d-4f3a-8c21-5e7d9a0b1c2d",
  "eventType": "LEAD_ENGAGED",
  "occurredAt": "2026-08-20T10:00:00.000Z",
  "data": {
    "contentId": "3f0a1b2c-...",
    "contentName": "製品紹介資料",
    "contentUrl": "https://box.immedio.io/p/example/product",
    "leadEmail": "lead@example.com",
    "ownerEmail": "sales@example.com",
    "engagedAt": "2026-08-20T10:00:00.000Z",
    "openCount": 2,
    "questionnaireItemAnswers": {
      "company_size": "100-300名"
    }
  }
}
```

### 共通フィールド

| フィールド        | 型      | 説明                                             |
| ------------ | ------ | ---------------------------------------------- |
| `eventId`    | string | イベントごとに一意なID。**同じイベントの再送では同じ値になります**           |
| `eventType`  | string | イベントの種類                                        |
| `occurredAt` | string | イベントの発生日時。ISO 8601形式（UTC、ミリ秒付き）                |
| `data`       | object | イベントごとの内容。「[イベントごとのペイロード](#event-payloads)」を参照 |

### レスポンス

**2xxを返してください。** 200／201／202／204など2xxはすべて成功として扱います。2xx以外のステータスコードは配信失敗として扱われ、再送の対象になります。

処理完了を待たずに2xxを返し、実際の処理は非同期で行うことを推奨します。**10秒**以内に応答がない場合はタイムアウトとして扱われ、こちらも再送の対象になります。

## イベントごとのペイロード <a href="#event-payloads" id="event-payloads"></a>

### 全イベント共通の注意事項

* **フィールドが追加されることがあります。** 受信側では未知のフィールドを無視できる実装にしてください
* 既存フィールドの変更・削除を行う場合は、**3ヶ月以上前に事前に案内**します
* 日時はすべてISO 8601形式（UTC、ミリ秒付き）の文字列です
* `null`が入りうるフィールドには型に`| null`と記載しています
* `questionnaireItemAnswers`は、アンケートの項目識別子をキー、回答を値とするオブジェクトです。回答がない場合は`{}`になります
* `fileManagementUrl`／`leadViewLogUrl`／`sessionPageUrl`はimmedio Boxの管理画面へのリンクです。閲覧にはimmedio Boxへのログインが必要なため、社内での確認用リンクとして利用してください。**これらのURLの形式は予告なく変更される場合があります**（上記の事前案内の対象外です）

### コンテンツ作成 — `CONTENT_CREATED`

| フィールド            | 型      | 説明            |
| ---------------- | ------ | ------------- |
| `contentId`      | string | 資料ID          |
| `contentName`    | string | 資料名           |
| `contentUrlName` | string | 公開URLに使われる識別子 |

### 閲覧開始 — `LEAD_ENGAGED`

| フィールド                      | 型              | 説明                    |
| -------------------------- | -------------- | --------------------- |
| `contentId`                | string         | 資料ID                  |
| `contentName`              | string         | 資料名                   |
| `contentUrl`               | string         | 資料の公開URL              |
| `leadEmail`                | string         | リードのメールアドレス           |
| `ownerEmail`               | string \| null | 資料の担当者のメールアドレス        |
| `engagedAt`                | string         | 閲覧を開始した日時             |
| `openCount`                | number         | このリードがこの資料を閲覧開始した累計回数 |
| `questionnaireItemAnswers` | object         | アンケート回答               |

### 離脱 — `LEAD_ABANDONED`

| フィールド                      | 型              | 説明                     |
| -------------------------- | -------------- | ---------------------- |
| `contentId`                | string         | 資料ID                   |
| `contentName`              | string         | 資料名                    |
| `contentUrl`               | string         | 資料の公開URL               |
| `leadEmail`                | string         | リードのメールアドレス            |
| `ownerEmail`               | string \| null | 資料の担当者のメールアドレス         |
| `abandonedAt`              | string         | 離脱した日時                 |
| `totalDuration`            | number \| null | 累計閲覧時間（**秒**）          |
| `abandonedPage`            | number \| null | 離脱したページ番号              |
| `abandonedSeconds`         | number \| null | 離脱時の再生位置（秒）。動画のみ       |
| `totalPlaySeconds`         | number \| null | 累計再生時間（秒）。動画のみ         |
| `exitCount`                | number         | このリードがこの資料から離脱した累計回数   |
| `contentOverview`          | string \| null | 資料のAI要約。AI要約機能が有効な場合のみ |
| `sessionPageUrl`           | string \| null | 管理画面の該当セッション詳細ページURL   |
| `questionnaireItemAnswers` | object         | アンケート回答                |

### ダウンロード — `LEAD_DOWNLOADED`

| フィールド                      | 型              | 説明             |
| -------------------------- | -------------- | -------------- |
| `contentId`                | string         | 資料ID           |
| `contentName`              | string         | 資料名            |
| `contentUrl`               | string         | 資料の公開URL       |
| `leadEmail`                | string         | リードのメールアドレス    |
| `ownerEmail`               | string \| null | 資料の担当者のメールアドレス |
| `downloadedAt`             | string         | ダウンロードした日時     |
| `questionnaireItemAnswers` | object         | アンケート回答        |

### ページ到達 — `PAGE_REACHED`

| フィールド                      | 型              | 説明             |
| -------------------------- | -------------- | -------------- |
| `contentId`                | string         | 資料ID           |
| `contentName`              | string         | 資料名            |
| `contentUrl`               | string         | 資料の公開URL       |
| `leadEmail`                | string         | リードのメールアドレス    |
| `ownerEmail`               | string \| null | 資料の担当者のメールアドレス |
| `reachedAt`                | string         | 到達した日時         |
| `reachedPage`              | number         | 到達したページ番号      |
| `questionnaireItemAnswers` | object         | アンケート回答        |

### AI分析完了 — `AI_ANALYSIS_COMPLETED`

| フィールド                      | 型              | 説明                 |
| -------------------------- | -------------- | ------------------ |
| `contentId`                | string         | 資料ID               |
| `contentName`              | string         | 資料名                |
| `leadEmail`                | string         | リードのメールアドレス        |
| `analyzedAt`               | string         | 分析が完了した日時          |
| `domain`                   | string \| null | リードのメールアドレスのドメイン   |
| `companyName`              | string \| null | 企業名                |
| `companyDomain`            | string \| null | 企業ドメイン             |
| `headquarters`             | string \| null | 本社所在地              |
| `industry`                 | string \| null | 業種                 |
| `employeeCount`            | string \| null | 従業員数               |
| `revenue`                  | number \| null | 売上高                |
| `capital`                  | number \| null | 資本金                |
| `foundedYear`              | number \| null | 設立年                |
| `representative`           | string \| null | 代表者名               |
| `phoneNumber`              | string \| null | 電話番号               |
| `fiscalYearEndMonth`       | number \| null | 決算月                |
| `corporateNumber`          | string \| null | 法人番号               |
| `websiteUrl`               | string \| null | 企業サイトURL           |
| `listingStatus`            | string \| null | 上場区分               |
| `businessContent`          | string \| null | 事業内容               |
| `fullName`                 | string \| null | リードの氏名             |
| `sfdcUrl`                  | string \| null | SalesforceのレコードURL |
| `totalDuration`            | number         | 累計閲覧時間（**秒**）      |
| `maxReachedPage`           | number         | 最も深く到達したページ番号      |
| `exitPage`                 | number         | 離脱したページ番号          |
| `leadInterest`             | string \| null | AIが推定した関心事項        |
| `appointmentPoint`         | string \| null | AIが推定した商談ポイント      |
| `fileManagementUrl`        | string         | 管理画面の資料設定ページURL    |
| `leadViewLogUrl`           | string \| null | 管理画面の閲覧ログページURL    |
| `questionnaireItemAnswers` | object         | アンケート回答            |

### ルーム閲覧開始 — `ROOM_ENGAGED`

| フィールド                      | 型              | 説明                     |
| -------------------------- | -------------- | ---------------------- |
| `roomId`                   | string         | ルームID                  |
| `roomName`                 | string         | ルーム名                   |
| `leadEmail`                | string         | リードのメールアドレス            |
| `ownerEmail`               | string \| null | ルームの担当者のメールアドレス        |
| `engagedAt`                | string         | 閲覧を開始した日時              |
| `openCount`                | number         | このリードがこのルームを閲覧開始した累計回数 |
| `questionnaireItemAnswers` | object         | アンケート回答                |

### ルーム離脱 — `ROOM_ABANDONED`

| フィールド                      | 型              | 説明                    |
| -------------------------- | -------------- | --------------------- |
| `roomId`                   | string         | ルームID                 |
| `roomName`                 | string         | ルーム名                  |
| `leadEmail`                | string         | リードのメールアドレス           |
| `ownerEmail`               | string \| null | ルームの担当者のメールアドレス       |
| `abandonedAt`              | string         | 離脱した日時                |
| `totalDuration`            | number         | 累計閲覧時間（**秒**）         |
| `exitCount`                | number         | このリードがこのルームから離脱した累計回数 |
| `sessionPageUrl`           | string \| null | 管理画面の該当セッション詳細ページURL  |
| `questionnaireItemAnswers` | object         | アンケート回答               |

## 署名と検証 <a href="#signature" id="signature"></a>

### 署名の仕組み

immedio Boxは、送信時刻（UNIX秒）とリクエストボディを`.`でつないだ文字列のHMAC-SHA256をシークレットで計算し、`X-Immedio-Box-Signature`ヘッダーに付与して送信します。署名に用いた時刻は`X-Immedio-Box-Timestamp`ヘッダーで送ります。

```
X-Immedio-Box-Timestamp: 1787732048
X-Immedio-Box-Signature: sha256=3f8a1c...（16進数）
```

署名の対象は`{タイムスタンプ}.{生のボディ}`という文字列です。

**シークレットそのものはリクエストに含まれません。** 送られるのはシークレットで計算した署名だけです。受信側が同じシークレットで計算した値と一致すれば、「immedio Boxから送られたものであること」と「ボディが改竄されていないこと」を同時に確認できます。

署名にタイムスタンプを含めているのは、受信側がリプレイ攻撃を弾けるようにするためです。ボディだけを署名すると、署名済みのリクエストを丸ごと捕捉できた攻撃者が、それを何度でも再送できてしまいます。**タイムスタンプが現在時刻から大きくずれているリクエストは、署名が正しくても破棄してください。**

### 検証の手順

1. `X-Immedio-Box-Timestamp`の値を取り出し、現在時刻との差が許容範囲（例：5分）を超えていないか確認します。超えていれば、署名を検証せずに破棄します
2. リクエストボディを**JSONとしてパースする前の、生のバイト列のまま**取得します
3. `{タイムスタンプ}.{生のボディ}`という文字列を作り、シークレットを鍵としてHMAC-SHA256を計算し、16進数の文字列にします
4. 先頭に`sha256=`を付け、`X-Immedio-Box-Signature`の値と比較します

**必ず生のボディで計算してください。** 一度JSONとしてパースしてから文字列に戻すと、キーの順序や空白が変わり署名が一致しません。

比較にはタイミング攻撃に耐性のある関数（`crypto.timingSafeEqual`／`hmac.compare_digest`など）を使ってください。

再送のたびにタイムスタンプと署名は変わりますが、ボディの内容は初回と同じです。

### サンプルコード

Node.js（Express）での実装例です。

```js
import crypto from "node:crypto";
import express from "express";

const app = express();

/** タイムスタンプの許容ずれ（秒） */
const TOLERANCE_SEC = 300;

// 署名検証には生のボディが必要
app.post("/webhook", express.raw({ type: "application/json" }), (req, res) => {
  const timestamp = req.get("X-Immedio-Box-Timestamp") ?? "";
  const signature = req.get("X-Immedio-Box-Signature") ?? "";

  // リプレイ対策。古いリクエストは署名が正しくても受け付けない
  const skewSec = Math.abs(Math.floor(Date.now() / 1000) - Number(timestamp));
  if (!Number.isFinite(skewSec) || skewSec > TOLERANCE_SEC) {
    return res.status(401).send("stale timestamp");
  }

  // タイムスタンプと生のボディを "." でつないだ文字列を署名する
  const expected =
    "sha256=" +
    crypto
      .createHmac("sha256", process.env.WEBHOOK_SECRET)
      .update(`${timestamp}.${req.body.toString("utf8")}`)
      .digest("hex");

  const valid =
    signature.length === expected.length &&
    crypto.timingSafeEqual(Buffer.from(signature), Buffer.from(expected));

  if (!valid) {
    return res.status(401).send("invalid signature");
  }

  const event = JSON.parse(req.body.toString("utf8"));

  // ここでは受け取ったことだけ記録し、重い処理は非同期に行う
  res.status(200).send("OK");
});
```

## 配信の仕組み

### 配信の成功と失敗

**2xxが返ってきた場合のみ成功**として扱います。2xx以外のステータスコード、10秒以内に応答がない場合、接続できない場合はいずれも失敗となり、時間をおいて再送します。

なお、**リダイレクト（3xx）は追従しません。** 3xxはそのまま配信失敗として扱われるため、送信先URLにはリダイレクトを挟まない最終的なURLを指定してください。

再送を繰り返しても成功しなかった場合、そのイベントの配信は行われません。

### 同じイベントが複数回届くことがあります <a href="#redelivery" id="redelivery"></a>

再送の仕組み上、**受信側が正常に処理したにもかかわらず同じイベントが再度届くことがあります**（例：処理は成功したが応答を返す前にタイムアウトした場合）。

`eventId`は**イベントごとに一意で、再送のときも同じ値**になります。この`eventId`をキーに、**受信側で冪等性を担保してください**（処理済みならスキップする、`eventId`をキーにupsertするなど、方法は問いません）。

### 再送の内容は初回と同じです

配信内容はイベント発生時に確定されるため、再送のたびに内容が変わることはありません。

### 送信の順序は保証されません

イベントが発生した順に届くとは限りません。前後関係が重要な場合は`occurredAt`で判断してください。

### 複数の送信先を登録している場合

送信先ごとに独立して配信されます。1つの送信先が失敗しても、他の送信先の配信には影響しません。

### 無効化・削除した送信先

無効にした送信先、削除した送信先へは配信されません。

## 注意事項

* 送信先の追加・保存・削除、シークレットの再発行は、オーナー権限のユーザーのみ可能です。設定内容の確認はオーナー以外のユーザーもできます
* 送信先URLはhttpsのURLのみ登録できます。ローカル環境のURLは登録できません
* 同じURLを複数の送信先として登録することはできません。1つの送信先で複数のイベントを購読できるため、分けて登録する必要はありません
* 1つのイベントにつき、対象として指定できる資料・ルームは100件までです
* ページ到達はPDFの資料でのみ動作します。また、**指定したページに到達したときのみ**送信されます。全ページ分は送信されません
* **企業トラッキング**によって記録されたアクセス（リード個人が特定されていないもの）では、これらのイベントは送信されません
* 対象に指定していた資料・ルームが削除された場合、編集画面ではその行に資料名・ルーム名ではなくIDが表示されます

## よくある質問

### 同じイベントが2回届きました

再送の仕組み上、正常に処理した場合でも同じイベントが再度届くことがあります。`eventId`をキーに、受信側で冪等性を担保してください。詳しくは「[同じイベントが複数回届くことがあります](#redelivery)」を参照してください。

### 署名の検証に失敗します

次の点を確認してください。

* リクエストボディを**JSONとしてパースする前の生のバイト列**で計算しているか。パースしてから文字列に戻すと、キーの順序や空白が変わり一致しません
* 署名の対象を`{タイムスタンプ}.{生のボディ}`という文字列にしているか
* 先頭の`sha256=`を含めて比較しているか
* シークレットを再発行していないか。再発行するとその時点で新しいシークレットに切り替わるため、受信側の設定も更新する必要があります

### 設定したのにWebhookが届きません

次の点を確認してください。

* 送信先が「無効」になっていないか
* 発生したイベントが、対象として指定した資料・ルームのものか
* ページ到達を設定している場合、対象がPDFの資料で、かつ指定したページに実際に到達しているか
* 企業トラッキングによるアクセス（リード個人が特定されていないもの）ではないか
* 送信先URLがリダイレクトを挟んでいないか。リダイレクト（3xx）には追従しません

### 同じURLを複数の送信先として登録したいのですが

同じURLを複数の送信先として登録することはできません。1つの送信先で複数のイベントを購読できるため、分けて登録する必要はありません。

### 対象に指定したい資料が選択候補に出てきません

候補は名前順で先頭20件のみ表示されます。検索ボックスに資料名を入力して絞り込んでください。削除済み・アーカイブ済みの資料は候補に表示されません。


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.immedio.io/immedio-box/integrations/webhook.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
