Webhook Data Format

View as Markdown
Last updated June 17, 2026

Contentstack uses outgoing webhooks that send data from Contentstack to external services. When an event occurs, data is sent to the registered URL.

When a webhook is triggered, the data received is in the following format:

Method: POST

Headers: "Content-Type: application/json", "X-Contentstack-Request-Signature:9876543210"

Body: {

  "event": "string",

  "module": "string",

  "api_key": "string",

  "data": "object"

}

Details of the POST call's Body keys:

  • event - One of these [create, update, delete, publish, publish.start, publish.success, publish.fail, unpublish, unpublish.start, unpublish.success, unpublish.fail]
  • module - One of these [content types, entry, asset, release]
  • api_key - The API key of the stack
  • data - This is the response object

Examples

Here’s an example of a response object attached to the POST body when trying to update an existing entry in a content type.

{

  "module": "entry",

  "api_key": "blt**************22",

  "data": {

    "entry": {

      "title": "Webhook Entry",

      "url": "/webhook-entry",

      "locale": "en-us",

      "uid": "blt**************a9",

      "created_by": "blt**************33",

      "updated_by": "blt**************33",

      "created_at": "2019-03-08T08:57:47.737Z",

      "updated_at": "2019-03-08T08:58:07.560Z",

      "ACL": {},

      "_version": 2,

      "tags": []

    },

    "content_type": {

      "created_at": "2019-03-08T08:57:38.993Z",

      "created_by": "blt**************33",

      "updated_at": "2019-03-08T08:57:38.993Z",

      "updated_by": "blt**************33",

      "title": "Webhook created",

      "uid": "webhookcreated",

      "description": "",

      "schema": [

        {

          "display_name": "Title",

          "uid": "title",

          "data_type": "text",

          "field_metadata": {

            "_default": true

          },

          "unique": true,

          "mandatory": true,

          "multiple": false

        },

        {

          "display_name": "Webhook created",

          "uid": "url",

          "data_type": "text",

          "field_metadata": {

            "_default": true

          },

          "unique": false,

          "mandatory": false,

          "multiple": false

        }

      ],

      "options": {

        "title": "title",

        "singleton": false,

        "publishable": true,

        "is_page": true,

        "sub_title": [],

        "url_pattern": "/:title",

        "url_prefix": "/"

      }

    }

  },

  "event": "update",

  "triggered_at": "2019-03-08T08:58:07.725Z"

}

Here’s an example of a response object attached to the POST body when trying to update an existing comment in any entry.

{

    "triggered_at":"2022-04-22T06:51:57.427Z",

    "module":"comment",

    "api_key":"blt**************ab",

    "data":{

        "content_type":{

            "created_at":"2022-01-19T13:52:08.528Z",

            "created_by":"blt**************38",

            "updated_at":"2022-01-19T13:52:08.528Z",

            "updated_by":"blt**************38",

            "title":"Sample_content_type",

            "uid":"sample_content_type",

            "description":"",

            "schema":[

                {

                    "display_name":"Title",

                    "uid":"title",

                    "data_type":"text",

                    "field_metadata":{

                        "_default":true,

                        "version":3

                    },

                    "unique":false

                },

                {

                    "data_type":"text",

                    "display_name":"Multi Line Textbox",

                    "uid":"multi_line",

                    "field_metadata":{

                        "description":"Sample text.",

                        "multiline":true,

                        "version":3

                    },

                    "mandatory":false,

                    "multiple":false,

                    "non_localizable":false,

                    "unique":false

                },

                {

                    "display_name":"URL",

                    "uid":"url",

                    "data_type":"text",

                    "field_metadata":{

                        "_default":true,

                        "version":3

                    },

                    "unique":false,

                    "multiple":false,

                    "mandatory":false,

                    "non_localizable":false,

                    "indexed":false,

                    "inbuilt_model":false

                }

            ],

            "options":{

                "title":"title",

                "publishable":true,

                "is_page":true,

                "singleton":false,

                "sub_title":[

                    "url"

                ],

                "url_pattern":"/:title",

                "url_prefix":"/"

            }

        },

        "entry":{

            "locale":"en-us",

            "tags":[


            ],

            "title":"Sample Entry",

            "uid":"blt**************8d",

            "created_by":"blt**************4e",

            "updated_by":"blt**************fe",

            "created_at":"2022-01-27T05:42:01.729Z",

            "updated_at":"2022-02-04T12:39:37.992Z",

            "url":"/sample-entry",

            "ACL":{


            },

            "_version":6,

            "_in_progress":false

        },

        "comment":{

            "discussion_uid":"cs615c8c6cdd2633b0",

            "uid":"cs725e99b728f36145",

            "to_users":[

                {

                    "email":"[email protected]",

                    "first_name":"User First Name",

                    "uid":"blt**************4e",

                    "last_name":"User Last Name"

                }

            ],

            "to_roles":[

                {

                    "name":"Developer",

                    "uid":"blt**************1d",

                    "users":[

                        "blt**************6d",

                        "blt**************56"

                    ]

                }

            ],

            "message":"This is an updated comment.",

            "created_at":"2022-04-22T06:48:54.655Z",

            "created_by":{

                "uid":"blt**************b1",

                "email":"[email protected]",

                "first_name":"User First Name",

                "last_name":"User Last Name"

            },

            "deleted_at":false,

            "entry_uid":"blt**************8d",

            "locale":"en-us",

            "updated_at":"2022-04-22T06:51:57.201Z"

        },

        "discussion":{

            "title":"Multi Line Textbox-1650610117501",

            "entry_uid":"blt**************8d",

            "uid":"cs615c8c6cdd2633b0",

            "api_key":"blt**************ab",

            "org_uid":"blt**************f0",

            "_content_type_uid":"sample_content_type",

            "locale":"en-us",

            "status":1,

            "field":{

                "uid":"multi_line",

                "path":"multi_line",

                "og_path":"multi_line"

            },

            "created_at":"2022-04-22T06:48:54.326Z",

            "created_by":"blt**************b1"

        }

    },

    "event":"update"

}

