Introduction:
Since May 2022, Article 6a of the EU Price Indication Directive — added by Directive (EU) 2019/2161, the “Omnibus” directive — has required every announced price reduction to state the item’s lowest price from the previous 30 days. In September 2024 the Court of Justice went further in case C-330/23: the percentage has to be calculated against that 30-day-lowest figure, not against whatever the price was the day before. Poland’s regulator fined two large marketplaces over exactly this in January 2026, so the rule is being enforced rather than debated.
I built a Wix Stores app for it, but the reason I am posting is not the app — it is the two cases that surprised me while implementing the rule. Both are easy to get wrong, and neither is obvious from the text of the article.
- The rule asks which price was applied during the 30 days, not which price changed inside them. A price you last touched six weeks ago is still the answer, so an implementation that only reads change events has a blind spot exactly where a store’s longest-running prices are.
- A “compare at” value is not a prior price. It is a display field you can type any number into, and nothing records that the item was ever sold for it. A struck-through price therefore does not satisfy the rule on its own, and the two can contradict each other on the same page.
How I did it:
- Record every price change as it happens: a product-update webhook, plus an hourly incremental sweep and a daily full reconcile so nothing is lost when a webhook is missed.
- Keep the price in effect at the start of the window, not only the changes inside it. That is what makes case 1 above come out right.
- Track history per variant, and stop counting a variant once it is deleted, otherwise the page keeps quoting a low that no shopper can reach.
- Ignore compare-at values entirely; only prices the store actually charged are eligible.
- Show the line only while the product is genuinely below its reference, and where two readings are possible take the lower one. Understating a prior price is safe; overstating it is the breach.
Tools, Documentation and APIs:
- Wix Stores Catalog V1 and V3 product reads, because stores are on either one.
- App Instance API for the plan, and product-update webhooks for the price changes.
- A Site Plugin extension renders the line on the product page, so there is no theme editing.
- Primary sources worth reading once, both easy to find by name: Article 6a of the Price Indication Directive on EUR-Lex, and the Court of Justice judgment in case C-330/23. I would link them, but a new account here is limited to two links per post.
Example:
- The rule with worked arithmetic, including both cases above, plus what the shopper ends up seeing on a product page: How the EU 30-day lowest price rule works on Wix
- The app itself: Omnibus 30-Day Lowest Price | Wix App Market | Wix.com — the prior-price line is free on every product with no cap; the paid plan adds price-history analytics and an exportable dated record.
Happy to answer questions about the rule whether or not you use the app.