> ## Documentation Index
> Fetch the complete documentation index at: https://hc.saas-manager.biz.nuro.jp/llms.txt
> Use this file to discover all available pages before exploring further.

# 3-6.Webhookのワークフローを設定する

> Webhookのワークフローの設定手順です。

本ページでは、外部システム（HRIS、IdP、カスタムツールなど）からWebhookを受信し、ID管理を自動化するための「Webhook 同期テンプレート」の設定手順を解説します。

## 前提条件

Webhookを利用した自動化を実施する前に、以下をご確認ください。

| カテゴリ        | 項目             | 詳細・要件                                                                                      |
| ----------- | -------------- | ------------------------------------------------------------------------------------------ |
| **送信元システム** | アウトバウンドWebhook | HRIS、IdP、または独自システム側で外部へデータを送信するWebhook設定が可能であること。                                          |
|             | データ形式          | JSONボディから改行やスペースを除去し、コンパクトな文字列にしてから署名を生成してください。送信側でインデントを含めて署名すると、検証用データと乖離が生じ、署名エラーとなります。 |
|             | HTTPヘッダー       | `X-Timestamp` および `X-Webhook-Signature`（認証用）を送信可能であること。                                    |
| **サービス連携**  | 入退社対応          | 自動プロビジョニング・デプロビジョニング対象の各SaaSが連携済みであること。                                                    |
| **通知機能**    | Slack通知        | Slackの連携が完了していること。                                                                         |
|             | メール通知          | 送信先となる受信者のメールアドレスが特定・把握できていること。                                                            |

## テンプレートの概要と選び方

目的に合わせた6つの事前構築済みWebhook同期テンプレートをご提供しております。

| テンプレート名                  | 主な動作                                                                                               | 利用シーン（例）                                                                                                                                    |
| ------------------------ | -------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------- |
| **外部オンボーディング同期**         | HRIS（人事労務システム）の新規入社者データを**Webhook**で送信することで、ID作成とSaaSのアカウント発行を自動化できます。                             | HRISで新入社員レコードを作成した瞬間、ID作成とSaaSのアクセス権限付与を自動化する場合                                                                                             |
| **外部オフボーディング同期**         | HRIS（人事労務システム）の退職者データを**Webhook**で送信することで、SaaSのアカウント削除やIDアーカイブを自動化できます。                            | HRISで退社とマークした瞬間、全SaaSの利用停止とIDのアーカイブを自動化する場合                                                                                                 |
| **リアルタイムID同期**           | 外部システム上の変更データ（部署・役職等）を**Webhook**で送信することで、ID情報の更新と連携システムへの通知を自動化できます。                              | 外部システムを正とし、属性変更（部署・役職等）を即時反映する場合。変更内容をSlackやメールで通知も可能です。                                                                                    |
| **Salesforceフィールドマッピング** | SalesforceからWebhookでデータを受信し、ID情報を更新します。その後、更新結果を外部システムにWebhookで同期します。                              | ・Salesforceのデータ変更を当サービスに自動反映する場合<br />・CRM/ERPの情報をIDフィールドと双方向に同期する場合<br />・外部SaaSのフィールド変更を即座に反映し、結果を別システムに通知する場合                            |
| **条件付きオンボーディング**         | 外部システム（HRIS等）からWebhookで新入社員データを受信し、IDを作成します。フィルター条件（部署・役職等）で評価した上で、条件に合致した場合のみサービスをプロビジョニングし通知します。 | ・新入社員の部署や役職によって、プロビジョニングするサービスを出し分けする場合<br />・HRISからの入社データを自動登録し、条件付きで適切なツールアクセスを付与したい場合<br />例：エンジニアにはGitHub/JIRAを、営業にはSalesforceをプロビジョニング |
| **Webhookリレー**           | 任意のWebhookを受信し、ペイロードをそのまま（または変換して）別のシステムにHTTPリクエストとして転送するシンプルなリレーです。                               | ・既存のWebhookを別システムに中継・変換する場合<br />・AシステムのイベントをBシステムに通知する場合（中継地点として利用）<br />・Webhookのルーティングやペイロード変換が必要な場合                                     |

<img src="https://mintcdn.com/admina-sbn/EDepliO7LolMf-Gf/images/it-management/workflows/ptlpl2j0za-webhook/webhook-361.png?fit=max&auto=format&n=EDepliO7LolMf-Gf&q=85&s=c5f88e768363c5b5ea1c7f7cdb4055dc" alt="6つのWebhook同期テンプレートの概要説明カードが2列に並んだ画面" width="1436" height="408" data-path="images/it-management/workflows/ptlpl2j0za-webhook/webhook-361.png" />

