Webhook連携ガイド

Webhook機能を使用すると、マスターデータの作成・更新・削除イベントを外部サービスにリアルタイムで通知できます。

概要

Webhookとは?

Webhookは、特定のイベントが発生した際に、あらかじめ登録したURLに対してHTTP POSTリクエストを送信する仕組みです。

対応イベント

  • master_data.created - マスターデータ作成時
  • master_data.updated - マスターデータ更新時
  • master_data.deleted - マスターデータ削除時

主な連携先

  • Zapier - 3,000以上のアプリと連携可能
  • Power Automate - Microsoft 365との連携
  • Slack - チャット通知
  • カスタムシステム - 独自開発のシステム

活用事例

Webhookを使うことで、マスターデータの変更を起点とした様々な業務自動化が実現できます。

事例1: 社員マスター変更時のSlack通知

課題: 人事部で社員情報が更新されたことを、関係部署(IT部門、総務部門)にタイムリーに共有したい

解決策:

  1. Webhook → Zapier → Slack連携を設定
  2. 社員マスター(employee)の作成・更新イベントを監視
  3. 変更があれば自動的にSlackチャンネルに通知

効果:

  • 新入社員登録時にIT部門が即座にアカウント準備を開始できる
  • 部署異動時に関係者全員が同時に把握できる
  • 手動での連絡漏れがなくなる

事例2: 取引先マスターとSalesforce連携

課題: 取引先マスターの変更をSalesforceにも反映させたい

解決策:

  1. Webhook → Zapier → Salesforce連携を設定
  2. 取引先マスター(customer)の更新イベントを監視
  3. Salesforceの取引先オブジェクトを自動更新

効果:

  • 二重入力の手間を削減
  • マスターデータとCRMの整合性を自動維持
  • 営業担当者が常に最新情報を参照できる

事例3: 承認完了時のTeams通知

課題: マスターデータの承認が完了したら、申請者と関係者に通知したい

解決策:

  1. Webhook → Power Automate → Teams連携を設定
  2. マスター更新イベント(承認完了ステータス)を監視
  3. Microsoft Teamsのチャネルまたは個人チャットに通知

効果:

  • 承認完了をリアルタイムで把握
  • 次のアクションを迅速に開始できる
  • メールを確認する手間を削減

事例4: マスター変更ログのGoogle Sheets蓄積

課題: マスターデータの変更履歴を別システムでも管理したい

解決策:

  1. Webhook → Zapier → Google Sheets連携を設定
  2. すべてのマスターイベント(作成・更新・削除)を監視
  3. Google Sheetsに1行ずつ追記

マッピング例:

データ
Aタイムスタンプ
Bイベントタイプ
Cマスタータイプ
DデータID
E変更内容(JSON)

効果:

  • 変更履歴を外部でもバックアップ
  • 監査対応や分析に活用可能
  • スプレッドシートで共有しやすい

事例5: 商品マスター更新時のECサイト連携

課題: 商品マスターを更新したら、ECサイトの商品情報も自動更新したい

解決策:

  1. Webhook → カスタムシステム連携を設定
  2. 商品マスター(product)の更新イベントを監視
  3. ECサイトのAPIを呼び出して商品情報を更新

技術的なポイント:

  • 署名検証を実装してセキュリティを確保
  • リトライに対応した冪等性のある処理を実装
  • エラー時のアラート通知も設定

効果:

  • マスターデータを「Single Source of Truth」として運用
  • 手動同期の手間とミスを削減
  • 複数チャネルの情報整合性を維持

事例6: 在庫マスター変更時のアラート

課題: 在庫数が閾値を下回ったときに、自動でアラートを発報したい

解決策:

  1. Webhook → Zapier → Filter → Email/Slack連携を設定
  2. 在庫マスター(inventory)の更新イベントを監視
  3. Zapierのフィルター機能で「在庫数 < 閾値」の場合のみ通知

効果:

  • 在庫切れを未然に防止
  • 発注のタイミングを自動化
  • 担当者の監視負担を軽減

Webhook管理画面の使い方

1. Webhook管理画面にアクセス

  1. サイドバー → 「Webhook管理」 をクリック
  2. 登録済みWebhook一覧が表示されます

2. 新しいWebhookを作成

  1. 「Webhook作成」 ボタンをクリック
  2. フォームに以下を入力:
    • Webhook URL: 通知先のURL
    • イベント: 通知したいイベントを選択
      • ✓ マスター作成時
      • ✓ マスター更新時
      • ✓ マスター削除時
    • マスタータイプ: (オプション)特定のマスターのみ通知する場合に入力
  3. 「作成」 をクリック
  4. Secretダイアログ が表示されます
    • このSecretは署名検証に使用します
    • 「コピー」 をクリックして保存してください
    • ⚠️ この画面を閉じると二度と表示されません

