pro
Events & Payloads
Reference for all webhook events and their payload structures.
- Events Overview
- Content Events
- Model-Specific Events
- Pages Events
- Assets Events
- Lokalize Events
- System Events
- Payload Structures
- Content Save Payload
- Content State Values
- Content Delete Payload
- Pages Save Payload
- Asset Save Payload
- User Save Payload
- Custom Payloads
- Slack Format
- Discord Format
- Empty Payload
- Custom Variables
- Event Filtering Tips
- Listen to All Content Changes
- Listen to Specific Model
- Listen to Publications Only
- Combined Events
Events Overview
Webhooks can be triggered by various Cockpit events. Use specific events for better performance.
Content Events
| Event | Description |
|---|---|
content.item.save |
Any content item is saved |
content.item.save.{model} |
Item in specific model is saved |
content.item.publish |
Content item is published |
content.item.unpublish |
Content item is unpublished |
content.item.remove |
Content item is deleted |
content.item.remove.{model} |
Item in specific model is deleted |
Model-Specific Events
Use model-specific events for better filtering:
content.item.save.posts # Only posts
content.item.save.products # Only products
content.item.remove.pages # Only when pages deleted
Pages Events
| Event | Description |
|---|---|
pages.page.save |
A page is saved |
pages.page.remove |
A page is deleted |
Assets Events
| Event | Description |
|---|---|
assets.asset.save |
An asset is saved |
assets.asset.remove |
An asset is deleted |
Lokalize Events
| Event | Description |
|---|---|
lokalize.project.save |
Translation project is saved |
System Events
| Event | Description |
|---|---|
system.user.save |
A user is saved |
system.user.remove |
A user is deleted |
Payload Structures
When using the default payload (event data), the webhook receives the full event arguments.
Content Save Payload
[
"posts",
{
"_id": "abc123",
"_model": "posts",
"_created": 1699999999,
"_modified": 1700000000,
"title": "My Blog Post",
"content": "Hello world...",
"_state": 1
},
false
]
The array contains:
- Model name
- Item data (full document)
- Boolean indicating if item is new (
true= create,false= update)
Content State Values
_state Value |
Meaning |
|---|---|
0 |
Draft |
1 |
Published |
-1 |
Unpublished |
Content Delete Payload
[
"posts",
"abc123"
]
Array contains:
- Model name
- Deleted item ID
Pages Save Payload
[
{
"_id": "page123",
"title": "About Us",
"slug": "about",
"route": "/about",
"layout": [...]
}
]
Asset Save Payload
[
{
"_id": "asset123",
"title": "Hero Image",
"path": "/storage/uploads/hero.jpg",
"mime": "image/jpeg",
"size": 245000,
"_created": 1699999999
}
]
User Save Payload
[
{
"_id": "user123",
"user": "john",
"email": "john@example.com",
"name": "John Doe",
"role": "admin",
"_created": 1699999999
}
]
User payloads do not include password hashes for security.
Custom Payloads
Define custom payload structures for your integrations.
Slack Format
{
"text": "Content updated in Cockpit CMS",
"blocks": [
{
"type": "section",
"text": {
"type": "mrkdwn",
"text": "*New content published*\nA content item was just updated."
}
}
]
}
Discord Format
{
"content": "Content updated in CMS",
"embeds": [{
"title": "Content Update",
"description": "New content was just published",
"color": 5814783
}]
}
Empty Payload
For services like Netlify that only need a trigger:
{}
Custom Variables
Use placeholders in custom payloads:
{
"action": "content_updated",
"timestamp": "${DATE}",
"source": "cockpit"
}
Event Filtering Tips
Listen to All Content Changes
content.item.save
content.item.remove
Listen to Specific Model
content.item.save.posts
content.item.remove.posts
Listen to Publications Only
content.item.publish
Combined Events
Select multiple events in the webhook configuration to trigger on any of them.