First match wins (unless continue)
orderWithin a matched route, children are evaluated top to bottom. The alert takes the FIRST matching sibling and stops — later siblings are skipped unless continue: true is set.
Trap
# Order matters — the broad rule above shadows the specific one
routes:
- receiver: catch-all # matches everything below
matchers: ['severity=~".*"']
- receiver: db-pager # NEVER reached
match: { service: database } Fix
# Specific first, broad last — or use continue
routes:
- receiver: db-pager
match: { service: database }
- receiver: catch-all
matchers: ['severity=~".*"']