---
title: PM Notification Preferences
---

# PM Notification Preferences

## What it is

**Status:** shipped. Part of the Mission Control PM system
(requires `missionControlEnabled`).

Per-board notification preferences for Mission Control. Each board can be muted,
promoted, configured for email delivery, and given a digest frequency.

## Where to find it

Preferences are set per board, one board at a time. The same preferences — plus the recent
PM notification events, the notification feed and marking a notification read — are reachable
over the CLI routes listed under For agents, which is how to reach them when no board is open
on screen.

## How it behaves

Users set preferences per board via four controls (the `PmNotificationPreference`
fields):

- **muted** -- suppress all notifications from a board.
- **promoted** -- elevate a board's notifications to higher visibility.
- **emailMode** -- email delivery mode (`off` / `instant` / `digest`).
- **digestFrequency** -- digest cadence (`daily` / `weekly`).

Notifications use session-scoped batching with per-board mute/promote routing
and a never-notify-actor filter -- the person who performed an action is never
notified about their own change. Preferences are stored locally and synced via
the PM push channel (`PM_NOTIFICATIONS_UPDATED`).

## For agents

### CLI routes

Registered in `cli-server-pm-notification-routes.ts`:

- `GET /pm/notification-preferences` -- read the current user's preferences.
- `PUT /pm/notification-preferences` -- update preferences for a board.
- `GET /pm/events` -- list recent PM notification events.
- `GET /pm/notifications` -- backend-proxy notification feed.
- `POST /pm/notifications/:id/read` -- mark a notification read.

### Where the wiring lives

- Push channel: `PM_NOTIFICATIONS_UPDATED` in `src/shared/ipc-channels/pm.ts`
- Feature registry: `pm_notifications` in `src/shared/feature-registry/types.ts`

## Related

Notification preferences belong to the Mission Control PM system, so
[mission-control.md](mission-control.md) is the parent page. The Ops Engine dashboard renders
a per-board notification preferences panel of its own, and is documented in
[pm-operations-engine.md](pm-operations-engine.md).
