microCMS

コンテンツのWebhookを設定

コンテンツの変更時に他システムとの連携を行うため、microCMSではWebhook機能を用意しています。
設定は「API設定」→「Webhook」で行います。



この画面で「追加」ボタンを押して追加したいWebhookを選び、設定を行ってください。
現在設定できるWebhookは以下の7種類です。

  • Slack
  • Chatwork
  • Netlify
  • AWS Amplify
  • GitHub Actions
  • メール通知
  • カスタム通知

Webhookのタイミング

各Webhookの設定時にWebhookを発行するタイミングを設定できます。

コンテンツの公開時・更新時

コンテンツの新規公開や、公開済みのコンテンツ更新の際に通知を行います。

コンテンツ編集画面による操作

microCMSのコンテンツ編集画面での操作によって新規公開や公開済みコンテンツが更新された際に通知を行います。

APIによる操作

WRITE API(PUT / PATCH / PUT / DELETE)によって新規公開や公開済みコンテンツが更新された際に通知を行います。

レビューによる公開

レビュー申請機能によって新規公開や公開済みコンテンツが更新された際に通知を行います。

予約設定による操作

コンテンツの予約公開機能によって新規公開や公開済みコンテンツが更新された際に通知を行います。

コンテンツの並び替え

公開済みのコンテンツをmicroCMSのコンテンツ一覧画面で並び替えた際に通知を行います。

コンテンツIDの変更

公開済みのコンテンツのコンテンツIDを更新した際に通知を行います。

コンテンツの非公開時

コンテンツが「公開中」から「下書き中」に変更された際に通知します。

コンテンツ編集画面による操作

microCMSのコンテンツ編集画面での操作によって公開中のコンテンツが下書き中に変更された際に通知します。

予約設定による操作

コンテンツの予約非公開機能によって公開中のコンテンツが下書き中に変更された際に通知します。

コンテンツの下書き保存時

「公開中」かつ「下書き中」もしくは「下書き中」のみのコンテンツに変更があった際に通知します。

コンテンツ編集画面による操作

microCMSのコンテンツ編集画面での操作によって下書き中コンテンツが更新された際に通知を行います。

APIによる操作

下書き中のコンテンツに対するPATCH APIでのコンテンツ編集の際に通知を行います。

コンテンツの並び替え

下書き中コンテンツをmicroCMSのコンテンツ一覧画面で並び替えた際に通知を行います。

コンテンツIDの変更

下書き中コンテンツのコンテンツIDを更新した際に通知を行います。

公開中コンテンツの削除時

公開中のコンテンツが削除された際に通知します。

コンテンツ編集画面による操作

microCMSのコンテンツ編集画面での操作によってコンテンツが削除された際に通知を行います。

APIによる操作

DELETE APIによってコンテンツが削除された際に通知を行います。

下書きコンテンツの削除時

下書き中のコンテンツが削除された際に通知します。

コンテンツ編集画面による操作

microCMSのコンテンツ編集画面での操作によってコンテンツが削除された際に通知を行います。

APIによる操作

DELETE APIによってコンテンツが削除された際に通知を行います。

APIの設定変更時

APIの基本設定やスキーマなど、何らかの変更を行った際に通知します。

APIの削除時

APIが削除された際に通知します。

設定内容と動作内容

Slack

SlackへのWebhookには以下の情報が必須で必要です。
Slack側の操作については公式ドキュメント等をご参照ください。

  • Slackで発行するWebhook URL


実際に通知が行われる際は以下のような形で行われます。
URL部分にはデフォルトでは管理画面のURLが入りますが、設定で任意のURLに変更することも可能です。

Chatwork

ChatworkへのWebhookには以下の情報が必須で必要です。

  • ChatworkのAPIトークン:Chatworkドキュメント
  • 部屋ID:通常URLに含まれる rid000000000 のうちの数値部分です。


通知内容はSlackと同様となります。

Netlify

microCMSからのWebhookによってビルド処理を開始できます。
設定内容は下記の通りです。

AWS Amplify

microCMSからのWebhookによってビルド処理を開始できます。
設定内容は下記の通りです。

GitHub Actions

microCMSからのWebhookによってビルド処理を開始できます。
設定内容は下記の通りです。

メール通知

コンテンツやAPIの変更時などに指定したメールアドレスに変更内容を送信できます。
設定内容は下記の通りです。

  • メールアドレス


また、SlackやChatworkのWebhookと同様に、本文内にはURLが含まれますがこちらも任意のものに変更可能です。

カスタム通知

