Skip to main content

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.

By the end of this guide, you’ll have validated that your alert channels deliver correctly, your notification policies match as expected, and the full incident-to-notification pipeline works.
  • At least one alert channel — see First alert
  • At least one notification policy

Three levels of testing

Level 1: Test individual channels

Verify each channel’s configuration sends a test message:
devhelm alert-channels test <channel-id>
This sends a sample notification and reports success or failure. Test every channel — misconfigured webhook URLs and expired tokens are the most common causes of missed alerts.

Level 2: Dry-run notification policies

Test that your match rules evaluate correctly without creating a real incident:
curl -X POST https://api.devhelm.io/api/v1/notification-policies/<policy-id>/test \
  -H "Authorization: Bearer $DEVHELM_API_TOKEN"

Level 3: End-to-end with a failing monitor

Create a monitor designed to fail and trace the full pipeline:
1

Create a test monitor

devhelm monitors create \
  --name "Alert Pipeline Test (delete me)" \
  --type HTTP \
  --url https://httpstat.us/500 \
  --frequency 30 \
  --regions us-east
2

Wait for the incident

With default incident policy settings (2 consecutive failures), an incident should be confirmed within about 1 minute.
devhelm incidents list --status CONFIRMED
3

Verify notifications

Check that the expected notifications arrived at your channels. Also verify via the API:
curl "https://api.devhelm.io/api/v1/notification-dispatches?incident_id=<incident-id>" \
  -H "Authorization: Bearer $DEVHELM_API_TOKEN"
Each dispatch shows the channel, delivery status, and timestamp.
4

Test resolution notifications

Resolve the incident and verify resolution messages arrive:
devhelm incidents resolve <incident-id> \
  --body "Test complete"
5

Clean up

devhelm monitors delete <test-monitor-id>

Troubleshooting

Check that your notification policy actually matches the incident. Review match rules — an empty matchRules array (catch-all) is the safest starting point for testing.
The incident may be suppressed by an active maintenance window or resource group suppression. Check:
curl "https://api.devhelm.io/api/v1/maintenance-windows?filter=active" \
  -H "Authorization: Bearer $DEVHELM_API_TOKEN"
Check the delivery history for the channel:
curl "https://api.devhelm.io/api/v1/alert-channels/<channel-id>/deliveries" \
  -H "Authorization: Bearer $DEVHELM_API_TOKEN"
Common causes: expired webhook URL, revoked API key, rate limiting from the destination.
If requireAck is set on a step and someone acknowledged, the chain stops. Check dispatch acknowledgment status. Also verify the delayMinutes value — the chain waits that long before advancing.

Next steps

Alert channels

Channel types and delivery behavior.

Notification policies

Match rules, priority, and evaluation order.

Tiered escalation

Build multi-step escalation chains.