Since January 2023, the EU Omnibus Directive has been in force across EU member states. If you run promotions, sales, or any form of discounting on products sold to EU customers, you are required to display the lowest price charged in the 30 days before the promotion began.
The rule sounds simple. The operational reality - especially for businesses with large catalogs and frequent pricing changes - is considerably more complex.
What the Omnibus Directive actually requires
The relevant provision comes from Article 6a of the revised Price Indication Directive (2019/2161/EU). In plain terms:
When you advertise a price reduction, you must display the prior lowest price - meaning the lowest price you charged for that product in the 30 days immediately before the promotion started.
This applies to:
- Sale events (Summer Sale, Black Friday, etc.)
- Time-limited discounts shown as strikethrough/compare-at prices
- Any UI that presents a price as reduced from a previous price
It does not apply to:
- Loyalty program pricing
- Individually negotiated prices (B2B quotes)
- Perishable goods in some member states
Why this is operationally difficult
The law requires you to display a price that is, by definition, historical. Your systems need to have been tracking price history continuously - not just the current price - so you can answer the question "what was the lowest price in the 30 days before this promotion?"
For teams managing pricing in spreadsheets or with basic e-commerce tools, this is genuinely hard:
Spreadsheets don't track history. When you update a price in a cell, the previous value is gone unless you have a manual logging process. Most teams don't.
E-commerce platform pricing isn't always retained. Shopify, for example, stores the current compare-at price but doesn't automatically log every price change with timestamps.
Multiple price types create confusion. You may have a selling price, an RRP, a B2B price, and a compare-at price. The Omnibus requirement applies specifically to the price you were actually charging consumers - not the RRP.
Promotions may be run platform-side. If your discounts are applied at the Shopify or marketplace level rather than in your PIM, the price history may not exist in any single system.
How compliant businesses handle this
There are three approaches teams take:
1. Manual tracking (not recommended for scale). Maintain a spreadsheet log of every price change with timestamps. Pull the 30-day minimum before each promotion. This works for small catalogs with infrequent promotions, but it doesn't scale and is error-prone.
2. Platform-level tracking. Some e-commerce platforms have added Omnibus compliance features that track price history and display it automatically. This only covers pricing set directly in the platform - not pricing that originates in a PIM or ERP and is pushed to the platform.
3. PIM-level tracking (most robust for multi-channel businesses). If your prices are managed in a PIM and distributed to channels, tracking price history in the PIM gives you a single authoritative record that feeds all channel exports correctly. When a promotion starts, the PIM can calculate and include the 30-day lowest price in every channel export automatically.
What "30-day lowest price" means in practice
A few clarifications that come up frequently:
The 30 days are before the promotion starts, not before the current date. If you run a promotion that begins on June 1st, you look at prices from May 1st through May 31st.
It's the lowest price you actually charged - not the RRP, not the original price, not a reference market price. If you had the product at €89.99 for most of April, then dropped it to €79.99 on April 28th before running a "sale" at €69.99 on May 5th, the displayed prior price must be €79.99 (the lowest in the 30 days before May 5th), not €89.99.
Graduated promotions count. If you start at 10% off and increase to 20% off, the 30-day window is recalculated from each new promotion start date.
Member states have latitude. Germany, Austria, and France have implemented additional guidance. If you sell heavily in specific markets, check country-specific implementation.
The consequences of non-compliance
The Omnibus Directive gives EU member states authority to impose penalties, and enforcement has ramped up since 2023. Specific consequences vary by country:
- In Germany, consumer protection associations have actively sent cease-and-desist letters to online retailers displaying non-compliant price labels
- In France, the DGCCRF has conducted inspections of e-commerce sites
- Fines vary by member state but can reach into the hundreds of thousands of euros for repeat or deliberate violations
The reputational risk is arguably as significant as the financial one: non-compliant price displays can be challenged publicly by consumer advocates.
Automating Omnibus compliance
The cleanest solution is a pricing system that tracks price history continuously and can calculate the 30-day minimum automatically when needed.
Applosive's pricing engine tracks every price change with a timestamp for every product. When you configure a promotional price, the system automatically calculates and stores the 30-day lowest price alongside it, available via the API. Wiring that value directly into channel exports and drivers is in progress, not yet live.
This means:
- No spreadsheet logs to maintain
- No risk of using the wrong prior price
- One authoritative source for the correct value, ready to feed every channel once export wiring ships
For businesses running frequent promotions across large catalogs and multiple EU markets, automated Omnibus tracking isn't a nice-to-have - it's a basic operational requirement.