Delivery Log
The delivery log records every notification attempt ChannelWatch makes. You can see which notifications succeeded, which are retrying, and which hit the circuit breaker — all from the web UI without digging through log files.
Viewing the log
Section titled “Viewing the log”Open the web UI at http://your-server-ip:8501 and go to Notifications > Delivery Log.
The log table shows one row per delivery attempt with these columns:
| Column | Description |
|---|---|
| Time | When the attempt was made |
| DVR | Which DVR server triggered the alert |
| Channel | The notification channel (Discord, Telegram, email, etc.) |
| Event type | The alert type (Channel Watching, Recording Events, etc.) |
| Status | sent, retry, failed, or circuit_open |
| Retries | How many attempts were made before the final status |
| Error | The error message on failure (empty on success) |
Filtering
Section titled “Filtering”Use the filter bar at the top of the log to narrow results by:
- DVR — show only notifications from a specific DVR server
- Channel — show only a specific notification provider
- Status — filter to
sent,retry,failed, orcircuit_open - Time range — last hour, last 24 hours, last 7 days, or a custom range
Retry behavior
Section titled “Retry behavior”When a notification fails to deliver, ChannelWatch retries automatically using exponential backoff. The retry schedule per channel is:
| Attempt | Delay before retry |
|---|---|
| 1st retry | 2 seconds |
| 2nd retry | 4 seconds |
| 3rd retry | 8 seconds |
| 4th retry | 16 seconds |
| 5th retry | 32 seconds |
After 5 failed attempts, the channel’s circuit breaker opens. No further retries are made until the circuit closes.
Retries are tracked per (DVR, channel) pair. A failure on your Discord channel does not affect Telegram delivery.
Circuit breaker
Section titled “Circuit breaker”The circuit breaker protects against repeated failures hammering a provider that is down or misconfigured.
How it works:
- After 5 consecutive failures on a
(DVR, channel)pair, the circuit opens. - While open, ChannelWatch skips delivery attempts for that pair and logs the status as
circuit_open. - After 5 minutes, the circuit closes automatically and delivery resumes.
- If the next attempt succeeds, the failure counter resets. If it fails again, the counter increments toward the next open threshold.
The circuit breaker state is visible in the delivery log. Rows with status circuit_open indicate the channel was skipped because the breaker was open at that moment.
Retention
Section titled “Retention”The delivery log keeps records for 30 days. Entries older than 30 days are pruned automatically by the nightly retention job. You cannot extend this window in v1.0.
If you need a longer audit trail, use the CSV export button at the top of the log page to download a snapshot before records age out.
Status reference
Section titled “Status reference”| Status | Meaning |
|---|---|
sent | Notification delivered successfully on the first attempt or after retries |
retry | Delivery failed; a retry is scheduled |
failed | All retry attempts exhausted; notification was not delivered |
circuit_open | Delivery skipped because the circuit breaker was open for this channel |
Troubleshooting
Section titled “Troubleshooting”All entries show failed for one channel
Section titled “All entries show failed for one channel”Check the error column for the specific failure reason. Common causes:
- Invalid credentials — webhook URL deleted, API token revoked, or bot removed from the channel. Update the provider settings under Settings > Notifications.
- Network unreachable — the ChannelWatch container cannot reach the notification service. Verify DNS resolution and outbound connectivity from the container.
- Rate limited — the provider rejected requests due to too many messages in a short window. The circuit breaker will reopen after 5 minutes.
Circuit breaker keeps reopening
Section titled “Circuit breaker keeps reopening”If the circuit opens, closes, and opens again repeatedly, the underlying delivery problem has not been resolved. Fix the root cause (credentials, network, provider configuration) rather than waiting for the circuit to cycle.
Log is empty
Section titled “Log is empty”The delivery log only records attempts made after v1.0 is running. If you just upgraded from v0.7, the log starts fresh. Trigger a test notification from Diagnostics > Alert Tests to confirm delivery is working and create the first log entry.
Related pages
Section titled “Related pages”- Provider Plugins — add third-party notification providers
- Discord — Discord webhook setup
- Diagnostics — test and verify your notification setup
- Hot Reload — apply notification config changes without restarting