Skip to content

Alerts

Outage alerts on Slack, Discord, webhooks, and email

OutageDeck checks every provider's official status source about every 10 minutes and fires an alert the moment something changes. This page is the whole setup: what fires, how to wire each channel, and exactly what we send.

What triggers an alert

Events are detected by diffing each ingestion run against the last known state, so an alert means something actually changed — not that a page was re-crawled. Four event types exist:

  • incident.created

    A new incident appeared on the provider's official feed (only if it started within the last 24 hours — historical backfills never alert).

  • incident.status_changed

    An open incident moved through its lifecycle (investigating → identified → monitoring …).

  • incident.resolved

    An incident was resolved upstream, or disappeared from the provider's active feed.

  • provider.status_changed

    The provider's overall status changed (e.g. Operational → Partial outage) — never fired from or to an unknown state.

Each subscription can watch all providers (leave the scope empty), specific providers (aws, cloudflare), or specific services (aws-ec2). A service-scoped subscription only receives incidents touching those services — provider-level status flips are deliberately skipped.

Slack — step by step

  1. Open api.slack.com/apps Create New AppFrom scratch — name it something like “OutageDeck Alerts” and pick your workspace.
  2. In the app's sidebar choose Incoming Webhooks and switch them On.
  3. Click Add New Webhook to Workspace and pick the channel that should receive outage alerts (e.g. #outages).
  4. Copy the generated URL — it looks like https://hooks.slack.com/services/T…/B…/….
  5. On your account page, create a subscription with channel Slack, paste the URL as the target, then hit Send test — the test message lands in the channel within seconds.

Alerts arrive as a one-line summary with a link back to the incident timeline on OutageDeck.

Discord — step by step

  1. In your server: Server Settings → Integrations → Webhooks → New Webhook.
  2. Pick the channel that should receive alerts.
  3. Click Copy Webhook URL (https://discord.com/api/webhooks/…).
  4. Create a subscription with channel Discord on your account page, paste the URL, and hit Send test.

Discord alerts render as an embed with a severity color and a link to the incident.

Generic webhooks — the JSON contract

Point a subscription at any HTTPS endpoint you control and OutageDeck POSTs this envelope on every matching event. The shape is versioned like the public API (meta.version: "v1") and will not change under you:

POST body — incident.created example

{
  "meta": {
    "version": "v1",
    "kind": "outagedeck.alert",
    "generatedAt": "2026-07-12T09:40:00.000Z"
  },
  "data": {
    "event": {
      "key": "incident:aws:INC-123:investigating",
      "type": "incident.created",
      "occurredAt": "2026-07-12T09:40:00.000Z",
      "summary": "🔴 AWS: new incident — Increased error rates in us-east-1 (Investigating, Critical severity)",
      "url": "https://outagedeck.com/incidents/aws-increased-error-rates-us-east-1-2026-07-12",
      "provider": { "id": "provider_aws", "slug": "aws", "name": "AWS" },
      "incident": {
        "id": "incident_aws_INC-123",
        "slug": "aws-increased-error-rates-us-east-1-2026-07-12",
        "title": "Increased error rates in us-east-1",
        "status": "investigating",
        "previousStatus": null,
        "severity": "critical",
        "startedAt": "2026-07-12T09:31:00.000Z",
        "officialUrl": "https://health.aws.amazon.com/health/status",
        "affectedServiceSlugs": ["aws-ec2", "aws-s3"]
      },
      "providerStatus": null
    }
  }
}

For provider.status_changed events, incident is null and providerStatus carries { "from": "...", "to": "..." }. Answer with any 2xx within 10 seconds; the body is ignored.

Email

Pick the Emailchannel and alerts go to your account address — the same one you sign in with. Each email carries the summary line, a link to the incident on OutageDeck, and the provider's official status-page entry when one exists.

Delivery guarantees

  • Exactly once per event — every (subscription, event) pair is claimed in a delivery ledger before sending, so overlapping check runs can never double-notify you.
  • 10-second timeout, one retry — failed deliveries (5xx, 429, network) are retried once; the outcome is recorded either way.
  • Flap suppression — an incident transition is keyed by its target state, so the same change observed twice never alerts twice. Provider-level status keys reset daily.
  • Test any time — every subscription has a Send test button on your account page that fires a clearly-labeled synthetic alert through the exact production pipeline, so you can verify the wiring in seconds instead of waiting for a real outage.

Plans

Alerts are part of the paid tiers: Pro includes 5 alert subscriptions, Business includes 20. Every channel is available on both. See pricing — checkout takes a minute and your API key plus alert access are live right after.