3. テスト送信

  1. Webhook一覧で対象Webhookの 「︙」 メニューをクリック
  2. 「テスト送信」 を選択
  3. テストデータが送信されます
  4. 通知先(Webhook.site、Zapierなど)で受信を確認

4. 配信ログを確認

  1. Webhook一覧で 「配信ログを見る」 をクリック
  2. 配信履歴が表示されます:
    • 配信時刻
    • イベントタイプ
    • ステータス(成功/失敗/リトライ待機中)
    • HTTPステータスコード
    • リトライ回数
  3. 「詳細」 ボタンで以下を確認:
    • 送信ペイロード
    • レスポンスボディ
    • エラーメッセージ

5. Webhookの管理

有効/無効の切り替え:

  • 「︙」メニュー → 「無効にする」 / 「有効にする」

Webhookの削除:

  • 「︙」メニュー → 「削除」
  • 確認ダイアログで 「削除」 をクリック

Zapier連携の手順

ステップ1: Zapierで準備

  1. Zapier にログイン
  2. 「Create Zap」 をクリック
  3. トリガー: 「Webhooks by Zapier」 を選択
  4. イベント: 「Catch Hook」 を選択
  5. Webhook URLが生成されます(例: https://hooks.zapier.com/hooks/catch/12345/abcde/
  6. このURLをコピー

ステップ2: SURP MDMでWebhook登録

  1. Webhook管理画面で 「Webhook作成」
  2. Webhook URL: ZapierのURLを貼り付け
  3. イベント: 必要なイベントを選択
  4. 「作成」 をクリック

ステップ3: テスト送信

  1. Webhook一覧で 「テスト送信」
  2. Zapierの画面に戻り 「Test trigger」 をクリック
  3. データが受信されたことを確認

ステップ4: アクションを設定

  1. Zapierで 「Action」 ステップを追加
  2. アプリを選択(例: Slack、Google Sheets、Gmail)
  3. データをマッピング
  4. 「Publish」 でZapを有効化

サンプル連携例

Slack通知:

新しいマスターデータが登録されました!

マスタータイプ: {{data__master_type}}
データID: {{data__id}}
登録日時: {{timestamp}}

Google Sheets追加:

  • A列: {{data__id}}
  • B列: {{data__master_type}}
  • C列: {{timestamp}}

Power Automate連携の手順

ステップ1: Power Automateで準備

  1. Power Automate にログイン
  2. 「作成」「自動化したクラウドフロー」
  3. フロートリガー: 「HTTP要求の受信時」 を選択
  4. 「作成」 をクリック

ステップ2: JSONスキーマを設定

トリガーカードで以下のJSONスキーマを貼り付け:

{
  "type": "object",
  "properties": {
    "event": {"type": "string"},
    "timestamp": {"type": "string"},
    "webhook_id": {"type": "string"},
    "data": {
      "type": "object",
      "properties": {
        "id": {"type": "string"},
        "master_type": {"type": "string"}
      }
    }
  }
}

ステップ3: 認証設定(重要)

  1. トリガーカードの右上 「︙」「設定」
  2. 「このフローを実行できるユーザー」「誰でも」 に変更
  3. フローを保存
  4. HTTP POST URLをコピー
    • ⚠️ URLに ?api-version=1&sp=...&sv=...&sig=... が含まれることを確認
    • このSASトークン(sig=...)が認証に必要です!

ステップ4: SURP MDMでWebhook登録

  1. Webhook管理画面で 「Webhook作成」
  2. Webhook URL: Power AutomateのURL(SASトークン付き)を貼り付け
  3. イベント: 必要なイベントを選択
  4. 「作成」 をクリック

ステップ5: アクションを追加

  1. 「新しいステップ」 をクリック
  2. アプリを選択(例: Teams、SharePoint、Excel Online)
  3. データをマッピング:
    • data('id')
    • data('master_type')
  4. フローを保存

ステップ6: テスト実行

  1. Power Automateで 「テスト」 をクリック
  2. SURP MDM → Webhook管理 → 「テスト送信」
  3. Power Automateでフロー実行成功を確認(緑のチェックマーク)
  4. 配信ログで成功を確認

Webhookペイロード形式

送信されるJSONデータの構造:

{
  "event": "master_data.created",
  "timestamp": "2025-11-08T10:00:00Z",
  "webhook_id": "550e8400-e29b-41d4-a716-446655440000",
  "data": {
    "id": "data-uuid",
    "master_type": "employee",
    "tenant_id": "company-a",
    "data": {
      "employeeId": "E001",
      "name": "山田太郎",
      "email": "[email protected]",
      "department": "営業部"
    },
    "created_at": "2025-11-08T10:00:00Z",
    "updated_at": "2025-11-08T10:00:00Z"
  }
}

HTTPヘッダー

Content-Type: application/json
X-Webhook-Signature: <HMAC-SHA256署名>
X-Webhook-ID: <Webhook UUID>
User-Agent: MDM-SaaS-Webhook/1.0

セキュリティ: 署名検証

Webhookが本物のSURP MDMから送信されたことを検証できます。

検証方法

  1. Webhook作成時に表示されたSecretを使用
  2. X-Webhook-Signature ヘッダーを取得
  3. ペイロード全体(JSON文字列)とSecretでHMAC-SHA256署名を計算
  4. 計算した署名と受信した署名を比較

Python検証例

import hmac
import hashlib
 
def verify_signature(payload, signature, secret):
    expected_signature = hmac.new(
        secret.encode('utf-8'),
        payload.encode('utf-8'),
        hashlib.sha256
    ).hexdigest()
 
    return hmac.compare_digest(expected_signature, signature)
 
# 使用例
webhook_secret = "whsec_abc123xyz..."
received_signature = request.headers['X-Webhook-Signature']
payload = request.body
 
if verify_signature(payload, received_signature, webhook_secret):
    # 検証成功 - データ処理を続行
    process_webhook_data(payload)
else:
    # 検証失敗 - 不正なリクエスト
    return 401

リトライの仕組み

配信に失敗した場合、自動的にリトライされます。

リトライスケジュール

リトライ回数待機時間累計時間
1回目1分後1分
2回目5分後6分
3回目15分後21分
4回目1時間後1時間21分
5回目(最終)24時間後25時間21分

配信ログでの確認

  • ステータス: リトライ待機中
  • リトライ回数: X / 5
  • 次回リトライ: X分後

トラブルシューティング

Power Automateで401エラーが発生する

症状: 配信ログに response_status: 401 が記録される

原因: Power AutomateのHTTPトリガーがSASトークン認証を要求している

解決方法:

  1. 配信ログを確認:

    • Webhook管理 → 配信ログ → 詳細
    • response_status: 401 を確認
  2. Power Automate側の設定:

    • フロー編集画面を開く
    • トリガーカードの右上「︙」→「設定」
    • 「このフローを実行できるユーザー」を 「誰でも」 に変更
    • フローを保存
    • 新しいURL(SASトークン付き)を確認
  3. Webhookを更新:

    • SURP MDM → Webhook管理 → 該当Webhookを削除
    • 新しいURL(SASトークン付き)で再作成
    • テスト送信で成功を確認

URLの違いの例:

❌ 誤(SASトークンなし):
https://default...powerplatform.com/.../invoke?api-version=1

✅ 正(SASトークンあり):
https://default...powerplatform.com/.../invoke?api-version=1&sp=...&sig=abc123

Webhookが届かない

確認手順:

  1. Webhook管理画面で確認:

    • 配信ログ → ステータスを確認
    • エラーメッセージを確認
  2. Webhook URLを確認:

    • URLが正しいか確認
    • Zapier/Power Automateでフローが有効か確認
  3. イベントフィルターを確認:

    • 必要なイベントが選択されているか確認
    • マスタータイプフィルターが適切か確認

配信に失敗する(HTTPエラー)

HTTP 401/403エラー:

  • Power Automate: 上記「Power Automateで401エラーが発生する」を参照
  • Zapier: Webhook URLを再生成してみる

HTTP 500エラー:

  • 配信ログ → 詳細 → error_message を確認
  • Zapier/Power Automateのフロー実行履歴を確認

HTTP Timeout:

  • Webhook URL応答が10秒を超えている
  • フロー処理を最適化

よくある質問

Q1. Webhook URLを変更できますか?

A1. Webhook URLは変更できません。URLを変更したい場合は、Webhookを削除して新しく作成してください。

Q2. Secretを忘れてしまいました

A2. Secretは作成時に一度だけ表示されます。忘れた場合は、Webhookを削除して新しく作成してください。

Q3. 複数のWebhookを登録できますか?

A3. はい、複数のWebhookを登録できます。同じURLに複数のWebhookを登録することも可能です。

Q4. 特定のマスタータイプのみ通知できますか?

A4. はい、Webhook作成時に「マスタータイプ」フィールドに入力することで、特定のマスターのみ通知できます。

Q5. 配信ログはいつまで保存されますか?

A5. 配信ログは無期限で保存されます。削除する場合は、Webhookごと削除してください。


関連リンク