Webhooks
Configure webhook-based scrobbling from Plex, Jellyfin, or Emby to Trakt.
Legacy webhooks send playback events from your media server to Trakt.
Save changes often. Most settings do nothing until you click the red floating Save button.
What it does
Receives events on these endpoints:
Plex:
http://<host>:8787/webhook/plextrakt?uniqueIDJellyfin:
http://<host>:8787/webhook/jellyfintrakt?uniqueIDEmby:
http://<host>:8787/webhook/embytrakt?uniqueID
Can auto-remove movies from watchlists after completion (if enabled).
Can send ratings to Trakt for Plex only (if enabled).
Webhook endpoints are protected by a unique URL token (?uniqueID) generated by CrossWatch.
Copy the full URL from Settings → Scrobble → Webhook.
You can rotate (regenerate) these tokens from Settings → Scrobble → Watcher.
If you regenerate webhook tokens, old webhook URLs stop working.
Paste the new URLs into Plex/Emby/Jellyfin after rotating.
If you change CrossWatch from HTTP ↔ HTTPS (or change host/port), you must update the webhook URLs in your media server.
Plex/Jellyfin/Emby will keep calling the old URL until you change it.
Prerequisites
Trakt connected in Authentication
Webhook mode enabled in Settings → Scrobble → Webhook
If you use webhooks over https://..., use a publicly trusted certificate.
Self-signed TLS certificates commonly break webhook delivery for Plex, Emby, and Jellyfin.
Use a reverse proxy with Let’s Encrypt (recommended). Keep CrossWatch on HTTP behind the proxy. See Reverse proxies.
For Jellyfin/Emby, configure user filtering in the server webhook settings.
Quick setup
Plex webhook
Endpoint:
http://<host>:8787/webhook/plextrakt?uniqueIDConfigure in Plex: Plex Account → Webhooks
Plex Pass is required.
Jellyfin webhook
Requires the Jellyfin Webhook plugin.
Endpoint:
http://<host>:8787/webhook/jellyfintrakt?uniqueIDSuggested events:
Playback Start
Playback Stop
Playback Progress (optional)
Set request header:
Content-Type: application/json
Emby webhook
Requires the Emby Webhook plugin and Emby Premiere.
Endpoint:
http://<host>:8787/webhook/embytrakt?uniqueIDSuggested events: Start, Pause, Unpause, Stop
Set request content type:
application/json
Advanced
UI fields and behavior notes
Plex-only filters:
Username whitelist
Server UUID whitelist / blacklist
Legacy Server UUID single-value filter
Plex-only option:
Enable ratings (movies/shows/seasons/episodes)
Plex server-level scrobble libraries still apply here:
empty library list = all libraries
selected libraries = only those libraries generate scrobbles
If a Plex event does not resolve to a usable library and a scrobble whitelist is set, CrossWatch skips it.
Behavior controls:
pause debounce
suppress start near end
regress clamp
stop/pause thresholds
autoplay suppression
optional session progress probing
Plex webhook filters are global for the Plex webhook endpoint.
Server UUID blacklist wins over whitelist.
If you set a webhook secret, CrossWatch also validates the Plex webhook signature.
ID handling (legacy)
Plex: prefers GUIDs (IMDb/TMDb/TVDb). Can fall back to title+year.
Jellyfin/Emby: prefers
ProviderIds. Falls back to title+year if needed.
Summary
Webhooks scrobble playback to Trakt.
They use server-side events instead of Watcher routes.
Use them when webhook delivery fits your setup better.
Newer setups can run Webhooks and Watcher together.
Split them by Plex server UUID if you do.
Related topics
Compare modes: Webhook or Watcher
Use route-based scrobbling: Watcher
Filter behavior and Plex dual-source rules: Scrobble filters
Understand the scrobble pipeline: Scrobble
Reverse proxy notes for
/webhook/*: Reverse proxies
Last updated
Was this helpful?