Episeerr

Episeerr Documentation

Complete guide to episode management and automation

What is Episeerr?

Episeerr is an intelligent episode management system that automates content delivery and cleanup for Sonarr-managed TV shows.

Ways to Manage Episodes:
Manual Selection

Select specific episodes across multiple seasons

  • Pick any episodes you want
  • Multi-season support
  • Perfect for catching up
Viewing-Based

Automatic based on what you watch

  • Watch episode → Get next
  • Webhook integration
  • Zero manual work
Time-Based

Automatic cleanup after inactivity

  • Grace periods
  • Dormant timers
  • Smart cleanup
Approval-Based

Review deletions before they happen

  • Dry run mode enabled by default
  • Approve or reject each deletion
  • Full transparency on cleanup decisions

Setup Page - Configure Services

No .env file needed — configure everything through the web interface. Database configuration takes priority over env vars.

Accessing Setup Page

URL: http://your-server:5002/setup

Or click "Setup" in the sidebar

Required Services
Sonarr

Required for: All features

You need:

  • Sonarr URL (e.g., http://sonarr:8989)
  • API Key from Sonarr → Settings → General
TMDB

Required for: Episode selection

You need:

Optional Services (For Automation)
Media Server

Choose one:

  • Plex - Native webhook (Plex Pass) or via Tautulli
  • Jellyfin - Real-time or polling
  • Emby - Polling mode

Enables: Viewing automation (next episode on watch)

Tautulli

For Plex users

Tautulli bridges Plex viewing data to Episeerr

Enables: Viewing automation with Plex

Request Integration

Choose one:

  • Overseerr
  • Jellyseerr

Enables: Automatic episode selection for new requests

Setup Page Features
  • Test Connections: Verify URLs and API keys before saving
  • Quick Links: Auto-populate sidebar links to configured services
  • Database Storage: Configuration persists across container restarts
  • No .env needed: Fresh installs can configure everything via GUI
  • Migration Support: Existing .env values appear as defaults
Configuration Priority

Database configuration takes priority over .env files. You can use both (database overrides .env), but we recommend configuring everything through the GUI for easier management.

After Setup
  1. Configure your services on the Setup page
  2. Test each connection (green checkmark = success)
  3. Save configuration
  4. Check Quick Links in sidebar - they should auto-populate
  5. Set up webhooks (see Webhook Setup section below)
  6. Create your first rule!

Getting Started - Initial Setup

Before using Episeerr, you need to configure Sonarr and set up a default rule.

Step 1: Sonarr Delay Profile
Required for external adds only (Sonarr tags, Plex watchlist sync, Seerr). If you only add series by searching within Episeerr, skip this — Sonarr isn't touched until after you confirm your selections.
Why Delay Profiles?

When adding externally with episeerr_select, without a delay profile:

  • ❌ Sonarr downloads ALL available episodes immediately
  • ❌ Episeerr can't hold downloads for your selection

With a delay profile tagged episeerr_select:

  • ✅ Episodes stay "monitored" but don't auto-download
  • ✅ Episeerr confirms your selection, then Sonarr grabs only those
How to Set Up Delay Profile in Sonarr:
  1. Go to Sonarr → Settings → Profiles → Delay Profiles
  2. Click Add New Delay Profile or edit existing
  3. Set delays:
    • Usenet Delay: 999999 minutes (essentially infinite)
    • Torrent Delay: 999999 minutes (essentially infinite)
  4. Set Tags: episeerr_[rule_name] and/or episeerr_select
  5. Save
Pro Tip: Create a delay profile specifically for Episeerr-managed shows. This way, other shows can still auto-download normally.
Step 2: Create Your First Rule
  1. Go to Admin Panel
  2. Scroll to Rule Management
  3. Click Create New Rule
  4. Configure:
    • Rule Name: e.g., "Default Weekly Shows"
    • Get: 1 episode
    • Keep: 0 or 1 episodes
    • Grace Unwatched: 7 days
    • Grace Watched: 3 days
    • Dormant Timer: 30 days
  5. Save
Step 3: Add Shows to Episeerr

Three paths — pick what fits your workflow:

Method 1: Search in Episeerr
  1. Use the search bar in Episeerr
  2. Click Add on the result
  3. Season/rule selection opens — nothing written yet
  4. Confirm → Sonarr add + Plex watchlist update happen
  5. Cancel → nothing happens

No tag or delay profile needed

Method 2: Sonarr Rule Tag
  1. Add show to Sonarr with tag episeerr_[rule_name]
  2. Webhook fires → rule applied immediately
  3. Tag removed automatically

Good for nzb360, Seerr, or direct Sonarr adds where you want instant processing

Method 3: episeerr_select Tag
  1. Add show to Sonarr with tag episeerr_select
  2. Delay profile holds downloads
  3. Pending request appears in Episeerr
  4. You pick rule + episodes, then confirm

Requires delay profile from Step 1

Step 4: Set Up Webhooks

Configure webhooks for automation (see Integration section below for details):

  • Sonarr webhook: ✅ REQUIRED - http://your-server:5002/sonarr-webhook
  • Jellyseerr/Overseerr: ✅ REQUIRED if using *seerr
  • Tautulli/Jellyfin: ⚙️ OPTIONAL - For viewing-based automation
You're Ready!

With delay profiles set and a rule created, Episeerr is now managing your shows. Add tags to shows and watch the automation happen!

Rules System

Rules define how episodes are managed for different shows. Each rule has four main settings:

Get Settings

Controls what new content to download after watching:

Type Behavior Example
Episodes Get X episodes ahead Get 2 = next 2 episodes
Seasons Get X seasons ahead Get 1 = entire next season
All Get everything available All = complete series
Keep Settings

Controls what watched content to retain:

Type Behavior Example
Episodes Keep X watched episodes Keep 1 = last watched only
Seasons Keep X watched seasons Keep 1 = current season
All Keep everything watched Never delete watched
Always Have (Optional)

An expression that defines episodes to always keep downloaded and protected from cleanup. Think of it as the baseline state of a show — these episodes are always there regardless of what Get/Keep does.

When a show is assigned to a rule with Always Have, those episodes get monitored and searched immediately. Cleanup (grace, keep) will never delete them. Dormant cleanup is the only exception — dormant is nuclear and ignores Always Have.

Expression What It Grabs Use Case
s1e1 Just the pilot Placeholder in Plex
s1 All of season 1 First season to try
s1, s*e1 Season 1 + first episode of every other season Plex shows all seasons exist without downloading everything
s1-3 Seasons 1 through 3 First few seasons to start
s1e1-5 Season 1, episodes 1-5 Try first handful of episodes
all Everything Combined with Keep for full protection

Combine with commas: s1, s3e1-3, s*e1. Leave blank to skip — Get/Keep will handle everything.

How The Pieces Fit Together

Always Have = what's always present on disk (the floor)

Get = what to download next when you watch (ongoing)

Keep = how many watched episodes to retain (immediate cleanup after watching)

Grace = time-based cleanup for inactive shows (days since last watch)

Dormant = nuclear cleanup for abandoned shows (ignores everything)

They're all independent — use any combination. A show can have Always Have + Get + Grace with no Keep, or just Get with no cleanup at all.

Rule Examples:
  • Get 1, Keep 1: Rolling window - always have 1 watched + 1 unwatched
  • Get 3, Keep 0: Binge mode - get 3 ahead, delete after watching
  • Get 1 season, Keep 1 season: Season-based - entire seasons at a time
  • Get All, Keep All: Hoarder mode - download everything, keep forever
  • Always Have: s1, s*e1 + Get 1: Showcase — Plex shows all seasons, grab 1 at a time when watching

Example Scenarios

Goal: Always have next episode ready, delete after watching
Rule Settings:
  • Get: 1 episode
  • Keep: 0 episodes
  • Grace Unwatched: 7 days
Behavior: Watch S1E1 → Get S1E2 → Delete S1E1 immediately

Goal: Get 3 episodes ahead, keep last watched
Rule Settings:
  • Get: 3 episodes
  • Keep: 1 episode
  • Grace Watched: 14 days
Behavior: Always have 3 unwatched + 1 watched episode available

Goal: Wife watches S2, son watches S1 - keep both protected
Rule Settings:
  • Get: 1 episode
  • Keep: 1 season
  • Grace Watched: 14 days
  • Grace Scope: Per Season
Behavior: S1 and S2 have independent grace timers - son watching S1 doesn't reset S2's timer

Goal: Aggressive cleanup, only keep what's needed
Rule Settings:
  • Get: 1 episode
  • Keep: 0 episodes
  • Grace Unwatched: 3 days
  • Dormant: 30 days
Global Settings:
  • Storage Threshold: 20 GB
Behavior: Only cleans up when storage drops below 20GB, aggressive deletion

Grace Periods & Time-Based Cleanup

Grace periods free up space from inactive shows while preserving your position so you can always resume where you left off.

Bookmark Preservation System

Grace periods now keep "bookmarks" so you never lose your place! Even after cleanup, you keep:

  • Last watched episode - Your "finished watching" bookmark
  • Next unwatched episode - Your "resume here" bookmark
This means you can pick up exactly where you left off, even months later.

Grace Watched

What: Deletes all watched episodes EXCEPT the last one after X days of inactivity

Exception: Keeps most recent watched episode (reference point)

Overrides: Keep settings (independent cleanup)

Example: Grace Watched: 14 days
→ Watch S2E1-E5
→ 14 days later (no activity)
→ Delete S2E1-E4, keep S2E5 (bookmark)
→ Marked as cleaned until you watch again

Grace Unwatched

What: Deletes unwatched episodes after X days (watch deadline)

Exception: Keeps next unwatched episode (resume point)

Overrides: Get settings (independent cleanup)

Use case: Clear backlog while keeping position

Example: Grace Unwatched: 10 days
→ Got S2E6, S2E7, S2E8
→ 10 days later (didn't watch any)
→ Delete S2E7, S2E8
→ Keep S2E6 (next episode bookmark)

Dormant Timer

What: Nuclear option for abandoned shows

When it expires: Deletes EVERYTHING (all episodes)

Reset by: Watching ANY episode in the series

Use case: Final cleanup for shows you'll never return to

Example: Dormant: 60 days
→ No activity for 60 days
→ Delete entire show (no bookmarks)

How Grace Periods Work Together

Grace Watched + Grace Unwatched: Maximum space savings while preserving position

  • After inactivity, you're left with just 2 episodes: last watched + next unwatched
  • Both bookmarks preserved automatically
  • Can resume anytime, even months later
Cleanup Loop Behavior

How grace cleanup stops and starts:

  • Has bookmark: Marked as cleaned → Won't check again until you watch
  • Missing next episode: Keeps checking daily until episode grabbed
  • Watch activity: Clears flag → Re-enters grace period after inactivity

Webhooks required:

  • Watch webhook (Tautulli/Jellyfin): Clears grace_cleaned flag, applies Get rule
  • Grab webhook (Sonarr): Sets grace_cleaned flag, stops checking loop
Grace Period Scope

Choose how grace timers are tracked:

  • Per Series (default): One timer for entire show - watching ANY episode resets grace for ALL episodes
  • Per Season: Independent timers per season - perfect for multi-viewer households where different people watch different seasons
Grace vs Keep vs Dormant vs Always Have
Setting When It Acts What It Does Preserves Position?
Always Have On rule assignment + during cleanup Downloads matching episodes, protects from deletion N/A (these never leave)
Keep Immediately after watching Deletes beyond Keep window (real-time) Yes (last_season/episode)
Grace Watched After X days of inactivity Deletes watched episodes except last one Yes (keeps 1 watched bookmark)
Grace Unwatched After X days of inactivity Deletes unwatched episodes except first one Yes (keeps 1 unwatched bookmark)
Dormant After X days of inactivity Deletes EVERYTHING (nuclear, ignores Always Have) No (complete removal)

Pending Deletions - Approval System

All deletions go through an approval queue first - giving you full control before anything is removed.

Safety First

Dry run mode is now enabled by default. This means all cleanup operations queue deletions for your review instead of executing immediately.

How It Works
  1. Cleanup Runs: Scheduled cleanup identifies episodes for deletion based on your rules
  2. Queued for Review: Episodes are added to pending deletions (not deleted)
  3. You Review: Visit the Pending page to see what would be deleted and why
  4. You Decide: Approve (deletes immediately) or Reject (caches for 30 days)
Review Options
Approval Levels

Approve deletions at multiple levels:

  • Individual Episodes: One at a time
  • Entire Season: All episodes in a season
  • Entire Series: All queued episodes
  • Selected Episodes: Check boxes and bulk approve
Rejection Behavior

When you reject an episode:

  • Removed from pending queue
  • Cached for 30 days
  • Won't reappear during that time
  • After 30 days, can be flagged again
What You See

Each pending deletion shows:

  • Series/Season/Episode: Organized hierarchically
  • Reason: Why it's marked (Grace Period, Keep Rule, Dormant, etc.)
  • Rule Name: Which rule triggered it
  • Date Source: Tautulli or Sonarr air date
  • Date Used: The actual date in the decision
  • File Size: How much space you'll reclaim
Configuring Dry Run Mode

Dry run can be enabled at two levels:

Global Dry Run

Location: Admin → Scheduler → Global Dry Run Mode

Effect: Applies to ALL rules

Default: ✅ Enabled (for safety)

Per-Rule Dry Run

Location: Admin → Dry Run Settings → By Rule

Effect: Applies to specific rule only

Use case: Test one rule while others run normally

How They Work Together

If either global OR per-rule dry run is enabled, deletions are queued for approval. This gives you maximum flexibility - protect everything globally or test individual rules.

Notifications

The navigation badge shows combined pending items:

  • Pending Requests: Episode selection requests
  • Pending Deletions: Episodes awaiting approval
  • Badge: Shows total count of both
Best Practices
  1. Start with dry run enabled (default) - Review deletions for a few weeks
  2. Check pending deletions regularly - Weekly or after each cleanup run
  3. Create proper rules instead of repeatedly rejecting the same content
  4. Monitor the logs to understand why episodes are targeted
  5. Use rule-specific dry run to test changes to individual rules
Important Notes
  • Rejection is temporary: Use proper rules for permanent protection
  • Dry run doesn't affect "Get": New episodes are still monitored/searched
  • Badge updates every 30 seconds: Reflects real-time pending count
  • Approved deletions execute immediately: No undo after approval

Add Workflows

Three paths into Episeerr — choose based on where you're adding from:

Search within Episeerr (no tags needed)

Search TMDB → click Add → season/rule selection opens → confirm → Sonarr add happens. Cancel at any point and nothing is written to Sonarr or Plex.

Movies: add to Radarr immediately on confirm, Plex watchlist updated.

External Tag-Based Workflows:
Rule Tags

Direct Rule Assignment

Tag shows with episeerr_[rule_name] to process immediately:

  • episeerr_one_at_a_time
  • episeerr_gracewatched
  • episeerr_keepall
  • Or any rule you've created

How it works:

  1. Add rule tag to show in Sonarr
  2. Episeerr processes immediately
  3. Episodes managed by that rule

Perfect for shows you want managed by a specific rule

episeerr_select

Manual Episode Selection

  1. Add tag to show in Sonarr
  2. Creates selection request in Episeerr
  3. You manually pick episodes
  4. Tag removed after selection

Perfect for catching up or selecting specific episodes

Auto-Assign (Separate Feature):

Auto-assign is independent from tags - it automatically adds new shows to your default rule when they're added to Sonarr without any tags.

  • Enable it: New shows automatically join default rule (waits for first watch)
  • Disable it: Only tagged shows get managed
  • Works together: You can use BOTH auto-assign AND direct rule tags

See the Auto-Assign section below for full details.

Jellyseerr/Overseerr Integration:

When requesting shows through Jellyseerr/Overseerr:

  • Request gets sent to Sonarr
  • Episeerr captures the requested seasons
  • If auto-assign is ON, automatically adds to default rule
  • If you tagged it with a rule tag, uses that rule instead
  • Season-aware: starts from the season you requested, not always Season 1

Tag Management & Drift Detection

Tags are automatically created and managed by Episeerr. You don't need to manually create or maintain them.

How Tags Work:
  1. When you create a rule called "binge_watcher":
    • Episeerr creates episeerr_binge_watcher tag in Sonarr automatically
    • Tag is added to Sonarr's delay profile (if configured)
  2. When series is assigned to that rule:
    • Episeerr applies episeerr_binge_watcher tag to the series in Sonarr
    • Tag indicates which rule manages this series
  3. If you manually change the tag in Sonarr:
    • Episeerr detects the drift (on next watch, cleanup, or startup)
    • Automatically moves the series to the correct rule in config
    • Your manual tag change becomes the new source of truth
  4. When you delete a rule:
    • Tag removed from all series
    • Tag removed from Sonarr entirely
    • Tag removed from delay profile
Drift Detection:

Episeerr checks for tag mismatches in 4 places:

Watch Webhooks
When you watch an episode

Cleanup Cycles
Every 6 hours (configurable)

Startup
When Episeerr starts

Clean Config
When you click button

What Gets Detected:
Scenario Detection Action
Tag changed in Sonarr ✓ Detected Series moved to matching rule
Tag removed in Sonarr ✓ Detected Tag re-added from config
Tag added to unmanaged series ✓ Detected Series added to that rule
Tag-Based Management

You can manage series assignment entirely through Sonarr tags if you prefer! Just tag shows in Sonarr with episeerr_rulename and Episeerr will automatically detect and assign them. No need to use the Episeerr UI at all.

Example Workflow:

Scenario: Series "Breaking Bad" is in "binge_watcher" rule

  1. You manually change tag to episeerr_weekly in Sonarr
  2. Next time Episeerr checks (watch/cleanup/startup/clean_config):
    • ✓ Detects drift
    • ✓ Moves "Breaking Bad" from "binge_watcher" to "weekly" rule
    • ✓ Series now managed by "weekly" rule

Your manual tag change in Sonarr becomes the new source of truth!

Rule Descriptions:

Add optional descriptions to rules to document their purpose:

  • Hover over rule names to see descriptions as tooltips
  • Helps organize and understand multiple rules
  • Examples: "Weekly shows I'm actively watching", "Binge-watching mode - get full seasons"

Webhook Integration

Supported Services:
Tautulli (Plex Option A)

Tracks viewing activity in Plex — handles TV shows and movies

Webhook URL:
            http://your-server:5002/webhook

            Trigger: Watched
            (set % threshold in Tautulli
            Settings → General)

TV → rule automation  |  Movies → watchlist status

Plex Native Webhook (Option B)

Direct Plex webhook — no Tautulli needed. Handles TV shows and movies.

Configure in:
            Integrations → Plex
            → Watch Detection

            Modes: Scrobble |
            Stop+Threshold |
            Polling

Choose one: Tautulli or Plex native — not both

Jellyfin (3 Modes)

Mode 1: PlaybackProgress (real-time)

Mode 2: Session Start/Stop (polling)

Mode 3: Playback Stop (on-stop)

Webhook URL:
            http://your-server:5002/api/integration/jellyfin/webhook

            Trigger: (depends on mode)
            See full guide below

📖 Full Jellyfin Setup Guide →

Sonarr

Detects new series additions

Webhook URL:
            http://your-server:5002/sonarr-webhook

            Trigger:
            On Series Add

Sonarr Delay Profiles

Only required for external adds (Sonarr tags, Plex watchlist sync, Seerr) that use episeerr_select. Not needed when adding via Episeerr search — Sonarr isn't touched until you confirm.

Delay profiles tell Sonarr to wait before downloading. For episeerr_select tagged shows, this holds all downloads until you confirm your selection in Episeerr.

Setup:
  1. Sonarr → Settings → Profiles → Release Profiles → Add New
  2. Name: Episeerr Episode Selection Delay
  3. Delay: 10519200 (20 years)
  4. Tags: episeerr_select
  5. Save

For rule-managed shows (episeerr_rulename tags), a separate delay profile is optional but recommended so Sonarr doesn't grab episodes before Episeerr's GET rule fires:

Name: Episeerr Managed
Usenet/Torrent Delay: 999999 minutes
Tags: episeerr_[each_rule_name]

Auto-Assign New Series

Auto-assign is a separate feature from tags - it automatically adds new shows to your default rule when they're added to Sonarr WITHOUT any tags.

How It Works:
❌ Auto-Assign: OFF

What happens:

  1. Add show to Sonarr
  2. Nothing happens (unless you tag it)
  3. Must use rule tags to manage
  4. Or use episeerr_select for manual selection

Only tagged shows get managed

✅ Auto-Assign: ON

What happens:

  1. Add show to Sonarr (no tags)
  2. Episeerr automatically assigns to default rule
  3. Waits for first watch to start processing
  4. Zero manual work!

Passive assignment - waits for viewing activity

Tags and Auto-Assign Work Together:

You can use BOTH at the same time:

  • Tagged shows: Process immediately with their rule tag
  • Untagged shows (with auto-assign ON): Automatically join default rule
  • Untagged shows (with auto-assign OFF): Not managed at all
When to Enable Auto-Assign:
Scenario Auto-Assign Setting Reason
All shows managed by Episeerr ON Automatic - every new show gets managed
Mix of Episeerr + regular shows OFF Manual control - only tagged shows managed
Using Jellyseerr/Overseerr ON Requests automatically managed
Testing/Learning Episeerr OFF Better control during learning phase
How to Enable/Disable:
  1. Go to Settings (in sidebar)
  2. Find Global Storage Gate card at top
  3. Check/Uncheck "Auto-assign new series"
  4. Click Save Global Settings
Important Notes:
  • Only affects NEW shows: Existing shows are not automatically assigned
  • Requires default rule: Must have at least one rule marked as "default"
  • Tags override auto-assign: If a show has a rule tag or episeerr_select, it uses that instead
  • Works with *seerr: Shows requested through Jellyseerr/Overseerr are auto-assigned if enabled
  • Passive mode: Auto-assigned shows wait for first watch before processing
Workflow Comparison:
Manual Workflow (Auto-Assign OFF):
  1. Add show in Sonarr
  2. Go to Sonarr → Series → Select show
  3. Add rule tag (e.g., episeerr_one_at_a_time)
  4. Save
  5. Episeerr processes via webhook
Automatic Workflow (Auto-Assign ON):
  1. Add show in Sonarr
  2. That's it!
  3. Episeerr automatically assigns and manages
  4. Zero extra steps

Troubleshooting

Common Issues:
Episodes aren't being processed

Check:

  • Is the series assigned to a rule?
  • Are webhooks configured and firing?
  • Check logs: Admin → View Logs → episeerr.log
  • Verify Sonarr tags are correct (episeerr_[rule_name] or episeerr_select)
Episodes deleted too quickly

Solution:

  • Increase Grace Watched/Unwatched periods
  • Check if Dormant timer is too short
  • Consider changing Keep settings to retain more episodes
Nothing is being deleted

Check:

  • Is cleanup scheduler running? (Admin → Scheduler Status)
  • Check Storage Gate - cleanup only runs when below threshold
  • Verify grace periods aren't too long
  • Check if Dry Run Mode is enabled globally
Episodes showing in pending deletions but I want to keep them

Solution:

  • Reject the deletion: Removes it for 30 days
  • Better solution: Create a rule with no cleanup parameters (leave grace periods empty)
  • Adjust existing rule: Increase grace periods or change dormant timer
  • Check why it's targeted: Review the "Reason" field in pending deletions
Badge shows pending count but page shows nothing

Check:

  • Refresh the page (F5)
  • Check browser console for JavaScript errors
  • Verify /api/pending-deletions/count endpoint is working
  • Clear browser cache and reload

Frequently Asked Questions

Q: Which webhooks do I need?
A: It depends on your setup:
  • Sonarr webhook: ✅ REQUIRED - Detects new series and processes tags (episeerr_[rule_name]/episeerr_select)
  • Jellyseerr/Overseerr webhook: ✅ REQUIRED if you use *seerr - Captures requested seasons for proper automation
  • Tautulli or Plex native webhook: ⚙️ OPTIONAL - For viewing-based automation (TV: auto-get next episode; Movies: update watchlist status). Choose one, not both.
  • Jellyfin webhook: ⚙️ OPTIONAL - Same as above for Jellyfin users

Without viewing webhooks, you can still use manual selection and time-based cleanup rules.

Q: Can I use multiple rules?
A: Yes! Create different rules for different types of shows (weekly vs binge, kids vs adults, etc.)
Q: What happens if I don't set grace periods?
A: Without grace periods, episodes are deleted immediately based on Keep settings only.
Q: Can I test rules without actually deleting?
A: Yes! Enable Dry Run Mode in Admin → Global Settings, or set it per-rule.
Q: How do I know what's being deleted?
A: Check Admin → View Logs → cleanup.log for detailed deletion logs.
Q: What is "Pending Deletions"?
A: A safety system that queues all deletions for your review before executing them. When dry run mode is enabled (default), cleanup operations add episodes to a pending queue instead of deleting immediately. You review the queue and approve or reject each deletion.
Q: Why aren't episodes being deleted?
A: Check if dry run mode is enabled (Admin → Scheduler → Global Dry Run Mode). When enabled, all deletions go to the Pending page for review. This is the default behavior for safety. Review and approve deletions from the Pending page, or disable dry run if you want automatic deletion.
Q: What happens if I reject an episode deletion?
A: The episode is removed from the pending queue and cached for 30 days. It won't appear in pending deletions again during that time. After 30 days, if cleanup rules still target it, it will reappear. For permanent protection, create a rule with no cleanup parameters.
Q: Can I approve/reject multiple episodes at once?
A: Yes! You can approve or reject at multiple levels:
  • Individual episodes (one at a time)
  • Entire seasons (all episodes in that season)
  • Entire series (all pending episodes for that show)
  • Selected episodes (check boxes and bulk approve/reject)
Q: What's the difference between global and per-rule dry run?
A:
  • Global dry run: Affects ALL rules - all deletions are queued
  • Per-rule dry run: Affects only that specific rule - lets you test individual rules
  • Either one enabled: Deletions are queued for approval
Use global dry run when learning Episeerr, per-rule dry run when testing changes to specific rules.
Q: Can different family members watch different seasons?
A: Yes! Use "Grace Scope: Per Season" in your rule settings.

Need Help?

GitHub

Report issues or request features

GitHub Issues
Docker Hub

Check for updates and releases

Docker Hub
README

Full documentation on GitHub

Documentation