microCMS
Documentation
  • Pricing
  • Blog
  • FAQ
  • Contact
  • Sign In
  • Get started for free
Navigation
Tutorial
Next.js
  • Integration with Next.js
  • Getting Started with App Router
  • Tutorial (App Router)
  • Getting Started with Pages Router
  • Tutorial (Pages Router)
Astro
  • Getting Started
  • Integration with Astro
  • Tutorial
Nuxt
  • Integration with Nuxt
  • Getting Started
  • Tutorial
Gatsby
  • Integration with Gatsby
  • Getting Started
  • Tutorial
JavaScript
  • Integration with JavaScript
  • Getting Started (Browser)
  • Getting Started (Server)
PHP
  • Integration with PHP
  • Getting Started
Ruby
  • Integration with Ruby
  • Getting Started
Go
  • Integration with Go
  • Getting Started with microCMS
Manual
  • Introduction
Account & Login
  • Account Registration
  • Login
  • Email Address Authentication
Services
  • Creating a Service
  • Service Configuration
  • Template
  • Service Deletion
Payment
  • Change of Pricing Plan
  • Registering and Changing Payment Methods
API
  • Creating and Managing APIs
  • API Settings
  • Export/Import of API Schema
Fields
  • Text Field
  • Text Area
  • Image
  • Multiple Images
  • Date
  • Boolean
  • Selectable Field
  • Content Reference
  • Multiple Content References
  • Number
  • File
  • Extended Field
  • Repetition
  • Custom
Contents
  • CSV Export of Content
  • Content Creation
  • Content Editing
  • Content Management
  • View
  • Content Status
  • Custom Status
  • Setting the Content ID
  • Automatically Assigned Values for Content
  • CSV Import of Content
  • API Preview
  • Examples of Using Query Parameters with API Preview
  • Integration Methods by Rendering Type
  • Screen Preview
  • Setting Up Webhooks for Content
Rich Editor
  • How to Use the Rich Editor
  • Rich Editor WRITE API
  • How to Use the Old Rich Editor
Reviews
  • Review
  • AI Review
Media
  • Media Management
  • Changing Media Filters and Display Order
  • Media Tag Configuration
  • Setting Up Media Webhooks
  • Custom Domain Settings for Media
Permission Management
  • Member Management
  • Roles (Permission Management in the Admin Panel)
Environments
  • Multiple Environments (Development Environment)
  • Merging API Settings Between Environments
Connection
  • Amazon S3 Integration
Logs
  • Audit Log
  • Data Transfer Volume
Security
  • Content Update History
  • IP Restrictions for Management Dashboard
  • IP Restrictions for APIs
Authentication
  • Setting Up Two-Factor Authentication
  • Mandatory Two-Factor Authentication
  • Single Sign-On
Specifications & Limitations
  • Recommended Environment
  • Limitations / Precautions
Content API
  • What is the Content API?
Basic Operations
  • GET /api/v1/{endpoint}
  • GET /api/v1/{endpoint}/{content_id}
  • POST /api/v1/{endpoint}
  • PUT /api/v1/{endpoint}/{content_id}
  • PATCH /api/v1/{endpoint}/{content_id}
  • DELETE /api/v1/{endpoint}/{content_id}
API Keys
  • API Key (API Authentication and Authorization Management)
  • Migration from the Old API (X-API-KEY, etc.)
Responses & Error Handling
  • Response format for each field in the GET API
  • Specifying Query Parameters in the GET API
  • Error Responses of the Content API
Management API (Beta)
  • What is the Management API?
Content Operations
  • PUT /api/v1/contents/{endpoint}/{content_id}/reservation
  • GET /api/v1/contents/{endpoint}
  • GET /api/v1/contents/{endpoint}/{content_id}
  • PATCH /api/v1/contents/{endpoint}/{content_id}/status
  • PATCH /api/v1/contents/{endpoint}/{content_id}/createdBy
Media Operations
  • GET /api/v2/media
  • GET /api/v1/media
  • POST /api/v1/media
  • DELETE /api/v2/media
Member Operations
  • GET /api/v1/members
  • GET /api/v1/members/{member_id}
API Operations
  • POST /api/v1/apis
  • GET /api/v1/apis
  • GET /api/v1/apis/{endpoint}
Service Operations
  • GET /api/v1/service
Responses & Error Handling
  • Management API Error Responses
Image API
  • What is the Image API?
Parameters
  • Image Size
  • Quality
  • Resolution and Screen Size
  • Format
  • Text
  • Border
  • Padding
  • Shape
  • Download
  • Watermark
