Receiver checks
duplicate-receiver
Level: error
Two receivers share the same name. Alertmanager uses the first definition and silently ignores the second, which is almost never intentional.
empty-receiver
Level: warn (info if it's the default receiver)
A receiver has no integration configured — no slack_configs, pagerduty_configs, webhook_configs, etc. Alerts routed here will be silently dropped.
Using an empty receiver as the default (to blackhole low-priority alerts) is intentional and triggers info instead of warn.
email-no-smarthost
Level: error
An email_configs entry has no smarthost and global.smtp_smarthost is not set. Alertmanager cannot send emails without knowing the SMTP server address.
webhook-no-url
Level: error
A webhook_configs entry has no url or url_file. Alertmanager cannot deliver alerts without a target URL — they fail silently.
pagerduty-no-routing-key
Level: error
A pagerduty_configs entry has no routing_key or routing_key_file. PagerDuty requires an integration key to accept events.
slack-no-api-url
Level: error
A slack_configs entry has no api_url or api_url_file, and global.slack_api_url is not set. Slack requires an incoming webhook URL to receive messages.
opsgenie-no-api-key
Level: error
An opsgenie_configs entry has no api_key or api_key_file, and global.opsgenie_api_key is not set. OpsGenie requires an API key to accept alerts.
msteams-no-webhook-url
Level: error
An msteams_configs entry has no webhook_url or webhook_url_file. MS Teams requires an incoming webhook URL to receive messages.
template-file-missing
Level: error (warn for globs)
A path in templates: does not exist on disk. Alertmanager loads template files at startup — a missing literal path causes startup failure; a glob that matches no files silently loads no templates.
This check only runs when linting a file (not stdin) and resolves paths relative to the config file's directory.
Tip
If your templates live at a runtime path (e.g. /etc/alertmanager/templates/) that isn't present in CI, add template-file-missing to your .amlint.yml ignore list.
unused-receiver
Level: info
A receiver is defined but never referenced by any route. It may be leftover from a previous config version.