Episeerr

Service Setup

Connect external services to Episeerr

Required Services

Sonarr Connected
Core TV automation engine
Settings → General → API Key
Optional HTTPS URL for remote access (Cloudflare tunnel, etc.)
When checked, this service will open inside Episeerr instead of a new tab
Media Server Configure Plex, Jellyfin, or Emby in the Integrations section below

Optional Integrations

Plex and Tautulli appear here. For watch detection, choose one: Plex native webhook (configure in Plex → Watch Detection) or Tautulli watched webhook (Trigger: Watched, any media type) — not both, as this causes double-processing. Both options handle TV shows (rule automation) and movies (watchlist status updates). Tautulli can still be configured alongside Plex native webhook for its richer watch history via the Override Plex toggle, as long as its watched webhook is not also enabled.

TMDB Connected
Artwork, metadata, and search
Get from TMDB Settings

Integrations

Jellyfin Connected
Webhook-triggered polling with real-time session monitoring
Your Jellyfin server URL
Dashboard → API Keys → Create new key
Specific Emby username to monitor. Leave blank to process episodes from any user.
Polling: webhook fires once, polls session. Progress: constant webhook spam.
For polling mode. Recommended: 900 (15 min)
For polling mode. Process when watch % >= this value
For progress mode. Minimum watch percentage
For progress mode. Maximum watch percentage
Optional HTTPS URL for remote access (Cloudflare tunnel, etc.)
When checked, this service will open inside Episeerr instead of a new tab
Radarr Connected
Movie library stats and upcoming releases
Base URL for your Radarr instance
Settings → General → API Key
Default path for new movies added via Discover
Numeric ID from Radarr Settings → Profiles
Optional HTTPS URL for remote access (Cloudflare tunnel, etc.)
When checked, this service will open inside Episeerr instead of a new tab
Docker Connected
Media stack container status and controls in the sidebar
Docker socket path or TCP URL (e.g., tcp://192.168.1.100:2375)
Optional: URL for Portainer, Dockge, or Composerr. Leave blank to only use sidebar controls (Docker won't appear in System Links).
Show all containers belonging to a specific Docker Compose stack. This is the project name from your compose file (usually the folder name or set via COMPOSE_PROJECT_NAME). Takes priority over Container Filter if both are set.
Comma-separated container name fragments to show. Used only if Compose Stack Name is blank. Leave both blank to use defaults (sonarr, radarr, plex, etc.)
Optional HTTPS URL for remote access (Cloudflare tunnel, etc.)
When checked, this service will open inside Episeerr instead of a new tab
Plex Optional
Show now playing, watchlist with auto-sync, and movie cleanup
Your local Plex server URL (e.g., http://192.168.1.100:32400)
Get from Plex Settings → Account → copy X-Plex-Token from URL
Optional HTTPS URL for remote access (Cloudflare tunnel, etc.)
When checked, this service will open inside Episeerr instead of a new tab
Episode Detection
Requires Plex Pass for webhooks. Configure in Plex: Settings → Webhooks → Add Webhook
URL: http://<episeerr-host>:5002/api/integration/plex/webhook
Scrobble: Plex’s native 90% watched event triggers processing. Simple, no config needed.
Stop + Threshold: Process when you stop playback at or beyond your threshold (e.g. 50%). Triggers earlier than scrobble and needs no background polling. Scrobble (90%) still fires automatically as a safety net — if the stop event was missed (crash, network drop, autoplay) Episeerr catches it at 90% instead. Episodes are never double-processed.
Polling: Background thread checks playback progress every N minutes. Useful if webhooks are unreliable.
Only process episodes watched by these Plex usernames. Leave blank to process all users.
Watchlist Auto-Sync
Periodically check your Plex watchlist and add new items to Sonarr/Radarr
Watchlist Cleanup
Automatically remove a title from your Plex watchlist once it’s been marked as watched
Movie Cleanup
Automatically remove watched movies from Radarr after the grace period
Days to keep after watching before deleting
Emby Optional
Webhook-triggered polling for watch detection
Your Emby server URL
Settings → Advanced → API Keys
Specific Emby username to monitor. Leave blank to process episodes from any user.
Check progress every X seconds after playback starts. Recommended: 900 (15 min). Min: 300 (5 min).
Process episode when watch % >= this value (e.g., 50 = process at 50% watched).
Optional HTTPS URL for remote access (Cloudflare tunnel, etc.)
When checked, this service will open inside Episeerr instead of a new tab
Sonos Optional
Multi-room audio with now playing widget and zone status
IP or hostname of any one Sonos speaker — zones are discovered automatically
Sonos local API needs no authentication — leave blank
Optional HTTPS URL for remote access (Cloudflare tunnel, etc.)
When checked, this service will open inside Episeerr instead of a new tab
Spotify Optional
Music streaming with now playing widget and playback controls
Optional HTTPS URL for remote access (Cloudflare tunnel, etc.)
When checked, this service will open inside Episeerr instead of a new tab
SABnzbd Optional
Download queue status and speed
Optional HTTPS URL for remote access (Cloudflare tunnel, etc.)
When checked, this service will open inside Episeerr instead of a new tab
Dispatcharr Optional
Live IPTV stream monitoring — active channels, viewers, bitrate
Base URL of your Dispatcharr instance
Profile → API Key in Dispatcharr
Episeerr URL that Dispatcharr will POST stream events to. Must be reachable from Dispatcharr's host. Leave blank to use poll-only mode (widget refreshes every 60 s).
Optional HTTPS URL for remote access (Cloudflare tunnel, etc.)
When checked, this service will open inside Episeerr instead of a new tab
Prowlarr Connected
Indexer health and status
Optional HTTPS URL for remote access (Cloudflare tunnel, etc.)
When checked, this service will open inside Episeerr instead of a new tab
Jellyseerr Connected
Media request management - intercepts and stores requests and auto-deletes after processing
Your Jellyseerr or Overseerr server URL
Settings → General → API Key
Optional HTTPS URL for remote access (Cloudflare tunnel, etc.)
When checked, this service will open inside Episeerr instead of a new tab
Tautulli Optional
Plex analytics — episode-watch webhooks and optional watch-history override
Base URL of your Tautulli instance
Settings → Web Interface → API Key
Optional HTTPS URL for remote access (Cloudflare tunnel, etc.)
When checked, this service will open inside Episeerr instead of a new tab
Watch History Source
When enabled, Tautulli is queried for all watch-date lookups (cleanup, dormant detection, grace periods) instead of the Plex API. Useful if you prefer Tautulli’s richer history while still using Plex direct webhooks.
Webhook Setup

In Tautulli: Settings → Notification Agents → Webhook
Trigger: Watched  ·  URL: /api/integration/tautulli/webhook
Leave Conditions blank — no media type filter needed. Episeerr detects TV vs movie automatically.
Note: If using Plex native webhook for watch detection, do not also enable this Tautulli watched webhook — choose one source only.

{
  "plex_title": "{show_name}",
  "plex_movie_title": "{title}",
  "plex_season_num": "{season_num}",
  "plex_ep_num": "{episode_num}",
  "thetvdb_id": "{thetvdb_id}",
  "themoviedb_id": "{themoviedb_id}"
}

System Links

Quick access to your connected services and custom links

Configured Links
Required Services
Media Server
Optional Integrations
Custom Links