MCP Server
  • microCMS MCP
  • microCMS Document MCP Server
  • Top
  • Manual

Setting Up Webhooks for Content

Last updated: 2026/09/02

We provide a Webhook feature to integrate with external systems when content changes occur.
Settings can be configured in each API under "API Settings" → "Webhook".



Please select the type of Webhook from the add button and configure it.
The following 9 types of Webhooks can be configured:

  • Slack
  • Chatwork
  • Netlify
  • Cloudflare Pages
  • Vercel
  • AWS Amplify
  • GitHub Actions
  • Email Notification
  • Custom Notification

Webhook Timing

You can set the timing for issuing Webhooks when configuring each Webhook.


1. When Content is Published or Updated

Notifications will be sent when content becomes "Published" or when changes occur to content that is "Published" or "Published and Draft".

Content Publication (via Administration Console)

Notifications will be sent when new content is published or existing published content is updated through the Administration Console. (Excluding operations via review or scheduling)

Content Publication (via API)

Notifications will be sent in the following cases:

  1. When "Published" content is created via POST API / PUT API
  2. When "Published" content is updated via PATCH API

Content Publication (via Review)

Notifications will be sent when new content is published or existing published content is updated through the review request feature.

Content Publication (via Scheduled Settings)

Notifications will be sent when new content is published or existing published content is updated through the scheduled publication feature.

Content Reordering

Notifications will be sent when published content is reordered in the contents list screen.

Content ID Change

Notifications will be sent when the content ID of published content is updated.

Publication Date Change

Notifications will be sent when the publication date of published content is updated.

Custom Status Change

Notifications will be sent when the custom status of published content is updated.

2. When Content Publication Ends

Notifications will be sent when content changes from "Published" or "Published and Draft" to "Publication Ended" or "Draft", or when changes occur to content that is "Publication Ended".

Content Publication End (via Administration Console)

Notifications will be sent in the following cases:

  1. When "Published" content is set to "Publication Ended" via the Administration Console (excluding operations via scheduling)
  2. When "Published" content is changed to "Draft" via the Administration Console

Content Publication End (via Scheduled Settings)

Notifications will be sent when "Published" or "Published and Draft" content is changed to "Publication Ended" through the scheduled publication end feature.

Content Reordering

Notifications will be sent when "Publication Ended" content is reordered in the contents list screen.

Content ID Change

Notifications will be sent when the content ID of "Publication Ended" content is updated.

Publication Date Change

Notifications will be sent when the publication date of "Publication Ended" content is updated.

Custom Status Change

Notifications will be sent when the custom status of "Publication Ended" content is updated.

3. When Content is Saved as Draft

Notifications will be sent when content becomes "Draft" or "Published and Draft", or when changes occur to content that is "Draft".

Content Draft Saving (via Administration Console)

Notifications will be sent when "Draft" content is updated through the Administration Console.

Content Draft Saving (via API)

Notifications will be sent in the following cases:

  1. When "Draft" content is created via POST / PUT API
  2. When "Draft" content is updated via PATCH API

Content Reordering

Notifications will be sent when "Draft" content is reordered in the contents list screen.

Content ID Change

Notifications will be sent when the content ID of "Draft" content is updated.

Publication Date Change

Notifications will be sent when the publication date of "Draft" content is updated.

Custom Status Change

Notifications will be sent when the custom status of "Draft" content is updated.

4. When Published Content is Deleted

Notifications will be sent when "Published" or "Published and Draft" content is deleted.

Content Deletion (via Administration Console)

Notifications will be sent when "Published" or "Published and Draft" content is deleted through the Administration Console.

Content Deletion (via API)

Notifications will be sent when "Published" or "Published and Draft" content is deleted via DELETE API.

5. When Publication Ended Content is Deleted

Notifications will be sent when "Publication Ended" content is deleted.

Content Deletion (via Administration Console)

Notifications will be sent when "Publication Ended" content is deleted through the Administration Console.

Content Deletion (via API)

Notifications will be sent when "Publication Ended" content is deleted via DELETE API.

6. When Draft Content is Deleted

Notifications will be sent when "Draft" content is deleted.

Content Deletion (via Administration Console)

Notifications will be sent when "Draft" content is deleted through the Administration Console.

Content Deletion (via API)

Notifications will be sent when "Draft" content is deleted via DELETE API.

7. When Published and Draft Content's Draft is Discarded

Notifications will be sent when the draft of "Published and Draft" content is discarded through the Administration Console.

8. When API Settings are Changed

Notifications will be sent when changes are made to API settings (basic settings, schema, etc.).

9. When API is Deleted

Notifications will be sent when an API is deleted.

