Product predicate language
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
| Field | Value |
|---|---|
sku | Variant SKU |
country_code | Price country or null |
channel.id | Price channel ID or null |
customer_group.id | Price customer-group ID or null |
price.id | Price ID |
price.amount | Integer minor-unit amount |
price.currency | Currency code |
product.id, product.name, product.slug | Product identity and labels |
product.collections | Collection entries with id, name, and slug |
variant.id, variant.name | Variant 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
This affects eligible EUR price records for that SKU. It does not automatically affect another currency or create a base price.
Target a collection
Use collection IDs for relationships that must survive slug changes.
Narrow a price dimension
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.