Skip to content
Integrations

Integrations

Both integrations are optional, run after a fetch, and never fail a run.

Plex refresh

[plex]
enabled = true
url     = "http://localhost:32400"
token   = ""      # or SUBTRACE_PLEX_TOKEN

After a run that wrote at least one subtitle, subtrace asks Plex to refresh the library sections those files belong to, so the new sidecars appear without waiting for Plex’s next scheduled scan. Sections are matched by filesystem path.

Setting SUBTRACE_PLEX_TOKEN implies enabled = true.

Path matching is the catch. If subtrace sees the library at /media/Movies while Plex knows it as /data/movies, nothing matches and the refresh is skipped — silently, at debug level. Run with --log-level debug and look for plex refresh matched no library section.

The fix is to mount the library at the same path in both containers. Finding your token: https://support.plex.tv/articles/204059436.

Failures here are logged as warnings; the fetch itself is already done and is not affected.

Notifications

[notify]
urls = ["discord://token@id"]   # or SUBTRACE_NOTIFY_URLS (comma-separated)
on   = ["run_complete", "error"]

Notifications go through shoutrrr, so any service it supports works by URL. List one URL per service; every configured service receives every enabled event.

EventFires when
run_completea fetch finished without error
errora fetch ended with an error

Common URL shapes:

discord://token@id
slack://hook:token@channel
telegram://token@chat
pushover://:apptoken@userkey
generic://example.com/webhook

The full list is in the shoutrrr service overview.

A malformed URL is a hard error at setup — a notifier that silently does nothing is worse than one that tells you it is broken. The message body looks like:

Downloaded **7** subtitles (2 not found, 0 failed) in 41s.
8412 files scanned, 1496 still missing subtitles.

To disable notifications entirely, leave urls empty.