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_TOKENAfter 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.
/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.
| Event | Fires when |
|---|---|
run_complete | a fetch finished without error |
error | a fetch ended with an error |
Common URL shapes:
discord://token@id
slack://hook:token@channel
telegram://token@chat
pushover://:apptoken@userkey
generic://example.com/webhookThe 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.