Integrations
Connect Statly with your existing monitoring, alerting, and communication tools.
Notification Channels
Statly supports 8 notification channels for alerting your team:
| Channel | Description |
|---|---|
| Send alerts to team members or custom addresses | |
| Webhook | POST events to any HTTP endpoint with HMAC signature |
| Slack | Post to Slack channels via incoming webhooks |
| Discord | Send alerts to Discord channels |
| PagerDuty | Trigger and resolve PagerDuty incidents |
| Microsoft Teams | Post to Teams channels via connectors |
| Opsgenie | Create and manage Opsgenie alerts |
| SMS | Send text messages via Twilio |
Webhooks
Send incident events to any HTTP endpoint with signature verification.
Configuration
- Go to Settings → Integrations → Webhooks
- Add your endpoint URL
- Save to generate a signing secret
- Select events to trigger:
- Monitor status changed (up/down/degraded)
- Incident created/updated/resolved
- Maintenance scheduled/started/completed
Payload Format
{
"event": "incident.created",
"timestamp": "2024-01-15T12:00:00Z",
"organization": {
"id": "org_xxx",
"name": "Acme Corp",
"slug": "acme"
},
"incident": {
"id": "inc_xxx",
"title": "API Performance Degradation",
"status": "investigating",
"severity": "minor",
"createdAt": "2024-01-15T12:00:00Z"
}
}Signature Verification
Webhooks include a signature header for verification:
const crypto = require('crypto');
function verifyWebhook(payload, signature, secret) {
const expected = crypto
.createHmac('sha256', secret)
.update(payload)
.digest('hex');
return crypto.timingSafeEqual(
Buffer.from(signature),
Buffer.from(`sha256=${expected}`)
);
}import hmac
import hashlib
def verify_webhook(payload: bytes, signature: str, secret: str) -> bool:
expected = hmac.new(
secret.encode(),
payload,
hashlib.sha256
).hexdigest()
return hmac.compare_digest(signature, f"sha256={expected}")API Automation
Build custom integrations with the REST API:
Create Incident from CI/CD
# GitHub Actions example
- name: Create Statly Incident
if: failure()
run: |
curl -X POST "https://statly.live/api/v1/incidents" \
-H "Authorization: Bearer ${{ secrets.STATLY_API_KEY }}" \
-H "Content-Type: application/json" \
-d '{
"title": "Deployment Failed: ${{ github.workflow }}",
"severity": "minor",
"status": "investigating"
}'Auto-Resolve on Success
# Resolve incident when deployment succeeds
- name: Resolve Statly Incident
if: success()
run: |
curl -X PATCH "https://statly.live/api/v1/incidents/${{ env.INCIDENT_ID }}" \
-H "Authorization: Bearer ${{ secrets.STATLY_API_KEY }}" \
-H "Content-Type: application/json" \
-d '{"status": "resolved"}'RSS Feed
Subscribe to status updates via RSS:
https://{slug}.statly.live/feed.rssCompatible with:
- Slack RSS app
- Microsoft Teams
- RSS readers
- Custom aggregators
Status Badges
Embed uptime badges in your README or website:

Available styles: flat, flat-square, plastic, for-the-badge
Status Widget
Embed a status widget on your website:
<script src="https://statly.live/widget.js" data-org="{slug}"></script>Or fetch JSON and render yourself:
const response = await fetch('https://statly.live/api/v1/widget/{slug}');
const { status, uptime, monitors } = await response.json();