Price Filters
API reference for configuring price filters on promotions to control which products are eligible based on their price type.
Price Filters API Reference
Table of Contents
- Overview
- API Properties
- Price Filter Mode
- Price Type Filter
- Use Discounted Price as Base
- API Examples
- Best Practices
- Troubleshooting
Overview
Price filters let you control which products are eligible for a promotion based on their price type. By default, promotions apply to all products regardless of whether they already have a discounted or member-specific price. Price filters allow you to:
- Exclude products that already have discounted or member prices from the promotion
- Include only products that have discounted or member prices
- Calculate discounts from the sale price instead of the original price when stacking promotions
Price filter properties are available on all promotion types. They are set at the promotion level (not inside promotionData).
API Properties
Price filters are configured using three properties on the promotion request:
| Property | Type | Default | Description |
|---|---|---|---|
priceFilterMode | string | "None" | Controls the filtering behavior: "None", "Exclude", or "Include" |
priceTypeFilter | string | "None" | Which price types to filter: "None", "Discounted", "MemberPrice", or "Discounted, MemberPrice" |
useDiscountedPriceAsBase | bool | false | When true, calculates the discount from the discounted price instead of the original price |
These properties are available on:
OmniumPromotionRequest(POST) — for creating promotionsOmniumPromotionPatch(PATCH) — for updating promotions (useDiscountedPriceAsBaseis nullablebool?for patch semantics)OmniumPromotion(GET response) — returned when reading promotions
Price Filter Mode
The priceFilterMode property controls how the promotion filters products based on their price type.
| Value | Description |
|---|---|
"None" | No filtering. All products are eligible regardless of price type. This is the default. |
"Exclude" | Products with prices matching the selected priceTypeFilter are excluded from the promotion. |
"Include" | Only products with prices matching the selected priceTypeFilter are eligible for the promotion. |
Note: priceFilterMode has no effect if priceTypeFilter is "None", and vice versa. Both must be set for filtering to take effect.
Price Type Filter
The priceTypeFilter property specifies which price types to filter on. It is a flags-based value, meaning multiple types can be combined.
| Value | Description |
|---|---|
"None" | No price types selected. No filtering is applied. |
"Discounted" | Regular discounted prices — products where the price has a discount amount greater than zero and is not a customer club specific price. |
"MemberPrice" | Customer club / member-specific prices — products where the price is marked as a customer club specific price. |
"Discounted, MemberPrice" | Both discounted and member prices. |
Price Classification Priority
When classifying a product's price, the member price flag always takes priority:
- If a price is marked as a customer club specific price (
IsCustomerClubSpecificPrice = true), it is always classified asMemberPrice, even if it also has a discount amount. - A price is classified as
Discountedonly when it has a discount amount greater than zero AND is not a customer club specific price.
Use Discounted Price as Base
The useDiscountedPriceAsBase property controls which price is used as the base for calculating the promotion discount.
| Value | Behavior |
|---|---|
false (default) | The discount is calculated from the product's original price. |
true | The discount is calculated from the product's already-discounted price (sale price). |
This property is only meaningful when the promotion allows discounted products — it has no effect if discounted prices are excluded via priceFilterMode: "Exclude" with priceTypeFilter: "Discounted". In the Omnium UI, the toggle is hidden in this case.
Calculation Example
A product has an original price of $200 and a sale price of $150 (discount amount of $50). The promotion offers a 20% discount.
| Setting | Base Price | Discount | Final Price |
|---|---|---|---|
useDiscountedPriceAsBase: false | $200 | 20% of $200 = $40 | $160 |
useDiscountedPriceAsBase: true | $150 | 20% of $150 = $30 | $120 |
API Examples
Example 1: Exclude Already-Discounted Products
Prevent a promotion from applying to products that are already on sale.
Example 2: Exclude Both Discounted and Member Prices
Ensure a promotion only applies to products at their full original price.
Example 3: Only Apply to Sale Items
Create a promotion that only applies to products already on sale — for example, an additional discount during a clearance event.
Note: useDiscountedPriceAsBase is set to true so the 20% discount is calculated from the sale price, not the original price.
Example 4: Member-Only Promotion Excluding Member Prices
Apply a promotion for customer club members, but exclude products that already have a member-specific price.
Example 5: MultiBuy with Price Filters
Prevent a "Buy 2, Get 1 Free" promotion from applying to products that are already discounted.
Example 6: Updating Price Filters via PATCH
Update an existing promotion to add price filters:
To remove price filters from an existing promotion:
Best Practices
1. Match Filter Mode and Type Filter
Both priceFilterMode and priceTypeFilter must be set to non-None values for filtering to take effect. Setting one without the other has no effect.
2. Use Exclude for Preventing Double Discounts
The most common use case is excluding already-discounted products to prevent "double discounting":
3. Set UseDiscountedPriceAsBase Intentionally
When allowing a promotion to apply to discounted products, decide explicitly whether the discount should be calculated from the original or sale price. Not setting useDiscountedPriceAsBase defaults to calculating from the original price, which may give a larger discount than intended.
4. Test with Representative Product Data
Price filters depend on correct price classification. Ensure your test products have:
- Products with regular prices (no discount)
- Products with discounted prices (sale prices)
- Products with member/customer club specific prices
- Products with both discount amount and member flag (to verify classification priority)
5. Consider Impact on Price Generation
Price filters affect which product prices are generated and displayed. When using Exclude mode, products with excluded price types will not receive promotional prices, meaning the sale or member price will still be displayed but without the additional promotion discount.
Troubleshooting
Price Filters Not Taking Effect
Check:
- Both
priceFilterModeandpriceTypeFilterare set to non-Nonevalues — both are required. - The product actually has the price type you're filtering on (e.g., the product must have a discounted price for
Discountedfiltering to have an effect). - The string values are correctly cased:
"Exclude","Include","Discounted","MemberPrice".
Products Unexpectedly Excluded
Check:
- Verify the price classification of the product's prices. A price with
IsCustomerClubSpecificPrice = trueis always classified asMemberPrice, even if it also has a discount amount. - When using
priceTypeFilter: "Discounted, MemberPrice"withExcludemode, both discounted and member prices are excluded — the product must have a non-discounted, non-member price to be eligible.
UseDiscountedPriceAsBase Not Working
Check:
- Verify the product actually has a discounted price (a price where the sale price differs from the original price).
- Ensure
priceFilterModeis not set toExcludewithpriceTypeFilter: "Discounted"— if discounted prices are excluded,useDiscountedPriceAsBasehas no products to apply to. - For MultiBuy promotions, verify the discount type (percentage vs. fixed amount) —
useDiscountedPriceAsBaseaffects the base price used in the calculation for both types.
Discount Amount Is Larger Than Expected
If a promotion applies a larger discount than expected on sale items, check whether useDiscountedPriceAsBase should be set to true. By default (false), percentage discounts are calculated from the original price, which can result in a discount larger than the current sale price.
Document Version: 1.0 Last Updated: 2026 API Version: Compatible with Omnium OMS .NET 10.0+
