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.createdA new incident appeared on the provider's official feed (only if it started within the last 24 hours — historical backfills never alert).
incident.status_changedAn open incident moved through its lifecycle (investigating → identified → monitoring …).
incident.resolvedAn incident was resolved upstream, or disappeared from the provider's active feed.
provider.status_changedThe 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
- Open api.slack.com/apps → Create New App → From scratch — name it something like “OutageDeck Alerts” and pick your workspace.
- In the app's sidebar choose Incoming Webhooks and switch them On.
- Click Add New Webhook to Workspace and pick the channel that should receive outage alerts (e.g.
#outages). - Copy the generated URL — it looks like
https://hooks.slack.com/services/T…/B…/…. - 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
- In your server: Server Settings → Integrations → Webhooks → New Webhook.
- Pick the channel that should receive alerts.
- Click Copy Webhook URL (
https://discord.com/api/webhooks/…). - 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.
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.