任意のURLに対してPOSTリクエストを送信します。
設定内容は下記の通りです。

  • POST先となるURL

カスタム通知について

カスタム通知では任意のURLに対してPOSTリクエストを送信します。
あらゆるURLを指定可能ですので、リクエストを受け取った側は独自の処理を自由に行ってください。

リクエスト内容

ヘッダ

リクエストヘッダには Content-Type: application/json が含まれます。

ボディ

リクエストボディには対象となったコンテンツやAPIの情報が含まれます。

{
  service: 'webhook-test',
  api: 'news',
  id: 'x2xkcwog9521',
  type: 'edit',
  contents: {
    old: {
      id: 'x2xkcwog9521',
      status: ['DRAFT'],
      draftKey: 'Vyf_XTclTY',
      publishValue: null,
      draftValue: {
        id: 'x2xkcwog9521',
        createdAt: '2021-06-02T05:56:24.513Z',
        updatedAt: '2021-06-02T06:05:09.601Z',
        publishedAt: '2021-06-02T06:05:09.601Z',
        revisedAt: '2021-06-02T06:05:09.601Z',
        title: 'タイトルです',
      },
    },
    new: {
      id: 'x2xkcwog9521',
      status: ['PUBLISH'],
      draftKey: null,
      publishValue: {
        id: 'x2xkcwog9521',
        createdAt: '2021-06-02T05:56:24.513Z',
        updatedAt: '2021-06-02T06:05:09.601Z',
        publishedAt: '2021-06-02T06:05:09.601Z',
        revisedAt: '2021-06-02T06:05:09.601Z',
        title: 'タイトルです',
      },
      draftValue: null,
    },
  },
}
  • service - 変更のあったコンテンツが属するサービスのサブドメインが入ります
  • api - API作成時・更新時に指定したエンドポイントが入ります
  • id - コンテンツのidが入ります。APIに関する操作の場合はnullが入ります。
  • type - 変更の種類です。新規追加時はnew、編集時はedit、削除時はdeleteが入ります
  • contents - コンテンツ内容が入ります。APIに関する操作の場合はnullが入ります。
  • contents.old - コンテンツの編集前もしくは削除前の内容が含まれます。コンテンツの新規作成時にはnullが入ります。
  • contents.old.id - コンテンツの編集前もしくは削除前のコンテンツのidが含まれます。
  • contents.old.status - コンテンツの公開状態を配列で示します。公開中はPUBLISH、下書き中はDRAFTが含まれます。
  • contents.old.draftKey - コンテンツが下書き状態が含まれる場合に、管理画面で取得できる下書きキー(draftKey)が入ります。公開状態のみの場合はnullが入ります。
  • contents.old.publishValue - 公開状態のコンテンツをGET APIで取得した際のjsonデータが含まれます。
  • contents.old.draftValue - 下書き状態のコンテンツをGET APIで取得した際のjsonデータが含まれます。
  • contents.new - コンテンツの作成後もしくは編集後の内容が含まれます。コンテンツの削除時にはnullが入ります。
  • contents.new.id - コンテンツの作成後もしくは編集後のコンテンツのidが含まれます。
  • contents.new.status - コンテンツの公開状態を配列で示します。公開中はPUBLISH、下書き中はDRAFTが含まれます。
  • contents.new.draftKey - コンテンツが下書き状態が含まれる場合に、管理画面で取得できる下書きキー(draftKey)が入ります。公開状態のみの場合はnullが入ります。
  • contents.new.publishValue - 公開状態のコンテンツをGET APIで取得した際のjsonデータが含まれます。
  • contents.new.draftValue - 下書き状態のコンテンツをGET APIで取得した際のjsonデータが含まれます。


有効/無効設定

一時的にWebhookの設定を有効/無効にしたい場合は、Webhook一覧のスイッチを切り替えることで可能です。無効にした場合はWebhookが発行されなくなります。



セキュリティについて

microCMSからの通知を受け取るサーバは一般公開をしておく必要があります。
そのため一般的には第三者からPOSTリクエストを受ける可能性も考慮した対応を行う必要があります。

具体的にはURLの設定時に?auth=XXX などmicroCMSと受け取り側サーバにしか知り得ない値を設定しておき、
受け取り側のサーバでこの値が正しいかどうか(≒microCMSからのリクエストであるか否か)検証を行ってください。

Information

microCMS側でWebhookリクエストのヘッダに署名値(Signiture)を付与する対応について検討を進めています。
恐れ入りますが、この機能が実装されるまでは上記のパラメータ対応にて第三者からのリクエストを防ぐような形にてご対応をお願いいたします。