Explore documentation
Get updates via webhook
What are Webhook Subscriptions?
Webhook subscriptions allow you to receive automated HTTP POST requests whenever there's a status update on the services you're monitoring. Instead of constantly polling for changes, we'll push updates directly to your specified endpoint.
Example Payloads
Incident Update
{
"event_type": "incident",
"meta": {
"unsubscribe": "https://status.example.com/unsubscribe/abc123",
"documentation": "https://docs.betteruptime.com/webhooks"
},
"page": {
"id": "12345",
"status_indicator": "downtime",
"status_description": "Some services are down"
},
"incident": {
"id": "98765",
"name": "Database Connection Issues",
"created_at": "2024-01-15T10:30:00Z",
"updated_at": "2024-01-15T11:45:00Z",
"shortlink": "https://status.example.com/incidents/98765",
"organization_id": "12345",
"incident_updates": [
{
"id": "11111",
"status_report_id": "98765",
"body": "We've identified the issue and are working on a fix",
"created_at": "2024-01-15T11:45:00Z",
"updated_at": "2024-01-15T11:45:00Z"
},
{
"id": "11110",
"status_report_id": "98765",
"body": "We're investigating connection issues with the database",
"created_at": "2024-01-15T10:30:00Z",
"updated_at": "2024-01-15T10:30:00Z"
}
]
}
}
Maintenance Update
{
"event_type": "maintenance",
"meta": {
"unsubscribe": "https://status.example.com/unsubscribe/abc123",
"documentation": "https://docs.betteruptime.com/webhooks"
},
"page": {
"id": "12345",
"status_indicator": "maintenance",
"status_description": "Ongoing maintenance"
},
"maintenance": {
"id": "87654",
"name": "Scheduled Database Upgrade",
"created_at": "2024-01-14T09:00:00Z",
"updated_at": "2024-01-15T02:00:00Z",
"starts_at": "2024-01-15T02:00:00Z",
"ends_at": "2024-01-15T04:00:00Z",
"shortlink": "https://status.example.com/incidents/87654",
"organization_id": "12345",
"maintenance_updates": [
{
"id": "22222",
"status_report_id": "87654",
"body": "Database upgrade scheduled for tonight",
"created_at": "2024-01-14T09:00:00Z",
"updated_at": "2024-01-14T09:00:00Z"
}
]
}
}
HTTP Request Details
Headers
Every webhook request includes these headers:
Content-Type: application/json
User-Agent: BetterStack-StatusPage/1.0
X-BetterUptime-Event: [event_type]
(incident, maintenance, or component_update)
Timeouts
- Connection timeout: 10 seconds
- Request timeout: 30 seconds
Expected Response
We consider any 2xx HTTP status code as successful. Your endpoint should respond within 30 seconds.
Retry Policy
If your webhook fails, we'll automatically retry with exponential backoff:
- 1st retry: after 30 seconds
- 2nd retry: after 1 minute
- 3rd retry: after 2 minutes
- ...continuing up to 10 retries
After 10 failed attempts, we'll:
- Deactivate the webhook
- Send an email notification about the failure
- Stop sending updates until you reactivate the subscription
Status Indicators
The status_indicator
field can have these values:
operational
- Everything is working normallydegraded
- Some services experiencing issuesdowntime
- Major service disruptionmaintenance
- Scheduled maintenance in progress
Best Practices
- Respond quickly - Return a 2xx status as soon as you've received the payload
- Process asynchronously - Don't do heavy processing before responding
- Monitor failures - Keep an eye on the failure notification emails
Getting Started
To set up a webhook subscription:
- Go to your status page
- Click "Get updates"
- Select "Webhook" as the subscription type
- Enter your endpoint URL
- Provide your email for confirmation and failure notifications
- Check your email and confirm the subscription
- Start receiving real-time updates!
That's it! Your webhook is now ready to receive status updates. If you have any questions or run into issues, our support team is here to help.