Webhooks
Send notifications to external services via webhooks.
Setup
- Go to Admin → Settings → Webhooks
- Click Add Webhook
- Enter the webhook URL
- Select events to trigger
- Save
Webhook Events
incident.createdincident.updatedincident.resolvedmaintenance.scheduledmaintenance.startedmaintenance.completedcomponent.status_changed
Payload Format
{
"event": "incident.created",
"timestamp": "2024-01-15T10:30:00Z",
"data": {
"id": 123,
"title": "API Performance Issues",
"status": "investigating",
"impact": "degraded",
"message": "We are investigating...",
"components": [
{ "id": 1, "name": "API" }
],
"url": "https://status.example.com/incidents/123"
}
}Integration Examples
Slack
Use Slack's Incoming Webhooks:
https://hooks.slack.com/services/T00000000/B00000000/XXXXXXXXDiscord
Use Discord webhook URL:
https://discord.com/api/webhooks/000000000/XXXXXXMicrosoft Teams
Use Teams Incoming Webhook connector.
PagerDuty
Use Events API v2 endpoint.
Security
Webhooks include a signature header for verification:
X-Webhook-Signature: sha256=abc123...Verify the signature using your webhook secret:
const crypto = require('crypto')
const signature = crypto
.createHmac('sha256', webhookSecret)
.update(JSON.stringify(payload))
.digest('hex')
if (signature === receivedSignature) {
// Valid webhook
}Retry Logic
Failed webhooks are retried:
- 3 retry attempts
- Exponential backoff (1min, 5min, 15min)
- Webhook disabled after repeated failures
Testing
- Go to webhook settings
- Click Test Webhook
- Check your endpoint received the payload