Here’s an example of a response object attached to the POST body when an asset is published successfully on an environment.

{

  "module": "asset",

  "api_key": "blt**************22",

  "data": {

    "asset": {

      "uid": "blt**************11",

      "created_at": "2019-03-08T09:04:25.377Z",

      "updated_at": "2019-03-08T09:04:25.377Z",

      "created_by": "blt**************22",

      "updated_by": "blt**************22",

      "content_type": "image/png",

      "file_size": "560",

      "tags": [],

      "filename": "image.png",

      "url": "your_asset_URL",

      "ACL": {},

      "is_dir": false,

      "parent_uid": null,

      "_version": 1,

      "title": "image.png",

      "description": "",

      "publish_details": [

        {

          "environment": "blt**************33",

          "locale": "en-us",

          "time": "2019-03-08T09:04:43.921Z",

          "user": "blt**************22",

          "version": 1

        }

      ]

    },

    "environment": {

      "name": "blank",

      "servers": [],

      "urls": [],

      "deploy_content": false,

      "uid": "blt**************55",

      "created_by": "blt**************22",

      "updated_by": "blt**************22",

      "created_at": "2019-03-08T08:53:46.157Z",

      "updated_at": "2019-03-08T08:53:46.157Z",

      "ACL": [],

      "_version": 1

    },

    "action": "publish",

    "status": "success",

    "locale": "en-us"

  },

  "event": "publish",

  "triggered_at": "2019-03-08T09:04:53.444Z"

}

Here's an example of a response object attached to the POST body when an entry is published within a release successfully on an environment.

{

    "event": "publish",

    "source": {

        "type": "release"

        "title": "Release01",

        "uid": "blt**************11"

    },

    "data": {

        "entry": {

            ...

        }

    },

    "api_key": "blt**************dc",

    "module": "entry",

    "triggered_at": "2019-03-06T05:34:44.876Z"

}

Here's an example of a response object attached to the POST body when an asset is published within a release successfully on an environment.

{

    "event": "publish",

    "source": {

        "type": "release"

        "title": "Release02",

        "uid": "blt**************11"

    },

    "data": {

        "asset": {

            ...

        }

    },

    "api_key": "blt**************dc",

    "module": "asset",

    "triggered_at": "2019-03-06T05:34:44.876Z"

}

Lastly, here's an example of a response object attached to the POST body when a release has been deployed successfully.

{

  "module": "release",

  "api_key": "blt**************11",

  "data": {

    "release": {

      "name": "Webhook-Release",

      "description": "Release 08-03-2019",

      "locked": true,

      "items": [

        {

          "uid": "blt**************01",

          "version": 1,

          "action": "publish",

          "content_type_uid": "content_type",

          "locale": "en-us",

          "title": "Entry1"

        },

        {

          "uid": "blt**************02",

          "version": 1,

          "action": "publish",

          "content_type_uid": "content_type",

          "locale": "en-us",

          "title": "Entry2"

        },

        {

          "uid": "blt**************33",

          "version": 1,

          "action": "publish",

          "content_type_uid": "built_io_upload",

          "locale": "en-us",

          "title": "Image1.png"

        },

        {

          "uid": "blt**************44",

          "version": 1,

          "action": "publish",

          "content_type_uid": "built_io_upload",

          "locale": "en-us",

          "title": "Image2.png"

        }

      ],

      "uid": "blt**************11",

      "created_by": "blt**************23",

      "updated_by": "blt**************23",

      "created_at": "2019-03-08T09:25:24.165Z",

      "updated_at": "2019-03-08T09:25:32.278Z",

      "status": [

        {

          "environment": "blt**************33",

          "time": "2019-03-08T09:25:32.235Z",

          "status": "success",

          "user": "blt**************23"

        }

      ]

    },

    "environment": {

      "deploy_content": false,

      "servers": [],

      "urls": [

        {

          "url": "",

          "locale": "en-us"

        }

      ],

      "name": "production",

      "uid": "blt**************33",

      "created_by": "blt**************23",

      "updated_by": "blt

23",

      "created_at": "2019-03-08T09:22:35.779Z",

      "updated_at": "2019-03-08T09:22:35.779Z",

      "ACL": [],

      "_version": 1

    },

    "action": "deploy",

    "status": "success"

  },

  "event": "deploy",

  "triggered_at": "2019-03-08T09:25:32.518Z"

}