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: tag
        values: [production]
      - type: region
        regions: [us-east, eu-west]
FieldTypeRequiredDescription
typestringYesRule type (e.g., tag, monitor_name, region)
valuestringSingle match value
valuesstring[]Multiple match values
monitorNamesstring[]Monitor names to match (resolved to IDs)
regionsstring[]Regions to match

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: tag
        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: tag
        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.