Skip to content

Settings — Notifications

Sublarr’s notification system is built on Apprise — one config file, 80+ services. Configure a channel, pick which events should fire it, optionally customise the message template, and you’re done. Quiet Hours suppress all notifications during a configurable window.

Each channel is one Apprise URL plus a label. Apprise URL format depends on the destination service:

ServiceApprise URL example
Discorddiscord://avatar/webhookID/webhookToken
Slackslack://TokenA/TokenB/TokenC
Telegramtgram://bottoken/ChatID
Emailmailto://user:[email protected]:587
Pushoverpover://userkey/apptoken
Webhook (custom JSON)json://example.com/path
Apprise Serverapprise://host/notify/tag

The full list lives at github.com/caronc/apprise/wiki.

FieldEffect
LabelDisplay name. Shown in event-routing rules.
URLApprise URL (see above).
TagsComma-separated tag list. Events routed by tag intersection.
TestSends a test notification immediately.

Each event type can fire one or more channels by tag. The defaults cover the common cases:

EventDefault tagTriggers when
subtitle_downloadedinfoA new subtitle is written to disk.
search_failederrorAll providers exhausted with no match.
translation_completedinfoA translation job finishes.
translation_failederrorA translation job ends in failed.
scheduler_job_failederrorA scheduled job fails 3 times in a row.
disk_warningwarningDisk usage crosses the configured threshold.
provider_disabledwarningAuto-disable kicked in for a provider.
upgrade_completedinfoAn upgrade replaced an existing subtitle.
backup_failederrorAn automatic backup failed.
manual_action_requiredwarningSublarr needs human attention (rate-limit override, captcha, etc.).

A channel with tag error receives every event tagged error. Add info to the channel’s tags to also get info-level events.

Each event has a default message template. Customise per-event under the Templates tab:

VariableAvailable in
{title}All events
{message}All events
{series}Subtitle / translation events
{episode}Subtitle / translation events
{language}Subtitle / translation events
{provider}Subtitle events
{score}Subtitle events
{cost}Translation events
{error}Failure events

Templates are Markdown — Discord and Slack render the formatting; plain-text channels get the unformatted version.

Suppresses all non-urgent notifications during the configured window:

SettingDefaultValuesEffect
EnabledofftoggleMaster switch.
Start22:00HH:MMWindow start (server timezone).
End07:00HH:MMWindow end.
TimezoneserverIANA tzOverride if you want quiet hours pinned to a specific timezone regardless of server.
Allow criticalontoggleerror-tagged events still fire even during quiet hours.

Every dispatched notification is logged for audit:

ColumnEffect
TimestampWhen fired.
EventThe event type.
ChannelsWhich channel(s) received it.
Statussent / failed / suppressed (quiet hours).
MessageRendered message body.

Use the History tab when investigating “I should have got a notification but didn’t”. suppressed rows confirm quiet hours; failed rows include the upstream error from Apprise.

Each channel row has a Test button that sends a sentinel message immediately. The result is displayed inline:

OutcomeMeaning
OKApprise accepted the URL and the upstream service returned 2xx.
Apprise rejected URLURL format invalid; check the Apprise wiki for your service’s exact pattern.
Upstream rejectedApprise reached the service but the service returned an error (auth failure, missing channel, etc.).
Network unreachableSublarr couldn’t reach the service host.
Use caseSetup
All errors to ops Slack, info to private DiscordTwo channels: Slack tagged error, Discord tagged info.
Different Slack channels for different *arr instancesTwo Slack channels with different tags; route via per-event tag override.
Quiet during workdays; loud on weekendsTwo timezone-shifted quiet hours rules (current UI supports one — for two, use two channels with different tag inclusion).