Targeting
A target names a scope, the sources within it, and the filters that cut it down. Nothing else. There is no query language to learn, and every filter means the same thing whatever it is applied to.
Scopes
| Scope | Sources are | Notes |
|---|---|---|
entries | Sections | Plus entry types as a second axis. Singles are refused — Craft recreates the entry, so deleting it only looks like it worked. |
categories | Category groups | Every group is a structure, so the descendant warning always applies. |
tags | Tag groups | Flat, cheap, and usually the scope with the most orphans. |
assets | Volumes | The only scope that reaches outside the database. In-progress uploads are never matched. |
users | User groups | Off by default. Admin-only even when on, and your own account is always excluded. |
Other element types can register themselves — see extending.
Filters
Sources and entry types
Leave every box unticked to mean all of them. The preview says so in words (“all entries on the site”) rather than leaving you to infer it from an empty form.
Sites
Narrows what matches. It does not narrow what is deleted: removing an element removes it from every site it exists in, because that is what deleting an element means in Craft. With no sites named, every site is searched and each element is counted once — without that, a three-site element would show up three times and a preview saying 3,000 where it means 1,000 is worse than no preview.
Status
The options change per scope, and that is not cosmetic. Statuses are not universal: live is entry-only, and an element query asked for a status its type does not have returns nothing at all rather than erroring. A source configured that way would produce an empty result with no explanation, so each scope offers only the statuses its element type actually has.
Age
“Last updated before” and “created before” both accept an absolute date (2020-01-01) or a relative string (-90 days, -2 years). Craft’s own date helper rejects the relative forms, so Nuke falls through to PHP’s DateTime for those — anything neither can read is reported as an error rather than quietly treated as “no filter”.
Search
Craft’s own search syntax, run against the search index. It only matches what the index knows about, which on a site that has never been reindexed is a caveat worth remembering.
Element IDs
When you already know exactly which elements. Setting this ignores every other filter — a run created from an explicit list should delete that list, not that list re-filtered by conditions that may have changed.
Include trashed
Off by default: someone put those elements in the trash on purpose and the trash has its own expiry. Switch it on to include them, which combined with a permanent delete is how you empty the trash for one specific scope.
Stop after
A cap on how many elements one run may touch, on top of the site-wide ceiling in settings. Useful for working through something enormous in reviewable chunks.
Protected scopes
Handles listed under protected scopes in settings can never be targeted, whatever the form posts. The check runs on the server at preview time, so it also stops a console run and a queued job, and it is matched case-insensitively because a handle that differs only in case is not a different section.
What the preview calls it
Every target renders as a sentence — “Entries in News, of type Article, last updated before −2 years, capped at 500” — and that sentence is what gets stored on the run record. Six weeks later it is the only thing anyone will read.