cs-icon.svg

Webhook Data Format

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":"user@contentstack.com",
                    "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":"user@contentstack.com",
                "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"
}
Was this article helpful?
^