Webhooks
Configure webhook-based scrobbling from Plex, Jellyfin, or Emby to Trakt, SIMKL, or MDBList.
Receive playback events from Plex, Jellyfin, or Emby. CrossWatch forwards them to Trakt, SIMKL, or MDBList.
A webhook mapping connects one media server profile to one tracker profile:
source profile → destination profile
CrossWatch generates the endpoint URL. The media server sends events to that URL.
Before you start
Connect a Plex, Jellyfin, or Emby profile in Settings → Connections.
Connect a Trakt, SIMKL, or MDBList profile.
Confirm the media server can reach the CrossWatch address.
Use trusted HTTPS across untrusted networks.
Only configured profiles can be selected.

Add a webhook
Open Settings → Scrobbler.
Select Add webhook.
Select the source provider and profile.
Select the destination tracker and profile.
Configure filters, options, and Plex ratings if needed.
Select Save changes.
Copy the generated endpoint URL.
Add the URL to the media server configuration.
Start playback and check the card status.
The endpoint URL appears after the mapping is saved.
Configure the media server
Plex
Add the generated Plex profile URL to Plex webhook configuration.
Use the same URL for playback and ratings when Plex ratings are enabled.
Webhook availability depends on Plex account and server features.
Jellyfin
Configure the Jellyfin webhook plugin with the generated Jellyfin profile URL.
Send playback start, pause, resume, and stop events. Choose JSON when available.
Emby
Configure the Emby webhook feature or plugin with the generated Emby profile URL.
Send playback start, pause, resume, and stop events.
Menu names vary by server and plugin version.
Quick troubleshooting
No events: Check the URL, host, port, certificate, and webhook event types.
Events ignored: Check filters, source status, destination credentials, and Watcher duplication.
Duplicate scrobbles: Use one source per source and destination profile pair.
See Webhook or Watcher before running both sources.
Webhook modal
Source
Select the media server provider and profile. Then select the tracker and profile.
The source profile is fixed after creation. Delete and recreate the mapping to change it.
Filters
Every provider supports a username whitelist.
Plex also supports server UUID allowlists and blocklists.
See Filters.
Options
Webhook options inherit global defaults. Enable Override global webhook defaults to change them.
Overrides include pause debounce seconds and suppress start percent.
Overrides apply to every destination attached to the source profile.
Ratings
Plex sources can send ratings to Trakt, SIMKL, MDBList, or any combination.
Ratings settings are shared across the source profile's webhook destinations.
Endpoint URL format
CrossWatch uses a profile token in every generated URL:
Always copy the full URL from Scrobbler. Do not build it manually.
The token identifies the source provider and profile. Treat the URL as a secret.
One source profile, one endpoint
A source profile has one endpoint URL.
Several destinations can use it:
Plex Home → Trakt Personal
Plex Home → SIMKL Personal
Plex Home → MDBList Personal
CrossWatch shows one card per destination. Plex Home uses one endpoint URL.
CrossWatch evaluates each event once, then sends it to configured destinations.
Shared settings
These values are shared by every card using the same source profile:
Endpoint URL
Enabled state
Filters
Pause debounce override
Suppress start override
Plex ratings destinations
The tracker and tracker profile are specific to each card.
Disabling one card disables webhook processing for the complete source profile.
Editing filters or options changes all destination cards for that profile.
Deleting a card removes only its destination. Removing the final destination removes the profile webhook.
Global webhook defaults
Pause debounce seconds
Default: 5
CrossWatch ignores repeated pause events inside this period.
Increase it if one user action emits several pause events.
Suppress start percent
Default: 99
CrossWatch ignores starts at or above this progress.
This prevents completed titles returning as actively playing.
Filters
An empty filter accepts matching movie and episode events from the source profile.
Use filters for shared servers, selected users, or Plex events from another server UUID.
Webhook filters are profile-wide, not destination-specific.
Enable, disable, and delete
The toggle controls the entire source profile webhook.
When disabled, the endpoint remains visible but ignores requests. Every card on that profile is disabled.
Reenable any card to reactivate the profile.
Deleting a card removes only its destination mapping.
When the final destination is removed, CrossWatch removes the profile mapping and endpoint token.
The Webhook source deactivates when no active mappings remain.
Regenerate URL
Regenerate only when the endpoint token is exposed or needs rotation.
Regeneration affects the complete source profile.
Copy the new URL.
Replace the media server URL.
Test delivery.
Remove the old entry.
The old URL stops working immediately.
Legacy URL cleanup
CrossWatch detects legacy Plex, Jellyfin, and Emby webhook tokens.
Use Remove legacy URLs only after every server uses its profile URL.
Cleanup permanently removes the old tokens.
Status and troubleshooting
Card shows Needs setup
Confirm that source and destination profiles remain connected. Check destination credentials.
Events do not arrive
Check:
The host resolves and is reachable from the media server.
Protocol, port, and complete URL are correct.
The proxy forwards the path and query string.
The media server trusts the certificate.
The source profile is enabled.
The server sends playback event types.
Do not use localhost unless CrossWatch shares the media server network namespace.
Events arrive but are ignored
Check username and Plex UUID filters, profile state, destination credentials, and Watcher duplication.
Enable debug logging temporarily if normal logs lack a reason.
Duplicate scrobbles
Check whether the same source and tracker profile also use a Watcher route.
Use one event source for each source and destination combination.
Related pages
Last updated
Was this helpful?