Platform
Notifications

Notifications

Configure how your team receives alerts when monitors fail or incidents occur.

Alert Rules

Alert rules determine when and how notifications are sent:

  1. Go to Settings β†’ Notifications β†’ Alert Rules
  2. Create a rule with:
    • Name: Descriptive name for the rule
    • Triggers: Which events trigger the alert (monitor down, incident created, etc.)
    • Channels: Which notification channels to use
    • Cooldown: Minimum time between repeated alerts (prevents alert fatigue)

Supported Events

EventDescription
monitor.downMonitor fails from multiple regions
monitor.upMonitor recovers after being down
monitor.degradedMonitor reports slow responses
incident.createdNew incident is created
incident.updatedIncident status is updated
incident.resolvedIncident is resolved
maintenance.scheduledMaintenance window is scheduled
maintenance.startedMaintenance window begins
maintenance.completedMaintenance window ends

Alerts are automatically suppressed during active maintenance windows.


Email

Send alerts to team members or custom email addresses.

Setup

  1. Go to Settings β†’ Notifications β†’ Email
  2. Add recipient email addresses
  3. Configure which events to notify

Features

  • HTML formatted emails with status badges
  • One-click acknowledge links
  • Subscriber notifications for public incidents

Webhook

Send HTTP POST requests to your own endpoints.

Setup

  1. Go to Settings β†’ Integrations β†’ Webhooks
  2. Enter your endpoint URL
  3. Save to generate a signing secret
  4. Use the secret to verify incoming webhooks

Signature Verification

All webhooks include a X-Statly-Signature header:

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}`)
  );
}
 
// Express middleware
app.post('/webhook', express.raw({ type: 'application/json' }), (req, res) => {
  const signature = req.headers['x-statly-signature'];
  if (!verifyWebhook(req.body, signature, process.env.WEBHOOK_SECRET)) {
    return res.status(401).send('Invalid signature');
  }
  const event = JSON.parse(req.body);
  // Handle event...
  res.status(200).send('OK');
});

Slack

Post alerts to Slack channels using incoming webhooks.

Setup

  1. Create a Slack app at api.slack.com/apps (opens in a new tab)
  2. Enable Incoming Webhooks
  3. Add a webhook to your workspace and select a channel
  4. Copy the webhook URL
  5. In Statly: Settings β†’ Integrations β†’ Slack
  6. Paste the webhook URL and save

Message Format

Alerts are formatted with:

  • Color-coded attachments (red for down, green for up)
  • Monitor/incident details
  • Direct links to Statly dashboard

Discord

Send alerts to Discord channels.

Setup

  1. In Discord, go to Server Settings β†’ Integrations β†’ Webhooks
  2. Create a new webhook and select a channel
  3. Copy the webhook URL
  4. In Statly: Settings β†’ Integrations β†’ Discord
  5. Paste the webhook URL and save

Message Format

Alerts use Discord embeds with:

  • Color-coded borders
  • Timestamp
  • Monitor/incident details

PagerDuty

Trigger and resolve PagerDuty incidents automatically.

Setup

  1. In PagerDuty, create a new Events API v2 integration
  2. Copy the Integration Key
  3. In Statly: Settings β†’ Integrations β†’ PagerDuty
  4. Paste the integration key and save

Features

  • Auto-trigger: Creates PagerDuty incidents when monitors go down
  • Auto-resolve: Resolves PagerDuty incidents when monitors recover
  • Deduplication: Uses monitor ID as dedup key to prevent duplicates
  • Severity mapping: Maps Statly severity to PagerDuty urgency

Microsoft Teams

Post alerts to Microsoft Teams channels.

Setup

  1. In Teams, go to the channel β†’ Connectors
  2. Add Incoming Webhook
  3. Configure the webhook name and copy the URL
  4. In Statly: Settings β†’ Integrations β†’ Teams
  5. Paste the webhook URL and save

Message Format

Alerts use Adaptive Cards with:

  • Color-coded themes
  • Action buttons
  • Structured facts

Opsgenie

Create and manage Opsgenie alerts.

Setup

  1. In Opsgenie, go to Settings β†’ Integrations
  2. Add a new API integration
  3. Copy the API Key
  4. In Statly: Settings β†’ Integrations β†’ Opsgenie
  5. Enter:
    • API Key
    • Region (US or EU)
    • Team ID (optional)
    • Priority (P1-P5)

Features

  • Auto-close: Closes alerts when monitors recover
  • Deduplication: Uses alias to prevent duplicate alerts
  • Team routing: Route alerts to specific Opsgenie teams
  • Priority mapping: Set alert priority based on monitor severity

SMS (Twilio)

Send text message alerts via Twilio.

Setup

  1. Create a Twilio account (opens in a new tab)
  2. Get a phone number with SMS capability
  3. Find your Account SID and Auth Token in the Twilio console
  4. In Statly: Settings β†’ Integrations β†’ SMS
  5. Enter:
    • Account SID
    • Auth Token
    • From Number (your Twilio number)
    • Phone Numbers (recipients, comma-separated)

Message Format

SMS messages are concise (under 160 characters):

[DOWN] Production API - Connection timeout from 3 regions
⚠️

SMS messages incur Twilio charges. Configure alert rules carefully to avoid unexpected costs.


Alert Cooldowns

Prevent alert fatigue with cooldown periods:

SettingDescription
Cooldown PeriodMinimum time between repeated alerts for the same monitor
Recovery DelayWait for X consecutive successes before sending "up" alert

Example: A 5-minute cooldown with 2-success recovery delay means:

  1. Monitor fails β†’ Alert sent immediately
  2. Monitor fails again 2 minutes later β†’ No alert (cooldown active)
  3. Monitor recovers β†’ Wait for 2 more successful checks
  4. 2 consecutive successes β†’ "Up" alert sent

Testing Notifications

Test your notification setup:

  1. Go to Settings β†’ Integrations
  2. Click Test next to any configured channel
  3. A test alert will be sent immediately

This helps verify:

  • Webhook URLs are correct
  • API keys are valid
  • Messages are formatted correctly