Platform
Integrations

Integrations

Connect Statly with your existing monitoring, alerting, and communication tools.

Notification Channels

Statly supports 8 notification channels for alerting your team:

ChannelDescription
EmailSend alerts to team members or custom addresses
WebhookPOST events to any HTTP endpoint with HMAC signature
SlackPost to Slack channels via incoming webhooks
DiscordSend alerts to Discord channels
PagerDutyTrigger and resolve PagerDuty incidents
Microsoft TeamsPost to Teams channels via connectors
OpsgenieCreate and manage Opsgenie alerts
SMSSend text messages via Twilio

Webhooks

Send incident events to any HTTP endpoint with signature verification.

Configuration

  1. Go to Settings → Integrations → Webhooks
  2. Add your endpoint URL
  3. Save to generate a signing secret
  4. 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.rss

Compatible with:

  • Slack RSS app
  • Microsoft Teams
  • RSS readers
  • Custom aggregators

Status Badges

Embed uptime badges in your README or website:

![Uptime](https://statly.live/api/v1/badge/{slug})
![API Status](https://statly.live/api/v1/badge/{slug}/{monitorId})

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();