Appearance
Filters & search guide
Filters decide which products or variants a job will touch. Use this guide to understand scope, logic, and field-specific behavior so you can build precise, repeatable selections.
Choose the right scope
- Product scope filters (default) match entire products. A job will touch all variants on any matching product unless you also add variant-specific filters.
- Variant scope filters (toggle inside the builder) allow you to target specific variants by SKU, option values, title, position, barcode, or price. Only matched variants will be edited.
- Scope is displayed next to the builder title (“Products that match…” vs “Variants that match…”). Confirm it before running a job.
- For variant-aware actions (Price, SKU, Barcode, Edit/Delete/Replace Variants), remember that the Filter products step always decides which products are in scope, and each action’s Variants to edit control then narrows which variants on those products are actually changed. Variant filters never extend the job to products that don’t match the top-level product filter.
Filter builder basics
- Open Filter products/variants in the job setup flow.
- Pick a field (Title, Vendor, Tag, Variant price, Variant SKU, Variant barcode, Variant options, Status, Metafield, etc.).
- Choose an operator:
- Text fields:
contains,does not contain,is,is not. - Numeric/date fields:
is,greater than,less than,between. - Tags/collections:
has any of,has all of,does not have. - Existence:
is empty,is not empty.
- Text fields:
- Enter a value or list of values, then click Add condition.
- Repeat to stack multiple conditions.
Use the match toggle above the rule list to switch between All conditions (AND) and Any condition (OR). Advanced mode lets you add a NOT group for exclusions (e.g., “Title contains Shirt AND NOT Tag is Archived”).
Field & operator reference
| Field group | Common operators | Notes |
|---|---|---|
| Title, vendor, product type, handle | contains / does not contain / is / is not | Text searches are token-based; use quotes for exact phrases. |
| Tags | has any of / has all of / does not have | Tags are case-insensitive; separate values with commas. |
| Status | is / is not | Filters by product status (for example, Active vs Draft). |
| Variant price | equals / greater than / less than / between | Uses variant pricing; combine with variant scope for specific size/color edits. |
| SKU, barcode | contains / is / is empty | These fields are case-sensitive; match the exact casing stored in Shopify. |
| Metafields | is / is not / contains (strings) | Provide namespace.key, then enter the desired value. |
| Option values (values for option names like Size or Color) | contains / is / is not | Variant scope only; matches the specific value such as Small or Red. |
| Created/updated/published dates | on / before / after / between | Dates follow the store’s timezone. |
Looking for a full developer-friendly list? See app/lib/filterRegistry.ts inside the repo for the canonical catalog of fields and operators.
Case sensitivity
- Title, vendor, product type, tags, status, and price filters are case-insensitive.
- SKU, barcode, and metafield value filters are case-sensitive —
SKU123andsku123are different. Copy/paste values from Shopify to avoid missed matches. - When in doubt, run Preview count to confirm the matched totals before adding actions.
Common filter recipes
- All T-shirts from Vendor X:
Product type is T-ShirtANDVendor is Vendor X. - Variants with a specific SKU prefix: Switch to Variant scope →
Variant SKU contains ABC-. - Unpublished seasonal products:
Status is DraftORPublished status is Unavailable. - Products missing SKUs:
SKU is empty(variant scope) to find variants without SKUs and then pair with a pattern-based SKU job. - Metafield cleanup:
Metafield custom.brand is emptyto target products where your brand metafield hasn’t been populated yet.
On all plans, you can save complicated combinations as Saved Filter Groups so recurring cleanups stay consistent. Higher-tier plans allow more saved filter groups.
Troubleshooting filters
- If you see zero results, temporarily switch the match toggle to
Any conditionto test each rule individually. - Use Preview → Products table to inspect the first 50 matches; if a product shouldn’t be there, refine your rules.
- Filters mirror Shopify’s indexed search. If you need complex data joins (e.g., “orders where variants sold < 5”), consider exporting from Shopify Admin reports first. CSV import/export inside this app is coming soon and is not yet generally available.
Metafield filters: selection vs post-filtering
Metafield rules are compiled into Shopify’s product search query, so they do affect which products are selected before actions run. This helps ensure your job only touches products that truly match the metafield criteria.
See also
- Your first bulk edit
- FAQ → How do filters work?
- Pattern variables reference
- Troubleshooting → Variant mismatch
Was this helpful?
Still stuck? Visit the Support & contact checklist for what to include (shop URL, job ID, filters tried, screenshots), then email support@xyppy.com or open an issue at GitHub Issues.