Payload structure
All webhook payloads follow a consistent structure with two main sections:Webhook metadata
Thewebhook object is included in all webhook payloads and contains:
Page webhook payloads
Data fields
Example: Page published
Example: Page deleted
Blog Post webhook payloads
Data fields
The
post.localization.* events (post.localization.published, post.localization.draft, post.localization.delete) add a locale field identifying which locale changed, e.g. "locale": "es". The default-locale post.* events omit this field.Example: Blog Post published
Blog post webhook payloads are intentionally lightweight, containing only the post slug and ID. To get the full post content, use the slug to fetch the complete post data from the ButterCMS API.
Fetching full post data
Collection item webhook payloads
Data fields
Example: collection item published
Fetching full collection item data
Theitemid field contains the API path to fetch the specific item:
Media webhook payloads
media.videouploaded data fields
Example: Media video uploaded
Localized content payloads
For Pages and Collection items, thelocale field carries the code of the locale a change applies to.
Blog posts behave differently. The default-locale
post.* events never carry a locale field; localized changes fire dedicated post.localization.* events that always include it. See Blog Post webhook payloads.When locale is present
For organizations with localization enabled, the locale field indicates which locale triggered the event. Content edited in the default locale fires with that locale’s code:
When locale is absent
The field is omitted from the payload entirely for:
- organizations that do not have localization enabled
- delete events (
page.delete,collectionitem.delete), which are not scoped to a locale