MCM-18 — Notification Preferences
Users control which events they're notified about and through which channels.
MCM-18 — Notification Preferences
← Back to Notification System overview
As a platform user (any persona),
I want to control which events I am notified about and through which channels,
so that I only receive alerts relevant to my role and am not overwhelmed by noise.
Acceptance Criteria
- A "Notification Preferences" section exists in the user's Profile Settings page.
- Preferences are configurable per category (see Notification Categories) and per channel (In-App, Web Push, Email).
- Preferences default to the values in Default Preferences below.
- Changes take effect immediately without a page reload.
- An admin can set organisation-wide defaults; individual users can override them for their own account only.
- The preferences UI shows a three-column toggle matrix: category rows × channel columns.
Default Preferences
| Category | In-App | Web Push | |
|---|---|---|---|
| Budget & Cost | Enabled | Enabled | High only |
| Recommendations | Enabled | Disabled | Disabled |
| Discovery | Enabled | High only | High only |
| Governance | Enabled | Enabled | High only |
| SecOps | Enabled | Enabled | Enabled |
| Orchestration | Enabled | Enabled | High only |
| Module Usage Plans | Enabled | Enabled | Enabled |
| Billing | Enabled | Enabled | Enabled |
| User Management | Enabled | Disabled | Disabled |
| System | Enabled | Disabled | High only |
Technical Design
Preferences are stored as an optional organisation-wide default plus per-user overrides that always take precedence when present, covering every category × channel (In-App, Web Push, Email) combination, matching the values in Default Preferences above. The frontend reads and writes the current user's effective preferences via GET/PUT /api/notification-preferences, with PUT /api/admin/notification-preferences/defaults reserved for admin-set organisation-wide defaults; changes apply immediately, with no reload. Every delivery path (MCM-14 — Real-Time In-App Notification Bell, MCM-16 — Web Push Notification, MCM-17 — Email Notification) checks this preference set before sending, so a disabled category/channel combination is a no-op at send time, not just a UI-level filter.
UI / Frontend Changes
- New "Notification Preferences" section in the user's Profile Settings page.
- Three-column toggle matrix: category rows x In-App / Web Push / Email columns, reflecting the Default Preferences table.
- Admin-only view for setting organisation-wide defaults, separate from the per-user override view.
- Toggle changes apply immediately (optimistic UI update) with no page reload or save button.