Skip to main content
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.