3 min readOct 16, 2026by jakub

Omnibus Directive

When you announce a price reduction in the EU, you have to show what the product cost before it. This extension records every price change your store makes and prints that prior price — the lowest price of the 30 days before the reduction — beside the reduced one, with an optional -X% badge, so a promotion goes live without anyone compiling price history by hand.

Latest version: 3.0.0 — changelog

Product page: a price reduced from $100 to $80, showing the lowest price of the last 30 days, $100, and a -20% badge

Who it's for

  • Stores selling to consumers in the EU, where Article 6a of the Price Indication Directive, as amended by Directive 2019/2161 (the Omnibus Directive), requires the prior price beside any announced reduction.
  • Multi-country installations. Every setting resolves per website and store view, so each market's storefront can follow its own rules.
  • Stores whose prices change outside the admin panel — through REST, a bin/magento import or an ERP. The history comes from Magento's price index, so every source of a price change is covered.
  • B2B and wholesale catalogs with customer-group pricing: each customer group sees the prior price of its own prices.

Why it matters

  • Helps you meet Article 6a on every promotion. The prior price is derived from the prices your store actually charged, per website and customer group, so the figure beside a reduction is backed by a record rather than a spreadsheet.
  • The reference price stays put for the whole promotion. It is fixed when the reduction starts and does not drift as the sale runs, and once a reduced price has lasted 30 days it stops being presented as a reduction.
  • A discount badge you cannot overstate. The -X% figure is calculated from the prior price, never from a list price, and rounded down.
  • It shows where customers read prices — product pages, category grids, search results and Catalog Products List widgets, on Luma and on Hyvä.
  • Listing pages stay fast. A whole page's figures load in one batched query, and stores on Smile ElasticSuite can serve them from the search index.

See it in action

Each example below is asserted by the extension's test suite on a live store.

You setCustomers see
A product at 100, then reduced to 80"The lowest price in the last 30 days: $100.00" beside the $80.00 price
The same reduction, with Show Discount Badge on and Minimum Discount (%) at 10A -20% badge next to that figure
A reduction from 100 to 95, minimum discount 10The prior price of $100.00, without a badge — 5% is below the minimum
A price that has not changed, Always Show Historical Price offNo figure at all — there is no reduction to announce

Features

Each row links the walkthrough on the usage page, which is available to clients who own the extension.

FeatureBenefit
How the prior price is producedEvery price change is recorded from Magento's price index, so the figure beside a reduction is backed by what the store actually charged, per website and customer group — or read from a product attribute a PIM or ERP fills
Verify it on a real productLower a price, reindex, and see the prior price on the product page — and choose whether a product whose price has not changed shows the figure at all
Show a -X% discount badgeAdvertise the reduction only where it is worth highlighting, with a percentage rounded down so it never overstates
Category listingsThe figure and badge appear under every product in category grids and Catalog Products List widgets, loaded in one query per page
Search resultsQuick and advanced search results carry the figure too, with no separate switch to remember
Hyvä storefrontsThe same figure and badge on a Hyvä storefront, decided by the same rule, with Tailwind-safe markup
Product typesSimple, configurable, grouped, bundle and downloadable products all show the figure
Customer groups and websitesEach customer group sees the prior price of its own prices, and each website or store view can run its own display rules
Indexing and the daily jobPrice history keeps itself current on Magento's cron, and a daily job ends reductions after 30 days without anyone editing products
ElasticSuite companion moduleOn stores with Smile ElasticSuite, listing figures come from the search index, with an automatic fallback to the database

Competing solutions

The right-hand column describes common practice across marketplace extensions, not any particular vendor.

QoliberTypical marketplace extension
GitLab accessFull access to the module's GitLab repository — source, history, issues and merge requestsVaries by vendor
Packagist installationInstalled and updated with Composer from our private Packagist (qoliber.repo.packagist.com)Varies by vendor
Slack access to the development teamA shared Slack channel with the developers who build and maintain the moduleUsually ticket-based
Unit tests8 PHPUnit unit tests (3 classes) in the repositoryNot typically published
Integration tests46 Magento integration tests (10 classes), run before every releaseNot typically published
E2E Playwright tests69 Playwright end-to-end tests (22 spec files) on Luma and Hyvä, run before every releaseNot typically published
DocumentationFull docs portal: installation, configuration, usage walkthroughs with screenshots, troubleshooting, a developer guide and a module referenceVaries by vendor
Hyvä supportA dedicated Hyvä package with its own layouts and templates, tested on Hyvä before every releaseVaries by vendor
PHP / Magento rangePHP 8.1 – 8.5; Magento Open Source 2.4.7 – 2.4.8 and the equivalent Mage-OS releasesVaries by vendor

What sets it apart

  • Hyvä-native. qoliber/omnibus-directive-hyva ships Hyvä layouts and templates registered with Hyvä's Tailwind scanner, not a Luma template placed on a Hyvä page.
  • No third-party service. Price history is recorded and stored in your Magento database and, optionally, your own search index. Nothing about your pricing leaves the store.

Hyvä product page: the Joust Duffle Bag at $80.00 with "The lowest price in the last 30 days: $100.00" and a -20% badge beneath the add-to-cart row

Also available in: Polish.

Good to know

  • History starts when you install. A reduction is only presented as one once the store has recorded the price before it. Products whose price has not changed since installation show no prior price and no badge.
  • The badge needs Dynamic pricing. In Static mode the attribute is not a record of the price in effect before the current one, so no badge is shown.
  • The extension shows the figure; it does not decide what counts as an announced reduction. Whether a given price change is a promotion in the legal sense is still your call — use Always Show Historical Price if you prefer the figure everywhere.
  • Cron must run. The price index updates on Magento's schedule, and a daily job ends reductions after 30 days.

Supported versions

PHP 8.1 – 8.5. magento/framework >= 103.0.0 < 104 and magento/module-catalog >= 104.0.0 < 106 — Magento Open Source 2.4.7–2.4.8 and the equivalent Mage-OS releases. The Hyvä and ElasticSuite companions are optional and installed separately.

Next steps

Omnibus Directive — Compliance & Legal — Extensions | qoliber Docs