Configuration and Operation Details

Slack

The following information is required for the Webhook to Slack.
For operations on the Slack side, please refer to the official documentation.

  • Webhook URL issued by Slack


When notifications are actually sent, they will be in the following format.
The URL part will default to the Administration Console URL, but it can also be changed to any desired URL in the settings.

Chatwork

The following information is required for the Webhook to Chatwork.

  • Chatwork API Token: Chatwork Documentation
  • Room ID: The numeric part of rid000000000 included in the URL.


The notification content will be the same as for Slack.

Netlify

You can start the build process via Webhook from microCMS.
The configuration details are as follows:

  • Build Hooks URL: Netlify Documentation

Cloudflare Pages

You can start the build process via Webhook from microCMS.
The configuration details are as follows:

  • Deploy Hooks URL: Cloudflare Documentation

Vercel

You can start the build process via Webhook from microCMS.
The configuration details are as follows:

  • Deploy Hooks URL: Vercel Documentation

AWS Amplify

You can start the build process via Webhook from microCMS.
The configuration details are as follows:

  • Build Hooks URL: Amplify Documentation

GitHub Actions

You can start the build process via Webhook from microCMS.

Configuration Details

  • GitHub Token: GitHub Documentation
  • Repository Username
  • Repository Name
  • Trigger Event Name: GitHub Documentation
Tips

For detailed instructions on how to configure GitHub Actions, please refer to the help article "【Webhook Integration for Content】How to Configure GitHub Actions".

Information

When the token expires, please obtain a new token and overwrite the value to set it again.

Request Details

The request body when calling the dispatch event includes information about event_type and client_payload.

Overview of the Request Body

{
  "event_type": "microcms_build",
  "client_payload": {
    "service": "your_service",
    "api": "news",
    "id": "RX252Zoo7",
    "draftKey": "2Jnt22mLh5",
    "type": "new"
  }
}

event_type

event_type contains the value specified for the trigger event name.


This value can be referenced as github.event.action within GitHub Actions.

client_payload

client_payload contains information about the targeted content and API.

{
    "service": "your_service",
    "api": "news",
    "id": "RX252Zoo7",
    "draftKey": "2Jnt22mLh5",
    "type": "new"
}

Item

Description

service

The subdomain of the Service to which the modified Content belongs.

api

The Endpoint specified during the update or deletion of the API.

id

The Content ID. This is included only when an operation related to the Content has been performed.

draftKey

The Draft Key (draftKey) that can be obtained from the Administration console. This is included only when the Content is in Draft or Scheduled status.

type

The type of change. It will be new for new additions, edit for edits, and delete for deletions. (This refers to the type of change to the data, regardless of changes to the Content's publication status.)

These values can be referenced as github.event.client_payload within GitHub Actions.

Email Notifications

You can send changes to the specified email address when there are modifications to the content or API.
The sender's email address is info@microcms.io.
The settings are as follows:

  • Email Address

Additionally, similar to Slack and Chatwork Webhooks, the body will contain a URL, which can also be changed to any desired one.

Custom Notifications

A POST request will be sent to a specified URL.
The settings are as follows:

  • URL for the POST request

About Custom Notifications

Custom notifications send a POST request to any specified URL.
You can specify any URL, allowing the receiving end to handle the request as needed.

Secret (Webhook Security Protection)

microCMS can add a header value to verify that the Webhook request is from microCMS.
To do this, you need to set a secret value, which is recommended by microCMS.

The header x-microcms-signature: <COMPUTED_HASH> will only be added if a secret value is set.
Note: The payload is generated using SHA-256 based HMAC from the secret value and the request body.

The secret value can be changed in the custom notification settings screen.
Please set a value that is difficult to guess (e.g., a value generated by ruby -rsecurerandom -e 'puts SecureRandom.hex(20)').

Signature Verification

You can verify by comparing the following two values to confirm that the request is from microCMS.

  • The value received in the x-microcms-signature header
  • The value based on the payload (request.body) and the set secret value

As an example, in Node.js, verification can be implemented as follows.

const crypto = require('crypto');

const expectedSignature = crypto
  .createHmac('sha256', <set secret>)
  .update(request.body)
  .digest('hex');

const signature = request.headers['x-microcms-signature'];

if (typeof signature !== 'string') {
  throw new Error('Invalid signature.');
}

const signatureBuffer = Buffer.from(signature);
const expectedSignatureBuffer = Buffer.from(expectedSignature);

if (
  signatureBuffer.length !== expectedSignatureBuffer.length ||
  !crypto.timingSafeEqual(signatureBuffer, expectedSignatureBuffer)
) {
  throw new Error('Invalid signature.');
}

Request Details

Headers

The request headers will include Content-Type: application/json.
If the aforementioned secret is set, x-microcms-signature: <SIGNATURE_VALUE> will also be included.

You can also add any custom request headers. Please click the “+” button in Custom Request Headers to add them.



Information

For security reasons, we restrict the setting of Webhooks to domains under microCMS (.microcms.io, .microcms-management.io).

Body

The request body contains information about the targeted content and 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: 'This is the 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: 'This is the title',
      },
      draftValue: null,
    },
  },
}

