Skip to content

Notification Routing

Route specific event types to specific notification channels using configurable rules.

Overview

Notification routing extends the basic notification preferences by letting you create granular rules that direct events to the right channel based on conditions. Instead of sending all alerts to one Slack channel, you can route critical drift alerts to PagerDuty, scan completions to a Slack channel, and weekly summaries to email.

Routing vs. Basic Notifications

FeatureBasic NotificationsNotification Routing
Channel selectionOne channel per typeMultiple channels per rule
ConditionsToggle on/off per eventFilter by severity, provider, resource type, event type
FlexibilityAll-or-nothingFine-grained per-event-type routing
Use caseSimple setupsTeams with multiple channels and escalation needs

Creating a Routing Rule

  1. Go to Settings > Integrations > Notification Routing
  2. Click Create Route
  3. The route editor modal opens with three sections: Conditions, Destination, and Settings

Conditions

Define when this route should fire. A route matches when all conditions are met.

ConditionOptions
Event TypeDrift detected, Scan completed, Scan failed, Runner offline, Discovery completed, Discovery failed, Guardrail triggered, PR created, PR merged
SeverityCritical, High, Medium, Low, Any
ProviderAWS, Azure, GCP, Any
Resource TypeFree text — e.g., aws_security_group, azurerm_virtual_machine

TIP

Leave a condition set to Any to match all values for that field. For example, setting Severity to Any means the route fires regardless of drift severity.

Destinations

Select one or more channels to receive the notification when conditions match:

DestinationRequirements
SlackWebhook URL or Bot Token configured in Notifications
Microsoft TeamsIncoming Webhook configured in Notifications
PagerDutyEvents API v2 routing key configured
EmailOne or more Alert Groups configured
WebhookCustom webhook endpoint configured

If using a Slack Bot Token, you can select a specific Slack channel for this route.

Settings

  • Name — A descriptive label (e.g., "Critical drift to PagerDuty")
  • Enabled — Toggle the route on or off without deleting it
  • Description (optional) — Notes about the route's purpose

Managing Routes

Route List

The routing page shows all configured routes in a table:

ColumnDescription
NameRoute label
ConditionsSummary of event type, severity, provider filters
DestinationChannel name(s)
StatusEnabled or Disabled badge
ActionsEdit, Test, Delete

Editing a Route

Click the pencil icon on any route to re-open the route editor modal. Changes take effect immediately after saving.

Enabling and Disabling

Toggle the Enabled switch on any route to temporarily disable it without losing the configuration. Disabled routes are shown with a muted appearance.

Testing a Route

Click the Test button to send a synthetic test event through the route. This verifies that the destination channel receives the notification correctly.

WARNING

Test events are clearly labeled as "[TEST]" in the destination channel. PagerDuty test events are sent with info severity to avoid triggering real pages.

Deleting a Route

Click the trash icon and confirm to permanently delete a route.

Route Evaluation Order

When an event occurs, Controlinfra evaluates all enabled routes. Every route whose conditions match the event will fire. Routes are independent — there is no "first match wins" behavior.

If no routing rules match an event, it falls back to the basic notification preferences configured in Settings > Integrations > Notifications.

Example Configurations

Route critical drift to PagerDuty

FieldValue
NameCritical drift escalation
Event TypeDrift detected
SeverityCritical
ProviderAny
DestinationPagerDuty

Route low-severity drift to Slack

FieldValue
NameLow severity to Slack
Event TypeDrift detected
SeverityLow
ProviderAny
DestinationSlack (#infra-low-priority)

Route GCP scan failures to email

FieldValue
NameGCP scan failure alert
Event TypeScan failed
SeverityAny
ProviderGCP
DestinationEmail (Platform Engineers group)

Route guardrail alerts to Teams

FieldValue
NameGuardrail violations
Event TypeGuardrail triggered
SeverityHigh, Critical
ProviderAny
DestinationMicrosoft Teams (#security-alerts)

Next Steps