Documentation Index Fetch the complete documentation index at: https://docs.devhelm.io/llms.txt
Use this file to discover all available pages before exploring further.
The alertChannels section of devhelm.yml defines where incident notifications are sent. Each channel has a name and a config block whose channelType discriminator selects the integration.
Common fields
Field Type Required Description namestring Yes Unique channel name (used to reference from monitors and policies) configobject Yes Type-specific configuration. Must include channelType.
The schema is .strict() — any extra top-level keys (like a bare type:) are
rejected at validate / plan / deploy. Always nest the integration kind inside
config.channelType.
Channel types
Slack
alertChannels :
- name : Slack Alerts
config :
channelType : slack
webhookUrl : ${SLACK_WEBHOOK_URL}
mentionText : "@channel"
Config field Required Description channelTypeYes Always slack webhookUrlYes Slack incoming webhook URL mentionText— Text to mention (e.g., @channel, @here, <@U123>)
alertChannels :
- name : PagerDuty On-Call
config :
channelType : pagerduty
routingKey : ${PAGERDUTY_ROUTING_KEY}
severityOverride : critical
Config field Required Description channelTypeYes Always pagerduty routingKeyYes PagerDuty Events API v2 routing key severityOverride— Override severity sent to PagerDuty
OpsGenie
alertChannels :
- name : OpsGenie
config :
channelType : opsgenie
apiKey : ${OPSGENIE_API_KEY}
region : us
Config field Required Description channelTypeYes Always opsgenie apiKeyYes OpsGenie API integration key region— OpsGenie region: us or eu
Discord
alertChannels :
- name : Discord Alerts
config :
channelType : discord
webhookUrl : ${DISCORD_WEBHOOK_URL}
mentionRoleId : "123456789"
Config field Required Description channelTypeYes Always discord webhookUrlYes Discord webhook URL mentionRoleId— Discord role ID to mention
Microsoft Teams
alertChannels :
- name : Teams Channel
config :
channelType : teams
webhookUrl : ${TEAMS_WEBHOOK_URL}
Config field Required Description channelTypeYes Always teams webhookUrlYes Teams incoming webhook URL
Email
alertChannels :
- name : Ops Email
config :
channelType : email
recipients :
- ops@example.com
- oncall@example.com
Config field Required Description channelTypeYes Always email recipientsYes List of email addresses (non-empty)
Webhook
alertChannels :
- name : Custom Webhook
config :
channelType : webhook
url : https://webhook.site/00000000-0000-0000-0000-000000000000
signingSecret : ${WEBHOOK_SECRET}
customHeaders :
X-Source : devhelm
Config field Required Description channelTypeYes Always webhook urlYes HTTP endpoint URL signingSecret— HMAC signing secret for payload verification customHeaders— Custom headers sent with each request
Referencing channels
Monitors and notification policies reference channels by name:
monitors :
- name : API Health
type : HTTP
config :
url : https://api.example.com/health
alertChannels : [ Slack Alerts , PagerDuty On-Call ]
notificationPolicies :
- name : Critical Alerts
escalation :
steps :
- channels : [ Slack Alerts ]
- channels : [ PagerDuty On-Call ]
delayMinutes : 5
Using environment variables
Store sensitive values (webhook URLs, API keys, routing keys) as environment variables and reference them with ${VAR} syntax. Set them in your shell or CI secrets — they’re resolved at deploy time.
Next steps
Notification policies Route incidents through escalation chains.
Integrations Setup guides for each channel type.