機能ごとの解説
Webhook
レコードが追加・編集・削除されたときに、決めておいた URL へその内容を自動で送る仕組みです。チャットに通知する、別の業務システムにデータを送る、といった連携に使います。 受け取る側のプログラムを用意する必要があるので、主にシステムの担当者向けの機能です。
Webhook とは
アプリの設定の「Webhook」タブで作ります。作れるのはアプリの管理の権限を持つ人(会社のオーナー・管理者を含む)です。
- きっかけ
- レコードの追加・編集・削除(どれで送るかを選べます)
- 送り先
- https:// で始まる URL(ポート番号の指定はできません)。社内ネットワークのアドレスには送れません
- 送り方
- JSON を POST。保存とは別に、裏で送ります(保存は待たされません)
作る
「Webhook」タブの「新規作成」を押します。
- 1名前と送信先 URL を入れる名前は一覧で見分けるためのもの(例: Slack 通知)です。
- 2送るイベントを選ぶ「レコードの追加」「レコードの編集」「レコードの削除」から 1 つ以上選びます。状態は「有効」のまま「作成」を押します。
- 3表示されたシークレットを控える作成すると、署名の確認に使うシークレットが一度だけ表示されます(再表示できません)。「コピー」して受け取る側に設定してください。
一時的に止めたいとき
Webhook を開いて状態を「停止中」にして「保存」します。止めている間の 操作は送られません(あとから送り直されることもありません)。
シークレットが漏れたとき
「シークレット再生成」で新しい値にします。受け取る側の設定も新しい値に 差し替えてください。
送られる内容
レコード 1 件の値と、どのアプリで誰が何をしたかが 1 回の送信にまとまっています。
{
"id": "送信ID",
"type": "RECORD_UPDATED",
"occurredAt": "2026-09-02T16:00:00+09:00",
"company": { "slug": "sample", "name": "サンプル商事" },
"app": { "appNumber": 1, "code": "clients", "name": "顧客台帳" },
"record": {
"recordNumber": 5,
"payload": { "company_name": "伊藤商事", "amount": "6200000" },
"display": { "company_name": "伊藤商事", "amount": "6,200,000円" }
},
"actor": { "displayName": "山田 花子" }
}payload と display
payloadは機械が読む形の値(数値は "6200000" のような文字列、電話は +81 から 始まる形、利用者は ID)、displayは画面に出る表記(「6,200,000円」「03-1234-5678」、利用者の名前)です。 計算・ルックアップ(同期)・作成者なども、画面と同じ値が入ります。
送られる項目に気をつけてください
フィールドの権限にかかわらず、すべての項目の値が送られます。一部の人にだけ見せている項目も含まれるので、送信先は信頼できる システムにしてください。
編集と削除のとき
編集では保存した後の値を送ります(変更前の値は含みません)。何も 変えずに保存したときは送りません。削除では、削除する直前の値を送ります。
画面以外からの変更も送られます
公開フォームからの登録・更新や、AI(MCP)からの更新でも、同じように 送られます。
署名を確かめる
本当に mokomo から届いたものかは、ヘッダの署名で確かめられます。
- x-mokomo-signature
- sha256=(本文を、シークレットを鍵に HMAC-SHA256 した値の 16 進)
- x-mokomo-event
- イベント名(RECORD_CREATED / RECORD_UPDATED / RECORD_DELETED)
- x-mokomo-delivery
- 送信 ID(本文の id と同じ。送信ログにも出ます)
// Node.js の例: 受け取った本文をそのまま使って署名を計算し、ヘッダと比べる
const crypto = require("crypto");
const expected =
"sha256=" + crypto.createHmac("sha256", SECRET).update(rawBody).digest("hex");
const ok = crypto.timingSafeEqual(
Buffer.from(expected),
Buffer.from(req.headers["x-mokomo-signature"]),
);本文は受け取ったままの文字列を使ってください(JSON を読み直して並べ替えると 署名が合いません)。
送信ログ
Webhook の一覧に「直近24h: 成功 N / 失敗 N」が出ます。Webhook を開くと、下に最新 50 件の送信ログが並びます。
ログに出るもの
成功・失敗・中止などの状態、イベント、日時、相手の HTTP ステータス、 かかった時間、エラーの種類、相手の応答の先頭です。
成功とみなす条件
相手が 10 秒以内に 2xx を返したときです。3xx(リダイレクト)は追いかけず、 失敗になります。
できないこと
- 失敗しても、自動で送り直しません。 送信ログから送り直すボタンもありません。取りこぼしが困る連携では、受け取る側で 定期的に mokomo の値と突き合わせてください。
- 失敗が続いても、Webhook は自動では止まりません。
- 送る条件は「追加・編集・削除」の 3 つだけです。項目の値で絞ったり、 ヘッダを足したりはできません。
- 社内ネットワーク(プライベート IP・localhost)には送れません。