Webhooks
Receive events from your tools via webhook endpoints.
Table of contents
Overview
Webhooks allow external tools to send events to ButterStack. Each integration has its own webhook endpoint with a unique token for authentication.
Authentication
All webhook endpoints use token-based authentication:
POST /webhooks/{platform}?token={webhook_token}
The webhook_token is generated when you create an integration and can be found in integration settings.
Webhook Endpoints
Perforce
Endpoint: POST /webhooks/perforce
| Parameter | Type | Required | Description |
|---|---|---|---|
token | string | Yes | Integration webhook token |
changelist | integer | Yes | Perforce changelist number |
timestamp | string | No | Submission timestamp (ISO 8601) |
Jenkins
Endpoint: POST /webhooks/jenkins
Body (JSON):
{
"job_name": "MyGame-Build",
"build_number": 456,
"status": "SUCCESS",
"build_url": "https://jenkins.example.com/job/MyGame-Build/456"
}
Game Engine
| Endpoint | Purpose |
|---|---|
POST /webhooks/game_engine/cooking_started | Build cooking phase started |
POST /webhooks/game_engine/asset_cooked | Individual asset cooked |
POST /webhooks/game_engine/shaders_started | Shader compilation started |
POST /webhooks/game_engine/shaders_completed | Shader compilation finished |
POST /webhooks/game_engine/packaging_started | Packaging phase started |
POST /webhooks/game_engine/build_completed | Build finished successfully |
POST /webhooks/game_engine/build_failed | Build failed |
Deployment
Endpoint: POST /webhooks/deployment
Body:
{
"platform": "steam",
"event": "uploaded",
"build_number": 456,
"steam_app_id": "480"
}
Other Integrations
| Integration | Endpoint |
|---|---|
| Jira | POST /webhooks/jira |
| Linear | POST /webhooks/linear |
| Trello | POST /webhooks/trello |
| Diversion | POST /webhooks/diversion |
Response Codes
| Code | Description |
|---|---|
200 | Event processed successfully |
400 | Invalid request body |
401 | Invalid or missing token |
429 | Rate limit exceeded |
500 | Internal server error |
Testing Webhooks
curl -X POST \
"https://your-butterstack.com/webhooks/perforce?token=YOUR_TOKEN" \
-H "Content-Type: application/x-www-form-urlencoded" \
-d "changelist=12345"