Watcher
Real-time scrobbling from Plex, Emby, or Jellyfin to Trakt, SIMKL, and MDBList.
Watcher does real-time scrobbling in CW.
It reads playback from your media server and pushes progress to trackers.
You can run multiple media servers and trackers together.
Watcher is the preferred real-time scrobble path for most setups.
Watcher
Monitor Plex, Jellyfin, or Emby playback from CrossWatch. Send real-time scrobbles to Trakt, SIMKL, or MDBList.
Before you start
Connect a Plex, Jellyfin, or Emby profile in Settings → Connections.
Connect a Trakt, SIMKL, or MDBList profile.
Confirm CrossWatch can reach the media server API.
Configure metadata and provider IDs when matching needs improvement.
Only connected profiles appear in route selectors.

Add a Watcher route
Open Settings → Scrobbler.
Select Add watcher.
Select the source provider and profile.
Select the destination tracker and profile.
Review Filters and Options.
Configure Plex Ratings only when required.
Select Save changes.
Start Watcher or enable Autostart.
Each route maps one media server profile to one tracker profile:
media server profile → tracker profile
CrossWatch assigns route IDs such as R1, R2, and R3.
Exact duplicate routes cannot be saved. Create separate routes for different destination providers or profiles.
Filters and options
Filters decide whether a route accepts playback. Available filters include a username whitelist, Plex Server UUID allowlist or blocklist, and Ignore Plex Live TV and DVR.
Empty filters accept all supported playback from the source profile. See Filters.
Route options override global settings:
Auto remove from Watchlists — Inherit, On, or Off.
Watched threshold —
0to100; global default:90.Final stop trust —
0to100; global default:95.
Leave threshold fields empty to inherit global values. Pause debounce and Suppress start remain global settings.
Watcher status
Status shows running and configured route counts, Autostart, active providers, and runtime errors.
Start starts enabled saved routes and clears stale currently-watching state.
Stop stops every active group. No Watcher playback is processed while stopped.
Reload rebuilds groups from saved routes. Use it after connection changes.
Autostart starts saved enabled routes when CrossWatch starts.
Troubleshooting
Route is enabled but not running
Confirm Watcher and the source profile are running.
Confirm the destination profile is connected.
Select Reload and review CrossWatch logs.
Playback is detected but not sent
Clear filters temporarily.
Check the selected user, Plex Server UUID, library filtering, and provider IDs.
Confirm destination authentication.
Completion or duplication is wrong
Review Watched threshold, Final stop trust, and Suppress start.
Check for a matching webhook, another route to the same tracker profile, or overlapping Plex ratings URLs.
Runtime model
CrossWatch groups enabled routes by source provider and profile.
For example, three Plex Home routes share one Plex watcher group. Each event is evaluated and dispatched independently per route.
A route runs only when it is enabled, Watcher is started, its source group runs, and its destination is valid.
Route modal
Each route has its own profiles, enabled state, filters, auto-remove behavior, completion overrides, and Plex ratings configuration.
The duplicate check uses source provider and profile plus destination provider and profile.
Plex ratings
Normal playback requires no inbound webhook. Plex ratings require a ratings webhook because rating changes are not playback events.
Choose Off or Custom route webhook. Select Trakt, SIMKL, MDBList, or any combination.
The route URL is generated after saving. Use a custom route webhook only for a different destination set.
Global Watcher defaults
Auto remove from Watchlists controls routes using Inherit.
Pause debounce seconds defaults to 5. It ignores repeated pause events.
Suppress start percent defaults to 99. It ignores starts near completion.
Watcher normalizes activity into start, pause, and stop. It supports movies and episodes.
CrossWatch suppresses duplicate actions, tolerates small progress regressions, and applies watched-threshold and final-stop handling.
Multiple routes and conflicts
Create one route per destination:
Plex Home → Trakt Personal
Plex Home → SIMKL Personal
Plex Home → MDBList Personal
Use username whitelists to route shared-server users to separate tracker profiles.
Avoid near-duplicate routes that target one tracker profile during simultaneous playback. Do not also configure a webhook for the same source and tracker profiles.
Plex ratings URLs
Use the global ratings webhook when all Plex routes share destinations.
Use the route Ratings tab when a route needs custom destinations. Global and route-specific destinations are additive.
Do not send the same rating through both URLs. Regenerating a URL invalidates the old URL.
Related pages
Last updated
Was this helpful?