Skip to content

Notification Preferences

Notification preferences let each user control which channels they receive alerts through and for what types of events. Preferences are rule-based — not simple toggles — so you can route incident escalations to Slack, acknowledgment receipts to email, and routine updates to in-app only.

How Preferences Work

Each user has a set of rules that map notification types to channels, plus a default channel for anything not explicitly covered:

  Incident escalated ──► Rule: [slack, email, voice]

  Incident acknowledged ──► Rule: [in_app, email]

  Alert resolved ──► (no rule) ──► Default: [in_app]

When an event triggers a notification, Alga checks the user's preference rules for a matching notification_type. If a rule matches, the notification goes to that rule's channels. If no rule matches, it goes to the default_channel.

Available Channels

ChannelDescriptionRequires
In-App (in_app)Notifications appear in the notification bell dropdownNothing (always available)
Email (email)Sent via the configured SMTP serverEmail integration set up
Slack (slack)Sent to your linked Slack account via DMSlack integration + account linked
Voice (voice)Phone call with IVR menu to acknowledgeTwilio or Telnyx configured
Mattermost (mattermost)Placeholder — accepted in rules but not yet deliveredMattermost integration

Link your accounts first

The Slack channel only works if you've linked your personal Slack account. Go to Profile → Connected Accounts to link Slack before configuring that channel in your preferences.

Voice opt-out

Each user has a separate voice opt-out flag (voice_opt_out). When enabled, voice calls are suppressed for that user even if a rule or escalation level includes the voice channel — useful for cost control or personal preference. Voice calls also require a phone number on file.

Preference Structure

json
{
  "rules": [
    {
      "notification_type": "incident_acknowledged",
      "channels": ["in_app", "email"]
    },
    {
      "notification_type": "incident_escalated",
      "channels": ["in_app", "email", "slack", "voice"]
    },
    {
      "notification_type": "alert_triggered",
      "channels": ["in_app"]
    }
  ],
  "default_channel": "in_app"
}

Common Notification Types

These are the most commonly configured notification types. The full list is available in the UI.

Notification TypeWhen It FiresRecommended Channels
incident_createdA new incident is openedIn-app, Slack
incident_escalatedEscalation moved to the next levelIn-app, Slack, Email, Voice
incident_acknowledgedSomeone acknowledged the incidentIn-app, Email
incident_resolvedThe incident is marked resolvedIn-app
alert_triggeredA new alert firedIn-app
investigation_completedAn AI investigation finishedIn-app

Managing Your Preferences

  1. Click your profile avatar in the top-right corner
  2. Select Notification Preferences
  3. Add or edit rules — pick a notification type and the channels you want
  4. Set your default channel (used when no rule matches)
  5. Click Save Preferences
  6. Use Send Test to verify in-app delivery works

Test notifications are in-app only

The Send Test button (POST /api/v1/users/me/notification-preferences/test) is idempotent and creates an in-app test notification — it does not exercise the email, Slack, or voice pipelines. To verify those channels are working, trigger a real notification (e.g., create a test incident assigned to yourself).

Best Practices

  • Reserve voice for escalations — phone calls are disruptive. Only enable voice for incident_escalated at higher levels, not for every alert
  • Use Slack for real-time awareness — keep your primary incident notifications in Slack so your team has shared visibility
  • Keep a default channel — always set default_channel to in_app so you never miss a notification type you forgot to configure
  • Different rules for different severities — route critical incidents (P1) to more channels than routine updates

API Endpoints

MethodPathAuthDescription
GET/api/v1/users/me/notification-preferencesSessionGet current user's preferences
PUT/api/v1/users/me/notification-preferencesSessionUpdate preferences
POST/api/v1/users/me/notification-preferences/testSessionSend test notification (in-app only, idempotent)

See Also

Released under the MIT License.