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部門、総務部門)にタイムリーに共有したい
解決策:
- Webhook → Zapier → Slack連携を設定
- 社員マスター(employee)の作成・更新イベントを監視
- 変更があれば自動的にSlackチャンネルに通知
効果:
- 新入社員登録時にIT部門が即座にアカウント準備を開始できる
- 部署異動時に関係者全員が同時に把握できる
- 手動での連絡漏れがなくなる
事例2: 取引先マスターとSalesforce連携
課題: 取引先マスターの変更をSalesforceにも反映させたい
解決策:
- Webhook → Zapier → Salesforce連携を設定
- 取引先マスター(customer)の更新イベントを監視
- Salesforceの取引先オブジェクトを自動更新
効果:
- 二重入力の手間を削減
- マスターデータとCRMの整合性を自動維持
- 営業担当者が常に最新情報を参照できる
事例3: 承認完了時のTeams通知
課題: マスターデータの承認が完了したら、申請者と関係者に通知したい
解決策:
- Webhook → Power Automate → Teams連携を設定
- マスター更新イベント(承認完了ステータス)を監視
- Microsoft Teamsのチャネルまたは個人チャットに通知
効果:
- 承認完了をリアルタイムで把握
- 次のアクションを迅速に開始できる
- メールを確認する手間を削減
事例4: マスター変更ログのGoogle Sheets蓄積
課題: マスターデータの変更履歴を別システムでも管理したい
解決策:
- Webhook → Zapier → Google Sheets連携を設定
- すべてのマスターイベント(作成・更新・削除)を監視
- Google Sheetsに1行ずつ追記
マッピング例:
| 列 | データ |
|---|---|
| A | タイムスタンプ |
| B | イベントタイプ |
| C | マスタータイプ |
| D | データID |
| E | 変更内容(JSON) |
効果:
- 変更履歴を外部でもバックアップ
- 監査対応や分析に活用可能
- スプレッドシートで共有しやすい
事例5: 商品マスター更新時のECサイト連携
課題: 商品マスターを更新したら、ECサイトの商品情報も自動更新したい
解決策:
- Webhook → カスタムシステム連携を設定
- 商品マスター(product)の更新イベントを監視
- ECサイトのAPIを呼び出して商品情報を更新
技術的なポイント:
- 署名検証を実装してセキュリティを確保
- リトライに対応した冪等性のある処理を実装
- エラー時のアラート通知も設定
効果:
- マスターデータを「Single Source of Truth」として運用
- 手動同期の手間とミスを削減
- 複数チャネルの情報整合性を維持
事例6: 在庫マスター変更時のアラート
課題: 在庫数が閾値を下回ったときに、自動でアラートを発報したい
解決策:
- Webhook → Zapier → Filter → Email/Slack連携を設定
- 在庫マスター(inventory)の更新イベントを監視
- Zapierのフィルター機能で「在庫数 < 閾値」の場合のみ通知
効果:
- 在庫切れを未然に防止
- 発注のタイミングを自動化
- 担当者の監視負担を軽減
Webhook管理画面の使い方
1. Webhook管理画面にアクセス
- サイドバー → 「Webhook管理」 をクリック
- 登録済みWebhook一覧が表示されます
2. 新しいWebhookを作成
- 「Webhook作成」 ボタンをクリック
- フォームに以下を入力:
- Webhook URL: 通知先のURL
- イベント: 通知したいイベントを選択
- ✓ マスター作成時
- ✓ マスター更新時
- ✓ マスター削除時
- マスタータイプ: (オプション)特定のマスターのみ通知する場合に入力
- 「作成」 をクリック
- Secretダイアログ が表示されます
- このSecretは署名検証に使用します
- 「コピー」 をクリックして保存してください
- ⚠️ この画面を閉じると二度と表示されません
3. テスト送信
- Webhook一覧で対象Webhookの 「︙」 メニューをクリック
- 「テスト送信」 を選択
- テストデータが送信されます
- 通知先(Webhook.site、Zapierなど)で受信を確認
4. 配信ログを確認
- Webhook一覧で 「配信ログを見る」 をクリック
- 配信履歴が表示されます:
- 配信時刻
- イベントタイプ
- ステータス(成功/失敗/リトライ待機中)
- HTTPステータスコード
- リトライ回数
- 「詳細」 ボタンで以下を確認:
- 送信ペイロード
- レスポンスボディ
- エラーメッセージ
5. Webhookの管理
有効/無効の切り替え:
- 「︙」メニュー → 「無効にする」 / 「有効にする」
Webhookの削除:
- 「︙」メニュー → 「削除」
- 確認ダイアログで 「削除」 をクリック
Zapier連携の手順
ステップ1: Zapierで準備
- Zapier にログイン
- 「Create Zap」 をクリック
- トリガー: 「Webhooks by Zapier」 を選択
- イベント: 「Catch Hook」 を選択
- Webhook URLが生成されます(例:
https://hooks.zapier.com/hooks/catch/12345/abcde/) - このURLをコピー
ステップ2: SURP MDMでWebhook登録
- Webhook管理画面で 「Webhook作成」
- Webhook URL: ZapierのURLを貼り付け
- イベント: 必要なイベントを選択
- 「作成」 をクリック
ステップ3: テスト送信
- Webhook一覧で 「テスト送信」
- Zapierの画面に戻り 「Test trigger」 をクリック
- データが受信されたことを確認
ステップ4: アクションを設定
- Zapierで 「Action」 ステップを追加
- アプリを選択(例: Slack、Google Sheets、Gmail)
- データをマッピング
- 「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で準備
- Power Automate にログイン
- 「作成」 → 「自動化したクラウドフロー」
- フロートリガー: 「HTTP要求の受信時」 を選択
- 「作成」 をクリック
ステップ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: 認証設定(重要)
- トリガーカードの右上 「︙」 → 「設定」
- 「このフローを実行できるユーザー」 を 「誰でも」 に変更
- フローを保存
- HTTP POST URLをコピー
- ⚠️ URLに
?api-version=1&sp=...&sv=...&sig=...が含まれることを確認 - このSASトークン(
sig=...)が認証に必要です!
- ⚠️ URLに
ステップ4: SURP MDMでWebhook登録
- Webhook管理画面で 「Webhook作成」
- Webhook URL: Power AutomateのURL(SASトークン付き)を貼り付け
- イベント: 必要なイベントを選択
- 「作成」 をクリック
ステップ5: アクションを追加
- 「新しいステップ」 をクリック
- アプリを選択(例: Teams、SharePoint、Excel Online)
- データをマッピング:
data('id')data('master_type')
- フローを保存
ステップ6: テスト実行
- Power Automateで 「テスト」 をクリック
- SURP MDM → Webhook管理 → 「テスト送信」
- Power Automateでフロー実行成功を確認(緑のチェックマーク)
- 配信ログで成功を確認
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から送信されたことを検証できます。
検証方法
- Webhook作成時に表示されたSecretを使用
X-Webhook-Signatureヘッダーを取得- ペイロード全体(JSON文字列)とSecretでHMAC-SHA256署名を計算
- 計算した署名と受信した署名を比較
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トークン認証を要求している
解決方法:
-
配信ログを確認:
- Webhook管理 → 配信ログ → 詳細
response_status: 401を確認
-
Power Automate側の設定:
- フロー編集画面を開く
- トリガーカードの右上「︙」→「設定」
- 「このフローを実行できるユーザー」を 「誰でも」 に変更
- フローを保存
- 新しいURL(SASトークン付き)を確認
-
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が届かない
確認手順:
-
Webhook管理画面で確認:
- 配信ログ → ステータスを確認
- エラーメッセージを確認
-
Webhook URLを確認:
- URLが正しいか確認
- Zapier/Power Automateでフローが有効か確認
-
イベントフィルターを確認:
- 必要なイベントが選択されているか確認
- マスタータイプフィルターが適切か確認
配信に失敗する(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ごと削除してください。