Reference
Fields
Section titled “Fields”Radarr
Section titled “Radarr”radarr.added type: date
When the movie was added to Radarr
radarr.digital_release type: date
Digital release date. Can be null — older_than matches null dates.
radarr.physical_release type: date
Physical release date. Can be null — older_than matches null dates.
radarr.size_on_disk type: number
File size in bytes. 0 when no file exists.
radarr.has_file type: boolean
Whether a movie file exists on disk
radarr.monitored type: boolean
Whether the movie is monitored in Radarr
radarr.tags type: array
Tag names applied in Radarr. Lowercased — use keep, not Keep.
radarr.genres type: array
Genre strings. Retains original casing from metadata (e.g., Horror).
radarr.status type: string
Release status: tba, announced, inCinemas, or released
radarr.year type: number
Release year
radarr.on_import_list type: boolean
Whether the movie is currently on any import list
radarr.import_list_ids type: array
IDs of import lists containing this movie. Empty array if not on any list.
Sonarr
Section titled “Sonarr”sonarr.tags type: array
Level: Series
Tag names applied in Sonarr. Lowercased.
sonarr.genres type: array
Level: Series
Genre strings
sonarr.status type: string
Level: Series
Series status: ended or continuing
sonarr.year type: number
Level: Series
First air year
sonarr.path type: string
Level: Series
Filesystem path to the series folder
sonarr.season.monitored type: boolean
Level: Season
Whether this season is monitored
sonarr.season.season_number type: number
Level: Season
Season number
sonarr.season.episode_count type: number
Level: Season
Total episodes in the season
sonarr.season.episode_file_count type: number
Level: Season
Episodes with files downloaded
sonarr.season.has_file type: boolean
Level: Season
Whether the season has any episode files
sonarr.season.size_on_disk type: number
Level: Season
Season file size in bytes
Sonarr evaluates per-season. A series with 5 seasons = 5 items. Season 0 (specials) is always excluded. Tags are lowercased. Genres retain original casing.
Jellyfin
Section titled “Jellyfin”jellyfin.watched_by type: array
Usernames of Jellyfin users who have watched the item
jellyfin.watched_by_all type: boolean
true if every active Jellyfin user has watched the item
jellyfin.last_played type: date
Most recent playback timestamp across all users
jellyfin.play_count type: number
Total play count across all users
Jellyseerr
Section titled “Jellyseerr”jellyseerr.requested_by type: string
Username of the Jellyseerr user who requested the media
jellyseerr.requested_at type: date
When the request was created
jellyseerr.request_status type: string
Request status: pending, approved, declined, or unknown
Jellyseerr data is series-level — all seasons share the same values.
state.days_off_import_list type: number
Days since the movie left all import lists. Null when still on a list.
state.ever_on_import_list type: boolean
Whether the movie was ever on any import list
Radarr-only. Computed from evaluation history — requires 2+ runs. Null state values do not cause rules to be skipped.
Operators
Section titled “Operators”equals type: string, number, boolean
Example: value: false
True if field value matches exactly
not_equals type: string, number, boolean
Example: value: true
True if field value does not match
greater_than type: number
Example: value: 50000000000
True if field value is greater than the target. Null fields never match.
less_than type: number
Example: value: 2010
True if field value is less than the target. Null fields never match.
older_than type: date
Example: value: 6mo
True if the date is further in the past than the duration. Null dates always match.
newer_than type: date
Example: value: 2w
True if the date is within the duration. Null dates never match.
includes type: array
Example: value: keep
True if the array contains the value
not_includes type: array
Example: value: temporary
True if the array does not contain the value. Null arrays never match.
includes_all type: array
Example: value: [4k, hdr]
True if the array contains every value in the list
is_empty type: array
True if the array has zero elements. No value required.
is_not_empty type: array
True if the array has one or more elements. No value required.
Duration syntax
Section titled “Duration syntax”older_than and newer_than accept durations: <number><unit>. Case-sensitive.
| Unit | Suffix | Example |
|---|---|---|
| Minutes | min | 45min |
| Days | d | 30d |
| Weeks | w | 2w |
| Months | mo | 6mo |
| Years | y | 1y |
Type compatibility
Section titled “Type compatibility”| Field Type | Compatible Operators |
|---|---|
string | equals, not_equals |
number | equals, not_equals, greater_than, less_than |
boolean | equals, not_equals |
date | older_than, newer_than |
array | includes, not_includes, includes_all, is_empty, is_not_empty |
Null handling
Section titled “Null handling”-
older_thanalways matches null dates — guard with an additional condition if needed:# Without guard: matches movies with no digital release date (null = always matches)- field: radarr.digital_releaseoperator: older_thanvalue: 6mo# With guard: only matches movies that have a digital release date AND it's oldconditions:operator: ANDchildren:- field: radarr.has_fileoperator: equalsvalue: true- field: radarr.digital_releaseoperator: older_thanvalue: 6mo -
newer_thannever matches null dates -
greater_than/less_thannever match null numbers -
Array operators never match null arrays
-
Null enrichment data → rules referencing those fields are skipped for that item