Item

Description

service

The subdomain of the Service to which the modified Content belongs.

api

The Endpoint specified when creating or updating the API.

id

The Content ID. For operations related to the API, null will be present.

type

The type of change. For new additions, new will be present; for edits, edit; and for deletions, delete. (This refers to the type of change to the data, regardless of changes to the Content's publication status.)

contents

The Content details. For operations related to the API, null will be present.

contents.old

Contains the content before editing or deletion. For new Content creation, null will be present.

contents.old.id

Contains the id of the Content before editing or deletion.

contents.old.status

Indicates the publication status of the Content as an array. PUBLISH for published, DRAFT for draft, and CLOSED for unpublished.

contents.old.draftKey

If the Content is in draft status, this will contain the draft key (draftKey) that can be obtained from the Administration console. If only in published status, null will be present.

contents.old.publishValue

Contains the JSON data obtained via the GET API for published Content.

contents.old.draftValue

Contains the JSON data obtained via the GET API for draft Content.

contents.new

Contains the content after creation or editing. For Content deletion, null will be present.

contents.new.id

Contains the id of the Content after creation or editing.

contents.new.status

Indicates the publication status of the Content as an array. PUBLISH for published, DRAFT for draft, and CLOSED for unpublished.

contents.new.draftKey

If the Content is in draft status, this will contain the draft key (draftKey) that can be obtained from the Administration console. If only in published status, null will be present.

contents.new.publishValue

Contains the JSON data obtained via the GET API for published Content.

contents.new.draftValue

Contains the JSON data obtained via the GET API for draft Content.

Verifying and Debugging Webhooks

When verifying and debugging custom notifications, it is useful to use webhook testing tools such as "Webhook.site".

Usage Flow

  1. Add a custom notification setting.
  2. Copy the URL obtained from the testing tool into the URL field of the custom notification.
  3. Perform the triggering action in the Administration console and check the output on the testing tool.

▼ Example of Output

Caution

The validation tools mentioned above are external services, so information such as the request body will be shared externally. Please be careful not to use any data that should not be leaked.

Webhook Enable/Disable Settings

If you want to temporarily enable or disable the Webhook settings, you can do so by toggling the switch in the Webhook list. If disabled, no Webhooks will be issued.

Webhook Detailed Specifications

Retry

No retry processing will be performed if the Webhook notification fails due to network errors or 4xx/5xx errors.

Duplicate Sending

Webhook notifications will be sent only once per configured timing.

If multiple contents are deleted or their statuses are changed, notifications containing the request body will be executed for each of the affected contents.
The types of notifications that will be affected are as follows:

  1. GitHub Actions
  2. Custom Notifications

Order Guarantee

In principle, Webhook notifications will be sent in the order of operation execution.
However, since strict control is not implemented, the order is not guaranteed.

Source IP Address

The source IP address of the Webhook is a dynamic IP address.
Additionally, the range of IP addresses is not publicly disclosed.

Contents

  • Webhook Timing
  • 1. When Content is Published or Updated
  • 2. When Content Publication Ends
  • 3. When Content is Saved as Draft
  • 4. When Published Content is Deleted
  • 5. When Publication Ended Content is Deleted
  • 6. When Draft Content is Deleted
  • 7. When Published and Draft Content's Draft is Discarded
  • 8. When API Settings are Changed
  • 9. When API is Deleted
  • Configuration and Operation Details
  • Slack
  • Chatwork
  • Netlify
  • Cloudflare Pages
  • Vercel
  • AWS Amplify
  • GitHub Actions
  • Email Notifications
  • Custom Notifications
  • About Custom Notifications
  • Secret (Webhook Security Protection)
  • Request Details
  • Verifying and Debugging Webhooks
  • Webhook Enable/Disable Settings
  • Webhook Detailed Specifications
  • Retry
  • Duplicate Sending
  • Order Guarantee
  • Source IP Address
  • Company
  • Legal Notice
  • Terms of Service
  • Privacy Policy

Copyright © microcms.io All rights reserved.