Alert Delivery Health
An alert channel that has never worked looks exactly like an alert channel with nothing to report. Both are quiet.
Alert Delivery Health makes that distinction visible. It reports, per channel, whether alerts are really arriving — and tells you when a channel has been accepting traffic and delivering none of it.
Why this exists
A misconfigured webhook does not announce itself. The rule saves cleanly, the channel appears in your list, and every alert it generates disappears. You find out during an incident, when the page never arrives.
The verdict that matters most here is broken: the channel has had traffic and has never once delivered successfully. That is a configuration error that has been silently discarding alerts since the day it was created.
The four verdicts
| Status | Meaning | What to do |
|---|---|---|
| healthy | Recent successful delivery, no suppression | Nothing |
| degraded | Some deliveries failed, but the channel has worked before | Review the last error — often a transient outage at the destination |
| suppressed | The circuit breaker is open; deliveries are being dropped right now | See Suppression below |
| broken | Traffic, but not a single successful delivery, ever | Verify the target and credentials — this channel has never worked |
Each channel also returns a plain-language remediation string, so the next step is on
screen rather than in a runbook.
Suppression and circuit breakers
When a channel fails repeatedly, Infracast opens a circuit breaker and stops attempting delivery. This protects both your alerting pipeline and the failing destination from a retry storm.
Suppression distinguishes two causes, because they need different responses:
- Permanent — the destination rejected the delivery outright: bad credentials, a revoked token, a deleted webhook. Retrying will never succeed. Fix the channel configuration on the rule; saving the rule clears the suppression.
- Transient — repeated but recoverable failures, such as an unreachable endpoint. Delivery retries automatically after a cooldown.
suppressed_now reports how many deliveries have been dropped since the breaker opened,
so you know what you have missed.
Resetting a breaker manually
If you have fixed the underlying problem and do not want to wait for the cooldown:
POST /api/v1/tenants/{tenantID}/alerts/rules/{ruleID}/reset-breaker
Checking delivery health
GET /api/v1/tenants/{tenantID}/alerts/delivery-health?window_days=30
The response includes per-channel detail plus summary counters (healthy, degraded,
suppressed, broken, tripped_channels) so a dashboard can badge a nav item without
walking the full list.
{
"window_days": 30,
"healthy": 3,
"degraded": 1,
"suppressed": 0,
"broken": 1,
"tripped_channels": 0,
"channels": [
{
"channel_type": "webhook",
"status": "broken",
"breaker_open": false,
"remediation": "This channel has never successfully delivered an alert. Verify the target and credentials."
}
]
}
The verdict survives retention
Alert history is pruned on a retention schedule. Delivery health deliberately does not derive "has this channel ever worked?" from that history.
This matters more than it sounds. If the verdict were computed from retained rows, then once a channel's history aged out:
- a channel that last worked months ago would masquerade as one that had never worked, and
- a genuinely broken but low-traffic channel would disappear from the view entirely once its failure rows were pruned — exactly the channel you most need to see.
Instead, "has ever delivered" is recorded durably when it happens. Retention can prune the detail; it cannot erase the verdict.
Recommended practice
Check delivery health before you need the alerts, not after. A channel added months ago and never exercised is the most likely one to be broken, and the least likely to be noticed — because silence from a working channel and silence from a broken one look identical until you look here.
See also
- Slack integration — configuring a Slack alert channel
- Microsoft Teams integration — configuring a Teams alert channel
- Webhooks API — webhook delivery and payload format
Large scans send one summary, not hundreds of alerts
When a single scan produces more than 10 findings that match a rule, each of the rule's channels receives one summary instead of one alert per finding. The summary shows the count by severity and by framework, lists the most severe findings, and links to the full list. Resolved findings are always reported as a summary.
The first scan of a workspace is labelled Initial baseline: every finding is new only because nothing existed before. Later scans alert only on changes — findings that are new, or that were resolved and have come back.
Finding alerts cover only the frameworks enabled in the rule creator's settings — the same frameworks shown on their Dashboard. If no frameworks are selected, all are included.
Other alert types (for example Infrastructure appeared) are limited to 20 per rule and channel every 10 minutes. Anything beyond that is recorded once in alert history as throttled.
Scheduled scans that keep failing
When a scheduled discovery scan fails 3 times in a row, Infracast raises a Scan Failed alert with the error message, how many times it has failed, when it last succeeded and when it will retry next. If the scan keeps failing, a reminder follows every 5 further failures, so a broken schedule cannot go quiet. When the scan works again, a Scan Recovered alert follows.
A single failure is not alerted: throttling and brief network errors usually clear on the next retry.
To receive these, create an alert rule for Scan Failed (and optionally Scan Recovered) under Alerts. The Connectors → Jobs schedule list also shows each schedule's status, and marks one that is failing with the number of failures in a row.
The default "Scheduled scan failures" rule
Every tenant starts with an alert rule named Scheduled scan failures. It emails all of the tenant's active admins when a scheduled scan fails 3 times in a row (with reminders while it keeps failing) and when it recovers. Admins added later are included automatically.
You can edit it — for example to send to a Slack channel instead — or delete it. A deleted default rule is not re-created.
When creating your own email rule, you can enter tenant-admins as the address to send to
every active tenant admin.