## 設定手順

1. 自動化 > ［自動化を作成］をクリックします。

2. ダイアログからWebhookテンプレートを選択します。
   1. リアルタイムID同期：［リアルタイム同期を使用］をクリックします。
   2. 外部オンボーディング同期：［Webhookトリガーを使用］をクリックします。
   3. 外部オフボーディング同期：［Webhookオフボーディングを使用］をクリックします。
   4. Salesforceフィールドマッピング：［Salesforceフィールドマッピングを使用］をクリックします。
   5. 条件付きオンボーディング：［条件付きオンボーディングを使用］をクリックします。
   6. Webhookリレー：［Webhookリレーを使用］をクリックします。

3. 「ビルダー」画面の「1. Webhook」の「設定」タブで設定します。詳細は「ドキュメント」タブもご参照ください。
   「Webhook URL」のURLと「Webhook シークレット」のシークレットをコピーして保存後、送信元システム側でコピーしたURLとシークレットを設定して公開します。

   | 項目             | 内容                                                                                                                                                                                    |
   | -------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
   | **Webhookテスト** | 「Webhookテスト」で［Webhookテストを開始］をクリックすると、待機状態になります。サイドバーに「Waiting for an incoming webhook request…」と表示されます。送信元システムから、テスト用のペイロード（JSON）を一度 **POST** 送信します。                                  |
   | **テスト受信**      | 受信したデータはパネルに表示され、以下の2つの用途で利用可能になります。・**署名設定の検証**：受信時刻と **OK / Error** バッジが表示され、正しく認証されているか確認できます。・**変数の自動推定**：ペイロードのキーが自動抽出されます。以降のノードで `{{trigger.<key>}}` 形式の変数として参照・マッピングが可能になります。 |

   <Warning>
     **Webhookシークレット**：生成時に一度しか表示されません。再生成した場合は、送信元システム側の設定も新しいシークレットへ更新する必要があります。

     **テスト実行中の注意**：サイドバーを閉じないでください。サイドバーを閉じるとリスニングセッションが中断され、再度 ［Webhookテストを開始］のやり直しが必要です。
   </Warning>

   <img src="https://mintcdn.com/admina-sbn/LLQ8yW8IwmV6hfAn/images/it-management/workflows/ptlpl2j0za-webhook/002.png?fit=max&auto=format&n=LLQ8yW8IwmV6hfAn&q=85&s=d108ff020c03172b30eee6f54fbe823d" alt="Webhookテスト受信画面" width="1584" height="1076" data-path="images/it-management/workflows/ptlpl2j0za-webhook/002.png" />

