Skip to main content
The notificationPolicies section of devhelm.yml controls how incidents are routed to alert channels. Each policy has match rules that filter incidents and an escalation chain that defines notification steps.

Policy fields

FieldTypeRequiredDescription
namestringYesUnique policy name
enabledbooleanWhether the policy is active (default: true)
priorityintegerEvaluation priority (higher = evaluated first, default: 0)
matchRulesobject[]Rules that filter which incidents trigger this policy
escalationobjectYesEscalation chain definition

Match rules

Match rules filter which incidents trigger the policy. If no rules are defined, the policy matches all incidents.
notificationPolicies:
  - name: Production Alerts
    matchRules:
      - type: monitor_tag_in
        values: [production]
      - type: region_in
        regions: [us-east, eu-west]
FieldTypeRequiredDescription
typestringYesRule type: severity_gte, monitor_id_in, region_in, incident_status, monitor_type_in, service_id_in, resource_group_id_in, component_name_in, monitor_tag_in
valuestringSingle match value (e.g. severity for severity_gte)
valuesstring[]Multiple match values (e.g. tag names for monitor_tag_in)
monitorNamesstring[]Monitor names for monitor_id_in (resolved to IDs at deploy time)
regionsstring[]Regions for region_in

Escalation chain

The escalation chain defines an ordered sequence of notification steps:
notificationPolicies:
  - name: Critical Alerts
    priority: 10
    escalation:
      steps:
        - channels: [Slack Alerts]
          delayMinutes: 0
        - channels: [PagerDuty On-Call]
          delayMinutes: 5
          requireAck: true
          repeatIntervalSeconds: 300
      onResolve: Slack Alerts
      onReopen: PagerDuty On-Call

Steps

FieldTypeRequiredDescription
channelsstring[]YesAlert channel names to notify
delayMinutesintegerMinutes to wait before this step (default: 0)
requireAckbooleanRequire acknowledgement before escalating
repeatIntervalSecondsintegerSeconds between repeated notifications

Lifecycle hooks

FieldTypeDescription
onResolvestringChannel name to notify when incident resolves
onReopenstringChannel name to notify when incident reopens

Priority and evaluation

Policies are evaluated in descending priority order. The first matching policy handles the incident. Use priority to ensure specific policies (e.g., production-only) take precedence:
notificationPolicies:
  - name: Production Critical
    priority: 20
    matchRules:
      - type: monitor_tag_in
        values: [production]
    escalation:
      steps:
        - channels: [PagerDuty On-Call]

  - name: Default Alerts
    priority: 0
    escalation:
      steps:
        - channels: [Slack Alerts]

Complete example

notificationPolicies:
  - name: Tiered Escalation
    enabled: true
    priority: 10
    matchRules:
      - type: monitor_tag_in
        values: [production, critical]
    escalation:
      steps:
        - channels: [Slack Alerts]
          delayMinutes: 0
        - channels: [PagerDuty On-Call]
          delayMinutes: 5
          requireAck: true
        - channels: [Ops Email]
          delayMinutes: 15
      onResolve: Slack Alerts

Next steps

Alert channels

Define the channels referenced in your policies.

Notification policies reference

Understanding match rules and escalation logic.