kintone業務設計研究所 > kintone Webhookの設計方法|通知・外部連携・再実行で詰まらない構成
2026年6月12日
•約18分で読めます
kintone Webhookを使って外部サービスへ通知するときに、発火条件、送信内容、受信エンドポイント、認証、キュー、冪等性、失敗通知、再実行、Power AutomateやDataCollectとの使い分けを整理します。
kintoneのWebhookで、レコード追加やステータス変更を外部サービスに通知したいです。Webhookを設定すれば十分でしょうか。
通知だけなら設定で始められます。ただし、業務連携にするなら、どの操作で発火するか、受信側で何を検証するか、二重処理をどう防ぐか、失敗時にどう再実行するかまで決めます。
kintone Webhookは、外部連携の入口として便利です。
レコードが追加されたらチャットへ通知する。
案件が承認済みになったら外部の受注管理へ渡す。
問い合わせが登録されたら担当チームへ知らせる。
ステータスが変更されたら集計サービスを動かす。
コメントが追加されたら外部のチケットに反映する。
こうした処理は、Webhookを使うと作りやすくなります。
ただし、Webhookを「外部サービスに通知する設定」とだけ捉えると、運用で詰まります。
よくある失敗は、次のような状態です。
Webhookは、処理の完了を保証する仕組みではありません。
kintoneで起きた操作を外部へ知らせる仕組みです。
外部側で受け取った後に、重複判定、キュー投入、ログ保存、リトライ、手動再実行をどう作るかで、業務連携として使えるかが決まります。
kintone Webhookは「外部処理を直接完了させる仕組み」ではなく、「外部処理を始めるための通知」です。受信側の設計がないと、重要データ連携には使いにくくなります。
この記事では、kintone Webhookを、設定手順ではなく、発火条件、送信内容、受信エンドポイント、認証、キュー、冪等性、失敗通知、再実行、Power Automate・Zapier・DataCollect・個別API連携の使い分けまで含めて整理します。
kintone API連携の設計方法はこちら
kintone外部連携の設計方法はこちら
kintone通知カスタマイズの設計方法はこちら
Webhookは、kintone側で特定の操作が行われたことを、外部サービスへ知らせるための仕組みです。
kintoneヘルプでは、Webhookを利用すると、アプリで特定操作が行われた際に、その内容を指定した外部サービスへ送信できると説明されています。
Webhookの役割は、外部処理の起動です。
REST APIとは役割が違います。
| 方式 | 主な役割 | 典型的な使い方 |
|---|---|---|
| Webhook | kintoneの変化を外部へ知らせる | レコード追加、編集、削除、コメント、ステータス更新を通知する |
| REST API | kintoneのデータを外部から取得・登録・更新する | 外部SaaSからkintoneへ登録する、kintoneのレコードを更新する |
| JavaScript API | kintone画面上で操作や表示を変える | 保存前チェック、画面表示、入力補助 |
| iPaaS/Power Automate | 複数サービスをつなぐ | Webhookやコネクタを受けて、メール、チャット、外部SaaSへつなぐ |
Webhookは「kintoneから外へ知らせる」向きです。
外部サービスからkintoneへ登録したい場合は、REST APIや連携サービスを使います。
また、Webhookで外部へ通知した後、その外部処理がkintoneを更新する場合は、別途REST APIの認証、権限、API制限も考えます。
たとえば、次のような構成です。
| 目的 | Webhookの役割 | 受信側の役割 |
|---|---|---|
| チャット通知 | レコード追加を通知する | 文面を作ってチャットへ投稿する |
| 請求連携 | 承認済みになったことを通知する | キューへ入れ、会計システムへ送る |
| 集計更新 | 対象レコードの変更を通知する | 集計対象を再計算する |
| 外部チケット更新 | コメント追加を通知する | 外部チケットに追記する |
| 監査ログ | 削除や状態変更を通知する | 操作内容を外部ログへ保存する |
Webhookで作るべきなのは、外部サービスへ直接書き込む一本線ではなく、通知を受けて安全に処理する入口です。
Webhookを設計するときは、まず何で発火するかを確認します。
kintoneヘルプでは、Webhook設定時に通知が送信される操作として、レコード追加、編集、削除、コメントの書き込み、プロセス管理のステータス更新が整理されています。
| 操作 | 発火するか | 設計上の注意点 |
|---|---|---|
| レコードの追加 | 発火する | 新規受付、外部通知、初回同期に使いやすい |
| レコードの編集 | 発火する | 軽微な修正まで飛ばさない条件設計が必要 |
| レコードの削除 | 発火する | 外部側の削除、取消、監査の扱いを決める |
| コメントの書き込み | 発火する | メンション、外部チケット連携で使う |
| ステータスの更新 | 発火する | 承認済み、送信待ち、完了などの節目に向く |
一方で、通知されない操作もあります。
公式ヘルプでは、Excel/CSVファイルを読み込んだレコード操作、複数レコードの一括削除、複数レコードを一括操作するREST APIでのレコード操作ではWebhook通知が送信されないと説明されています。
この制約は実務上かなり重要です。
| 操作 | Webhook通知 | 代替設計 |
|---|---|---|
| 画面から1件追加 | 送信される | Webhookで受付 |
| 画面から1件編集 | 送信される | 条件を絞って受付 |
| CSVで一括更新 | 送信されない | 取込後に対象一覧から別処理を実行 |
| 複数レコード一括削除 | 送信されない | 削除前に対象をログ化する |
| 複数レコード一括REST API操作 | 送信されない | API処理側で連携ログを残す |
ここを誤ると、「画面で編集したときは通知されるが、CSV更新したデータは外部へ流れない」という状態になります。
Webhookで扱う業務では、操作経路を決めておきます。
画面操作だけを対象にするのか。
CSV更新も対象にするのか。
API一括更新後にも外部へ通知が必要なのか。
必要なら、Webhookとは別に、バッチや手動実行ボタンを用意します。
Webhookの発火条件は、業務の操作経路とセットで確認します。CSV更新や一括API更新を使う業務では、Webhookだけに頼らない設計が必要です。
送信内容も確認します。
kintoneヘルプでは、Webhookを有効にするとJSON形式の通知が送信され、通知ごとの固有ID、操作種別、アプリ情報、レコード情報、レコードURLなどが含まれると説明されています。
kintoneヘルプ:Kintoneの操作で送信されるWebhookの通知内容
送信内容を見るときは、次を設計します。
| 項目 | 使い方 |
|---|---|
| 通知ID | 受信側で二重処理を防ぐ |
| 操作種別 | 追加、更新、削除、コメント、ステータス更新を分ける |
| アプリID | どのアプリから来た通知か判定する |
| レコードID | kintone側の対象を特定する |
| レコードURL | 業務担当者が確認できるリンクに使う |
| レコード内容 | 外部へ送る項目を選ぶ |
| 更新者/削除者 | 監査や確認依頼に使う |
通知データをそのまま外部へ流すのではなく、外部に出してよい項目を選びます。
個人情報、金額、社内メモ、添付ファイル、コメント本文は、通知先によっては出しすぎになります。
Webhook、API連携、JavaScriptカスタマイズは混同しやすいです。
それぞれの役割を分けます。
| やりたいこと | 向いている手段 | 理由 |
|---|---|---|
| レコード追加を外部へ知らせたい | Webhook | kintoneの操作を起点にできる |
| 外部SaaSからkintoneへ登録したい | REST API | 外部側からkintoneを操作する |
| 画面保存前に入力チェックしたい | JavaScript API | 保存前イベントで止められる |
| ステータス更新後に会計へ送信したい | Webhook + キュー + REST API | 通知後に外部処理を安定して流せる |
| 一括更新後に外部へ反映したい | バッチまたはAPI処理側のログ | Webhookが発火しない操作がある |
| 外部チャットへ軽い通知を出したい | WebhookまたはPower Automate | 通知文面だけなら連携サービスで足りる |
Webhookは、kintone側の操作を起点にできるのが強みです。
しかし、保存前に入力を止めることはできません。
また、外部システムからkintoneへ値を取りに行く仕組みでもありません。
保存前の確認はJavaScript、外部からの取得や更新はREST API、kintoneの操作通知はWebhookと分けます。
Webhookで重要なのは、kintone側の設定よりも受信側です。
受信側では、最低限次を決めます。
| 設計項目 | 内容 |
|---|---|
| 受信URL | 本番、検証、開発を分ける |
| 認証 | 署名、共有シークレット、IP制限、認可済みURLなどを検討する |
| メソッド | 受け取るHTTPメソッド、Content-Type |
| 入力検証 | 想定アプリID、操作種別、必須項目を確認する |
| 応答 | すぐ成功応答するか、処理完了後に応答するか |
| ログ | 受信時点、キュー投入、処理完了を分けて残す |
| 障害時 | 外部サービスが落ちたときに通知を失わない構成にする |
通知先URLを単に公開するだけでは危険です。
URLを知っている人が任意のJSONを送れる状態になると、外部連携が誤動作します。
少なくとも、受信側で次を検証します。
| 検証 | 目的 |
|---|---|
| アプリID | 対象外アプリからの通知を弾く |
| 操作種別 | 対応していない操作を処理しない |
| 通知ID | 同じ通知を二重処理しない |
| レコードID | 対象レコードを特定する |
| 状態フィールド | 承認済み、送信待ちなど条件を満たすか確認する |
| 必須項目 | 外部へ送る値が揃っているか確認する |
受信した瞬間に外部SaaSを更新する構成は、軽い通知なら成立します。
ただし、重要データ連携では、受信してすぐキューや処理ログへ保存し、その後に別処理で外部更新する方が安定します。
Webhookは、同じ業務データに対して何度も発火する可能性があります。
レコードを保存した。
担当者を直した。
金額を直した。
コメントを追加した。
ステータスを戻した。
こうした操作が続くと、外部側では同じレコードに対する通知が複数届きます。
そこで、受信側にキューと冪等性を持たせます。
冪等性とは、同じ処理を複数回受けても、結果が壊れないようにする考え方です。
Webhook連携では、次のキーを使って二重処理を防ぎます。
| キー | 使い方 |
|---|---|
| 通知ID | 同じ通知を二度処理しない |
| アプリID + レコードID | 同じレコードの最新処理をまとめる |
| レコードID + ステータス | 承認済みになったときだけ処理する |
| 外部ID | 外部SaaS側で既存データを更新する |
| 処理ID | 1回の連携処理を追跡する |
キューを使うと、Webhook受信と外部更新を分離できます。
| 段階 | やること |
|---|---|
| 受信 | JSONを受け取り、検証し、ログに残す |
| キュー投入 | 処理対象として保存する |
| ワーカー処理 | 外部SaaS、チャット、集計サービスへ送る |
| 結果保存 | 成功、保留、失敗、再実行可否を残す |
| 通知 | 失敗や確認待ちだけ管理者へ知らせる |
この構成にすると、外部SaaSが一時的に落ちても、受信済みの通知を後から処理できます。
また、外部更新に時間がかかっても、kintone側の操作を待たせにくくなります。
Webhook連携では、失敗を前提にします。
kintoneヘルプでは、Webhook設定ごとに直近10件までの実行ログを確認でき、通知の成功可否、通知ID、操作種別、操作実行者、実行日時を確認できると説明されています。
同じページでは、1分間に60回を超える通知、通知データの最大サイズ超過、kintoneや受信側Webサービスのタイムアウトなどが失敗原因として整理されています。
公式ログは重要ですが、業務連携ではそれだけでは足りません。
Webhookの実行ログは「通知が送れたか」を見るものです。
受信後に外部SaaSへ登録できたか、外部IDが返ったか、途中で保留になったか、手動で再実行したかは、自分たちの連携ログで持つ必要があります。
| ログ | 見ること |
|---|---|
| kintone Webhook実行ログ | 通知が送信できたか |
| 受信ログ | 受信URLで通知を受け取ったか |
| キューログ | 処理待ちに入ったか |
| 外部処理ログ | 外部SaaS、チャット、集計への処理結果 |
| 再実行ログ | 誰がいつ、どの失敗を再実行したか |
失敗通知は、すべての成功を知らせるのではなく、失敗と保留に絞ります。
| 状態 | 通知先 | 対応 |
|---|---|---|
| 成功 | 通知しない、またはログのみ | 通常確認 |
| 保留 | 業務担当者 | 入力不備、確認待ちを直す |
| 認証エラー | 管理者 | トークン、接続設定を確認する |
| 外部障害 | 管理者、保守担当 | 復旧後に再実行する |
| 二重処理疑い | 保守担当 | ログを見て外部IDを確認する |
| 送信対象外 | 業務責任者 | 条件やステータスを見直す |
再実行は、全件ではなく失敗分だけにします。
全件を再実行すると、成功済みの外部登録まで重複する可能性があります。
そのため、処理ログには次を持たせます。
| 項目 | 理由 |
|---|---|
| 再実行可否 | 同じ処理をもう一度流してよいか判断する |
| 外部ID | 既存データを更新するか、新規作成するか決める |
| 最終エラー | 入力不備か外部障害かを分ける |
| 試行回数 | 無限リトライを避ける |
| 最終実行者 | 手動再実行の責任を残す |
Webhookの失敗対応は、通知の失敗だけでなく、受信後の外部処理まで含めて設計します。再実行は失敗分だけを対象にします。
Webhookの受け先は、個別開発だけではありません。
Power Automate、Zapier、DataCollect、iPaaS、チャット連携なども選択肢です。
| 手段 | 向いている用途 | 注意点 |
|---|---|---|
| Power Automate | Microsoft 365、Outlook、Teams周辺の連携 | 有償プラン、OAuth許可、ゲストスペース制約を確認する |
| Zapier | 小さな通知、Gmail、SaaS同士の簡易連携 | 料金、実行履歴、失敗時の再実行を確認する |
| DataCollect | kintoneアプリ間の集計・自動更新 | 更新条件、履歴、対象アプリの責任分界を決める |
| iPaaS | 複数SaaSをまたぐ定型連携 | フロー監視、権限、料金、保守担当を決める |
| 個別開発 | 重要データ、複雑な条件、監査が必要な連携 | キュー、ログ、再実行、テストが必要 |
kintoneヘルプでは、Microsoft Power Automateを使って、kintoneと他のWebサービスの間でデータをやり取りできること、kintone側のトリガーとしてレコード追加、更新、削除、コメント投稿、プロセス管理のステータス更新を選べることが説明されています。
kintoneヘルプ:Microsoft Power AutomateとKintoneを連携する
DataCollectでは、kintoneアプリへのレコード追加、編集、削除、ステータス更新をきっかけに集計やレコード追加を行うWebhook系の機能が用意されています。
使い分けは、次のように考えます。
| 要件 | 推奨 |
|---|---|
| チャットへ軽い通知を出す | Power Automate、Zapier、チャット連携 |
| kintoneアプリ間で集計更新したい | DataCollect |
| 外部SaaSへ顧客や請求を送る | iPaaSまたは個別開発 |
| 失敗分だけ再実行したい | 個別開発、または再実行管理できるiPaaS |
| 監査ログと外部IDを残したい | 個別開発または連携ログアプリ併用 |
| 条件が頻繁に変わる | kintone側の状態設計と設定運用を分ける |
軽い通知なら連携サービスで十分です。
一方、会計、請求、在庫、顧客マスタのような重要データを扱う場合は、ログ、外部ID、再実行、停止手順まで持てる構成を選びます。
kintone Webhookでよくある失敗を整理します。
| 失敗 | 原因 | 対策 |
|---|---|---|
| 通知が多すぎる | レコード編集を全部対象にした | ステータスや送信フラグで条件を絞る |
| CSV更新分が外部へ流れない | Webhookが発火しない操作を使った | CSV取込後のバッチや手動実行を用意する |
| 二重登録される | 通知IDや外部IDを見ていない | 冪等性キーを持つ |
| 外部障害で通知が消える | 受信後すぐ外部更新している | キューと処理ログを挟む |
| 誰も失敗に気づかない | 実行ログを見に行く運用だけ | 失敗通知と失敗一覧を作る |
| URLが漏れると危険 | 認証や検証がない | 署名、シークレット、アプリID検証を入れる |
| 個人情報を出しすぎる | 通知内容をそのまま転送した | 外部に出す項目を絞る |
| 保守できない | Zapやフローの所有者が個人 | 管理者、棚卸し、停止手順を決める |
特に危ないのは、Webhookの受信先で直接すべての処理を完了させようとする構成です。
軽いチャット通知ならそれでも成立します。
しかし、外部SaaSへの登録、請求連携、在庫反映、マスタ同期のような処理では、途中で失敗したときにどこまで進んだかを追える必要があります。
Webhookを受ける。
検証する。
キューへ入れる。
処理する。
ログを残す。
失敗分だけ再実行する。
この分離があるだけで、障害時の対応が大きく変わります。
kintone Webhookを設定する前に、次を確認します。
| チェック | 確認内容 |
|---|---|
| 目的 | 通知だけか、外部更新まで行うか |
| 発火条件 | 追加、編集、削除、コメント、ステータス更新のどれか |
| 操作経路 | CSV、一括削除、一括REST API操作を使うか |
| 送信条件 | すべての編集か、状態やフラグで絞るか |
| 送信内容 | 外部へ出してよい項目だけか |
| 受信URL | 本番・検証・開発を分けているか |
| 認証 | URLだけに依存していないか |
| 検証 | アプリID、操作種別、通知ID、必須項目を確認するか |
| キュー | 外部処理と受信を分けるか |
| 冪等性 | 二重通知でも結果が壊れないか |
| ログ | 受信、処理、外部ID、結果、エラーを残すか |
| 通知 | 失敗と保留だけ適切な人に届くか |
| 再実行 | 失敗分だけ処理できるか |
| 停止 | 連携を止める手順があるか |
| 保守 | フローやURLの所有者が決まっているか |
このチェックリストに答えられない状態でWebhookを増やすと、通知先だけが増え、運用が追えなくなります。
Webhookは便利ですが、重要な業務データを扱うほど、設定より受信後の設計が重くなります。
Bitlightでは、kintone Webhookを使った外部連携を、設定だけでなく運用まで含めて設計できます。
たとえば、次のような相談に対応できます。
Webhookは、外部連携を始めるには便利です。
ただし、業務で使い続けるには、通知先URLを設定するだけでは足りません。
発火条件、送信内容、受信側の検証、キュー、ログ、再実行、停止手順まで決める必要があります。
kintone Webhookは、通知を飛ばす設定ではなく、外部連携を止まっても追える形にするための入口として設計します。
千葉県出身。10歳の頃からプログラミングを始め、ゲーム、Webサイト、ロボット、スマホアプリなどを制作。大阪大学基礎工学部情報科学科で情報工学と統計学を学び、大学時代はAIを研究。大学在学中にWeb広告代理店でのインターンや人材系Webサービスの立ち上げを経験し、卒業後はフリーランスエンジニアとしてGISシステム、データ基盤構築、Webシステムの開発に従事。10年以上のWebアプリ開発・データ分析経験を基に、2023年9月に株式会社ビットライトを設立し、現場業務の仕組み化からデータ基盤構築、データ活用支援までを一気通貫で支援。