Lowest price
Last updatedHow does the lowest price feature work?#
Price calculation#
The lowest price is calculated as the minimal price of a product attainable by using any active campaigns.
These prices are calculated for each valid combination of:
- market
- pricelist
- product variant
Only buyable product prices will be recorded. That means that all the following conditions must be met for a price to be considered during calculations:
- active product display
- store is direct to consumer
- product display is enabled for given market
- product variant is active
- pricelist is active
Recorded prices will be adjusted by any relevant campaigns that met the following conditions:
- the campaign is enabled for the market
- product variant is enabled for the campaign
- campaign status is active
- campaign date restrictions are satisfied (start and end dates)
Vouchers are not considered.
What about correcting price errors?#
There is no mechanism in place to correct a historical price. If a price was available, even for a split second, then it will show no matter what.
That also applies to setting the price to 0
- it will show as 0
(free product) in the API.
When are the prices calculated?#
They are calculated asynchronously on any modification to a:
- campaign
- market
- pricelist
- product variant
They are also verified daily after midnight.
Where can the lowest price be accessed?#
Lowest price feature is supported in both Checkout and Shop APIs. Prices are recorded only for direct to consumer stores.
In all the places where a product or selection response is returned:
- Product listing (
POST /products
) - Product details (
GET /products/{productId}
) - Bundles (
GET/POST /bundles/{productId}
) - Receipt (
GET /receipt
) - Selection (
GET/PUT /selection
,POST /items/{item}
,POST/DELETE /lines/{line}
) - etc.
There will be a new field lowestPrice
in the response:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
{
...,
"price": "200.00 SEK",
"priceAsNumber": 200,
"priceBeforeDiscount": "200.00 SEK",
"priceBeforeDiscountAsNumber": 200,
"discountPercent": 0,
"lowestPrice": [
{
"periodDays": 30,
"price": "100.00 SEK",
"priceAsNumber": 100,
"priceBeforeDiscount": "200.00 SEK",
"priceBeforeDiscountAsNumber": 200
}
],
"showAsOnSale": false,
"showAsNew": false,
...,
}