Docs
Dashboard

Product predicate language

Last updated View as Markdown

Product predicate language

A product discount predicate evaluates an individual variant price record. The same variant can have one matching EUR price and another non-matching price. Optional channel, country, and customer-group dimensions belong to that price record, not to the shopper’s current browser state.

Supported fields

FieldValue
skuVariant SKU
country_codePrice country or null
channel.idPrice channel ID or null
customer_group.idPrice customer-group ID or null
price.idPrice ID
price.amountInteger minor-unit amount
price.currencyCurrency code
product.id, product.name, product.slugProduct identity and labels
product.collectionsCollection entries with id, name, and slug
variant.id, variant.nameVariant identity and label

Product tags, categories, and cart fields are not part of this context. Use a supported collection, SKU, or identity condition instead.

Target one SKU and currency

SKU and currency
Code in text

This affects eligible EUR price records for that SKU. It does not automatically affect another currency or create a base price.

Target a collection

Collection
Code in text

Use collection IDs for relationships that must survive slug changes.

Narrow a price dimension

Price channel
Code in text

Replace the placeholder with an actual channel ID. A rule requiring a channel ID does not also match a price with no channel dimension. The same distinction applies to customer-group and country constraints.

Verify timing and amounts

The base price’s validFrom and validTo window and the discount’s validFrom and validUntil window are separate. Verify both when a scheduled reduction is missing. Pair price.amount comparisons with a currency condition, and test the boundary in minor units.

Read Product discounts for lifecycle and Predicate language for shared syntax.