4. 「1. Webhook」以降は、選択したテンプレート毎に表示される画面が異なります。詳細はリンク先の手順もご参照ください。
   1. リアルタイムID同期：[「データマッピング」](#data-mapping) > [「アイデンティティ」](#identity) > [「HTTP リクエスト」](#http-request)
   2. 外部オンボーディング同期：[「データマッピング」](#data-mapping) > [「アイデンティティ」](#identity) > [サービス選択（並列実行）](#parallel-execution) > [通知](#notification)
   3. 外部オフボーディング同期：[「データマッピング」](#data-mapping) > [サービス選択（並列実行）](#parallel-execution) > [「アイデンティティ」](#identity) > [通知](#notification)
   4. Salesforceフィールドマッピング：[「アイデンティティ」](#identity)
   5. 条件付きオンボーディング：[「アイデンティティ」](#identity) > [サービス選択（並列実行）](#parallel-execution) > [通知](#notification)
   6. Webhookリレー：[「HTTP リクエスト」](#http-request)

5. 設定完了後に「ビルダー」の全てのチェックが緑色に変わりますので、\[公開]または\[ドライラン]をクリックします。

   <img src="https://mintcdn.com/admina-sbn/EDepliO7LolMf-Gf/images/it-management/workflows/ptlpl2j0za-webhook/1783637963558-automatio.png?fit=max&auto=format&n=EDepliO7LolMf-Gf&q=85&s=4b66f141f60ee6d13afb17e470171247" alt="ビルダー公開ボタン" width="1520" height="1338" data-path="images/it-management/workflows/ptlpl2j0za-webhook/1783637963558-automatio.png" />

6. 「ワークフロー自動化の設定を確認」画面が表示されますので、自動化名を入力して、［公開］をクリックします。

   ※自動化名にはご登録済の名称は登録できません。

   <img src="https://mintcdn.com/admina-sbn/LLQ8yW8IwmV6hfAn/images/it-management/workflows/ptlpl2j0za-webhook/004.png?fit=max&auto=format&n=LLQ8yW8IwmV6hfAn&q=85&s=0a63b45a582ffd25bb2ff4cf96ffa6ac" alt="ワークフロー公開確認画面" width="1638" height="1154" data-path="images/it-management/workflows/ptlpl2j0za-webhook/004.png" />

7. 「ワークフローが公開されました」と表示されますので、［OK］をクリックします。

   <img src="https://mintcdn.com/admina-sbn/LLQ8yW8IwmV6hfAn/images/it-management/workflows/ptlpl2j0za-webhook/005.png?fit=max&auto=format&n=LLQ8yW8IwmV6hfAn&q=85&s=fd5c81705594aefd79722c993531919f" alt="ワークフロー公開完了画面" width="1084" height="1306" data-path="images/it-management/workflows/ptlpl2j0za-webhook/005.png" />

<h2 id="data-mapping">
  データマッピング
</h2>

「ビルダー」画面の「データマッピング」を選択すると、標準IDフィールドと貴社のカスタムIDフィールドが一覧表示されます。
［サンプルペイロードから自動入力］をクリックして、テスト受信したキーに基づき各フィールドを自動推測します（完全一致 > 前方・後方一致の優先順でマッチング）。

<Info>
  保存前に必ず内容を見直してください。一致しなかったフィールドは空欄となり、実行時はスキップされます。

  上書きする場合、フィールドをクリックして ［Insert Variable］から変数を選択するか、直接パス（例：`{{trigger.user_displayName}}`）を入力して上書き・指定してください。

  各フィールドに設定できるのは、1つの `{{trigger.X}}` のみです。複数入力すると無効になります。
</Info>

**ターゲット**：現在は、「identity」のみ選択できます。

**フィールドマッピング**：データソースからターゲットフィールドへの変換ルールを定義します。[カスタム項目](/it-management/workflows/rdeflerejh-automation-custom)も設定できます。

<img src="https://mintcdn.com/admina-sbn/LLQ8yW8IwmV6hfAn/images/it-management/workflows/ptlpl2j0za-webhook/006.png?fit=max&auto=format&n=LLQ8yW8IwmV6hfAn&q=85&s=b9c29120fd9918d5876808075c0d2640" alt="データマッピング設定画面" width="658" height="598" data-path="images/it-management/workflows/ptlpl2j0za-webhook/006.png" />

<h2 id="identity">
  アイデンティティ
</h2>

「ビルダー」画面の「3. アイデンティティ」で対象となるユーザーに対して、以下の操作をします。

<img src="https://mintcdn.com/admina-sbn/LLQ8yW8IwmV6hfAn/images/it-management/workflows/ptlpl2j0za-webhook/007.png?fit=max&auto=format&n=LLQ8yW8IwmV6hfAn&q=85&s=e0465d243e683b5a6a92812d1db806e9" alt="アイデンティティ設定画面" width="1622" height="1240" data-path="images/it-management/workflows/ptlpl2j0za-webhook/007.png" />

| 項目        | 内容                                                                                                                                                                                                                                   |
| --------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| **操作**    | アイデンティティに対する操作タイプが以下のように選択されています。・**アイデンティティを更新**：テンプレート「リアルタイムID同期 / 外部オフボーディング同期」を選択した場合に表示されます。・**アイデンティティを作成**：テンプレート「外部オンボーディング同期」を選択した場合に表示されます。                                                                               |
| **パラメータ** | パラメータフィールドが動的に表示されます。上記「操作」で表示される操作タイプに応じて、**「アイデンティティを更新 パラメータ」「アイデンティティを作成 パラメータ」** が表示されます。`{{identity.displayName}}`（表示名）や `{{identity.primaryEmail}}`（メインメールアドレス）などの変数が正しく紐付いているか確認します。役職、部署名、従業員ID、契約終了日などの項目も必要に応じてマッピング可能です。 |

<h2 id="parallel-execution">
  サービス選択（並列実行）
</h2>

1. 「並列実行」 > ［+別のサービスを追加］をクリックして、ワークフローに設定するサービスを追加します。

   <img src="https://mintcdn.com/admina-sbn/LLQ8yW8IwmV6hfAn/images/it-management/workflows/ptlpl2j0za-webhook/008.png?fit=max&auto=format&n=LLQ8yW8IwmV6hfAn&q=85&s=482910882f2834b8a9068218eb740a6b" alt="並列実行 サービス追加画面" width="574" height="208" data-path="images/it-management/workflows/ptlpl2j0za-webhook/008.png" />

2. 「プロビジョニング」または「デプロビジョニング」に表示されるサービスを選択します。
   表示されるサービスは[事前設定（マッピング）](/it-management/workflows/ms4wo45v27-admina-automation-wic)したサービスです。
   複数のサービスをワークフローに設定する場合、「複数選択」をONにします。

3. 「並列実行」画面で選択したサービスをクリックすると、右側に「設定」画面が表示されます。
   「サービス設定 - ワークスペース名」をプルダウンから選択します。
   複数のサービスを設定する場合は ［+別のサービスを追加］から設定します。

<h2 id="notification">
  通知
</h2>

1. 「通知」 > ［+別の通知を追加］をクリックします。

2. 「メッセージ」画面で通知方法「Slack/Email」を選択します。
   複数の通知を設定する場合、「複数選択」をONにします。
   Slackの手順は[通知方法「Slack」の設定手順](/it-management/workflows/ygzni03g1c-admina-automation-wic-ggx)をご参照ください。

3. 「通知」画面で選択したメッセージをクリックすると、右側に「設定」画面が表示されます。

<h2 id="http-request">
  HTTP リクエスト
</h2>

「4. HTTPリクエスト」では、外部APIへのコールバックが必要な場合、メソッド（POST等）やエンドポイントURLを設定します。

送信元では以下の形式でWebhookを送出するよう設定してください。

| 項目                       | 指定値・要件                                    |
| ------------------------ | ----------------------------------------- |
| エンドポイント                  | 当サービス上に生成されたWebhook URL                   |
| メソッド                     | POST                                      |
| ヘッダー：Content-Type        | application/json                          |
| ヘッダー：X-Timestamp         | Unix タイムスタンプ（ミリ秒、文字列）                     |
| ヘッダー：X-Webhook-Signature | sha256=HMAC-SHA256(secret, "{ts}.{body}") |
| リクエストボディ                 | コンパクトなJSON（空白・インデントなし）。送るキーがそのまま変数になります。  |

## ワークフローの自動実行と確認方法

このワークフローは手動で起動する必要はありません。署名付きの **POST** リクエストを受信するたびに自動実行されます。

Webhook URLに有効なリクエストが到達すると、即座に「タイムスタンプ」と「署名」の正当性を検証します。検証を通過すると、ペイロードを保存した上でワークフローをバックグラウンドで開始します。

最新の実行で実際に使用されたペイロード値は、以下の場所で確認可能です。

* エディタ：変数ピッカー内で実際の値を確認できます。
* 実行詳細：Variable Resolution（変数解決）パネルにて、展開されたデータの詳細が表示されます。

### 動作確認の手順

構築したワークフローが正常に動作するか、「実行」「ログ」タブで確認してください。

「実行」「ログ」タブを開き、「受信ペイロード」「解決された変数」「各アクションの成否」が詳細に表示されます。

送信元システムから実データ（またはデバッグパネル）を送信し、ステータスが `Pending` から完了へ進み、ID作成や通知が期待通りに行われるか確認します。

<Info>
  **実行が `Pending` から進まない場合：** これは設定間違いではなく、システム側のエンキュー（処理待ち）に関する問題の可能性があります。
</Info>

## トラブルシューティング

| 症状               | 考えられる原因と対処法                                                      |
| ---------------- | ---------------------------------------------------------------- |
| 401 Unauthorized | 署名不一致。ボディをインデントなしで文字列化してから署名しているか確認してください。                       |
| 400 Bad Request  | ヘッダー不足や、タイムスタンプ（ミリ秒）の形式、時計ずれを確認してください。                           |
| 変数が解決されない        | マッピングノードで ［サンプルペイロードから自動入力］を再実行し、パスが正しいか確認してください。                |
| シークレット紛失         | 「Webhook シークレット」のシークレットをコピーして保存後、送信元システム側でコピーしたシークレットに更新して公開します。 |
