Skip to content

Per-DVR Notification Routing

By default, every alert from every DVR goes to every notification channel you have configured. Per-DVR notification routing lets you change that. You can send alerts from your living room DVR to Pushover, alerts from your basement DVR to a Discord channel, and skip notifications entirely for a test server - all from a single configuration screen.

Configure at least one DVR under Settings > General and a destination under Settings > Notifications, then go to Settings > Routing. On mobile, choose Routing from the Settings section selector. The matrix is a grid where:

  • Rows are your DVR servers
  • Columns are event types (Channel Watching, VOD Watching, Recording Events, Disk Space, DVR Health)
  • Cells contain checkboxes for each notification channel you have configured

Each cell lets you choose which notification channels receive that event type from that DVR. You can enable any combination - one channel, multiple channels, or none. On narrow screens, swipe across the matrix to reach the remaining event types. Choose Save Settings when finished.

ChannelWatch notification routing matrix showing per-DVR switches for channel, VOD, recording, disk, and DVR Health alert destinations
Routing matrixUse the routing matrix to confirm which alert types from each DVR are sent to each configured destination. Captured from ChannelWatch v1.6.0 with safe demo data.View full-size screenshot
DVR server Channel Watching VOD Watching Recording Events Disk Space DVR Health
Living Room Pushover, Discord Pushover Pushover Pushover Pushover
Basement Discord (none) Discord Discord Discord
Test Server (none) (none) (none) (none) (none)

In this example, the test server generates no notifications at all, the basement DVR skips VOD alerts, and the living room DVR sends channel watching alerts to both Pushover and Discord.

When you add a new DVR server, all event types are enabled for all configured notification channels. This preserves the behavior from v0.7 where all alerts went to all channels. You only need to open the routing matrix if you want to change the defaults.

When no explicit route exists, newly configured notification channels receive every event type. If you have saved an explicit route for an event, a new destination stays disabled for that event until you select it in the matrix. Existing destination choices are not affected.

Clicking Save in the routing matrix writes the routing configuration to settings.json as a notification_routing JSON object. The structure maps each DVR ID to the event keys channel, vod, recording, disk, and health. Each event maps destination keys to boolean values:

{
"notification_routing": {
"dvr_17c621dc": {
"channel": { "pushover": true, "discord": true },
"vod": { "pushover": true, "discord": false },
"recording": { "pushover": true, "discord": false },
"disk": { "pushover": true, "discord": false },
"health": { "pushover": true, "discord": false }
},
"dvr_fff6d91d": {
"channel": { "pushover": false, "discord": true },
"vod": { "pushover": false, "discord": false },
"recording": { "pushover": false, "discord": true },
"disk": { "pushover": false, "discord": true },
"health": { "pushover": false, "discord": true }
}
}
}

Saved routes normally include every configured destination. If an older explicit event map omits a destination, ChannelWatch treats that destination as disabled.

Routes are keyed by the saved DVR ID. New canonical IDs use dvr_ followed by the first eight hexadecimal characters of md5(normalized_host:port). Existing saved entries can keep their ID when edited. If you remove and re-add a DVR under a new identity, the old routes do not transfer automatically. Check the matrix after changing connection entries. See Editing a server.

What routing controls and what it does not

Section titled “What routing controls and what it does not”

The routing matrix controls which event types from which DVRs reach which provider types. Alerts are scoped per DVR.

Provider destinations are configured once per runtime and remain global. Every DVR that routes to Pushover sends to the same Pushover account. Every DVR that routes to Discord uses the same Discord webhook for that ChannelWatch instance. You cannot send DVR-A alerts to one Pushover account and DVR-B alerts to a different Pushover account within a single ChannelWatch instance.

If you need strict per-DVR provider isolation, run a separate ChannelWatch instance for each DVR with its own provider credentials.

Saving the matrix persists the routes and signals a core reload. The v1.6.5 Settings UI also requests a monitoring-core restart, then refreshes the browser. Wait for the DVRs to reconnect before checking a later alert. No image pull or container recreation is required. See Hot Reload.

To silence a DVR while keeping its monitoring and history, uncheck destinations for its event types in the matrix or use per-DVR alert overrides under Settings > Alerts. The saved server model supports disabling a connection through advanced configuration, but the General form does not expose an Enabled switch in v1.6.5.

An alert fired but I didn’t receive a notification

Check the routing matrix for the DVR that triggered the alert. If the cell for that event type is empty (no channels checked), no notification is sent. This is expected behavior, not a bug.

I’m receiving alerts from a server I thought I silenced

Open the routing matrix and verify the server’s row. If any cells still have channels checked, those combinations can still send notifications when their alert type is enabled. Uncheck all destinations for that server’s events, then save the settings.

Routing rules disappeared after changing a DVR’s host or port

Check whether the saved DVR ID changed, particularly if you removed and re-added the connection. Routes stay keyed to the old identity. Reconfigure the matrix for a new entry and see Adding DVR Servers for identity guidance.