Skip to main content

Lowest price

How 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
  • price list
  • product variant

Only buyable product prices will be recorded. That means that all the following conditions must be met for a price to be included in the calculation:

  • active product display
  • store is direct to consumer
  • product display is enabled for given market
  • product variant is active
  • price list 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)
warning

Vouchers are not included in the lowest price calculation

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
  • price list
  • product variant

They are also verified daily after midnight.

Where can the lowest price be accessed?

Lowest price feature is supported in Storefront API. Prices are recorded only for direct to consumer stores.

Some examples could be when querying DisplayItems, DisplayItems with lowest price by price list or when fetching price list information with lowest price by market like example from schema below.

  • DisplayItem.lowestPrice
  • DisplayItem.lowestPriceByPricelist
  • PricelistLowestPrice.lowestPriceByMarket

Examples

API docs

NoSession mode

Request

query {
displayItems {
list {
...NoSessionDisplayItemFields
}
}
}
fragment NoSessionDisplayItemFields on DisplayItem {
lowestPriceByPricelist {
pricelist {
id
}
lowestPriceByMarket {
...MarketLowestPriceFields
}
}
}
fragment MarketLowestPriceFields on MarketLowestPrice {
markets
price {
value
formattedValue
}
originalPrice {
value
formattedValue
}
periodDays
}

Response

{
"data": {
"displayItems": {
"list": [
{
"lowestPriceByPricelist": [
{
"pricelist": {
"id": 19
},
"lowestPriceByMarket": [
{
"markets": [7, 6, 5, 2, 1],
"price": {
"value": 119,
"formattedValue": "119.00 SEK"
},
"originalPrice": {
"value": 119,
"formattedValue": "119.00 SEK"
},
"periodDays": 30
}
]
},
{
"pricelist": {
"id": 20
},
"lowestPriceByMarket": [
{
"markets": [1, 7, 2, 5, 6],
"price": {
"value": 240,
"formattedValue": "240.00 USD"
},
"originalPrice": {
"value": 240,
"formattedValue": "240.00 USD"
},
"periodDays": 30
}
]
},
{
"pricelist": {
"id": 21
},
"lowestPriceByMarket": [
{
"markets": [1, 7, 6, 5, 2],
"price": {
"value": 1670,
"formattedValue": "1670.00 DKK"
},
"originalPrice": {
"value": 1670,
"formattedValue": "1670.00 DKK"
},
"periodDays": 30
}
]
},
{
"pricelist": {
"id": 22
},
"lowestPriceByMarket": [
{
"markets": [6, 5, 2, 1, 7],
"price": {
"value": 2640,
"formattedValue": "2640.00 NOK"
},
"originalPrice": {
"value": 2640,
"formattedValue": "2640.00 NOK"
},
"periodDays": 30
}
]
},
{
"pricelist": {
"id": 28
},
"lowestPriceByMarket": [
{
"markets": [5, 6, 2, 1, 7],
"price": {
"value": 30,
"formattedValue": "30.00 GBP"
},
"originalPrice": {
"value": 30,
"formattedValue": "30.00 GBP"
},
"periodDays": 30
}
]
}
]
}
]
}
},
"extensions": {
"traceId": "ef3a07b297e4dd01cd0f621e64c67b32"
}
}

Session mode

Request

query {
displayItems {
list {
...SessionDisplayItemFields
}
}
}
fragment SessionDisplayItemFields on DisplayItem {
lowestPrice {
...LowestPriceFields
}
}
fragment LowestPriceFields on LowestPrice {
price {
value
formattedValue
}
originalPrice {
value
formattedValue
}
periodDays
}

Response

{
"data": {
"displayItems": {
"list": [
{
"lowestPrice": {
"price": {
"value": 20,
"formattedValue": "20.00 EUR"
},
"originalPrice": {
"value": 20,
"formattedValue": "20.00 EUR"
},
"periodDays": 30
}
}
]
}
}
}