Webhooks
Outbound webhooks let you integrate siteRabbit events into your own systems — Slack bots, PagerDuty rules, custom dashboards, deployment pipelines, and more.
Creating a webhook
- Go to Settings → Notifications → Add channel → Webhook.
- Enter your endpoint URL (must be HTTPS).
- Set a secret — siteRabbit uses it to sign every delivery.
- Choose which events to receive.
- Click Test to send a sample payload.
Verifying signatures
Every delivery includes an X-SiteRabbit-Signature header. The value is the HMAC-SHA256 of the raw request body, encoded in hex, using your webhook secret.
import crypto from 'node:crypto';
function verifySignature(body: string, signature: string, secret: string): boolean {
const expected = crypto
.createHmac('sha256', secret)
.update(body, 'utf8')
.digest('hex');
return crypto.timingSafeEqual(
Buffer.from(signature),
Buffer.from(expected),
);
}
Always verify signatures before trusting a payload. Reject deliveries with invalid signatures with a 400 status.
Event types
| Event | Fired when |
|-------|-----------|
| monitor.down | A monitor fails consensus check |
| monitor.up | A monitor recovers after being down |
| monitor.degraded | Response time exceeds threshold |
| incident.created | A new incident is opened |
| incident.updated | An incident update is posted |
| incident.resolved | An incident is resolved |
| ssl.expiring | SSL certificate expiry is within threshold |
| domain.expiring | Domain registration expiry is within threshold |
Payload structure
{
"event": "monitor.down",
"id": "evt_01HXZ3K9P2BVNQ5XJTYC8D7MF",
"teamId": "team_abc123",
"monitorId": "mon_def456",
"monitorName": "Production API",
"url": "https://api.example.com/health",
"status": "DOWN",
"region": "eu-west-1",
"responseTime": null,
"statusCode": null,
"checkedAt": "2026-06-15T10:30:00.000Z",
"sentAt": "2026-06-15T10:30:01.234Z"
}
Retries
If your endpoint returns a non-2xx status or times out (10 s timeout), siteRabbit retries with exponential backoff:
| Attempt | Delay | |---------|-------| | 1 | Immediate | | 2 | 30 s | | 3 | 5 min | | 4 | 30 min | | 5 | 2 h |
After 5 failed attempts the delivery is abandoned and marked failed in the webhook delivery log.
Delivery logs
Go to Settings → Notifications → (your webhook) → Deliveries to see recent delivery attempts, response codes, and retry state. You can replay any delivery from this view.