Cartnorm Omnibus Lowest Price

Description

Since 2022, every shop selling to consumers in the EU must show the lowest price of the 30 days before a price reduction, and calculate any strikethrough price or “-20%” badge from that price (Directive 98/6/EC, Article 6a, confirmed by the EU Court of Justice in case C-330/23, Aldi Süd).

Cartnorm does this correctly and quietly, without slowing your store down.

Correct legal logic

  • The 30-day window ends when the reduction starts, not today, and stays fixed for the whole sale. A long sale never “drifts” to its own sale price.
  • The strikethrough price and the percentage badge are calculated from the 30-day lowest price, not from a price you raised just before the sale.
  • Fake discount guard: if the “sale” price is not actually below the 30-day lowest price, the strikethrough price and the “Sale!” badge are hidden automatically.
  • Every variation of a variable product has its own history and its own reference price.
  • Scheduled sales are recorded at their real start time.
  • Never shows 0.00 or an empty notice.

Rules for each EU country

Choose your country (or let Cartnorm read it from your store address). The member states differ in details such as progressive reductions and new products:

  • Poland and Spain: every further reduction gets a new reference price.
  • Belgium: progressive reductions up to 30 days; at least 7 days of history for new products.
  • Netherlands: progressive reductions up to 3 months; the real period is stated for new products.
  • Italy: the real period is stated for products on sale for less than 30 days.
  • Germany, Austria, France, Czech Republic, Sweden, Portugal, Ireland, Romania: one uninterrupted campaign keeps its reference price.

You can override the progressive-reduction rule in the settings.

No database bloat

Cartnorm stores history in one small table and writes a row only when a price actually changes. Saving a product 1,000 times without changing its price adds nothing. Old history is removed automatically, while the price needed for the current calculation is always kept.

Every way prices change is captured

Product editor, quick edit, bulk edit, CSV import, REST API, WP-CLI, scheduled sales, and plugins that write prices directly. A daily background check catches anything else.

Switch without losing your history

Already using another Omnibus plugin? Cartnorm imports the price history of:

  • Omnibus — show the lowest price (iworks)
  • WC Price History

so your 30-day history is complete from day one.

Omnibus check: your whole shop at a glance

WooCommerce › Omnibus check lists every product that is reduced right now and tells you, in plain words, which ones need attention:

  • Not a genuine discount – the sale price is not below the 30-day lowest price.
  • History too short – the sale started before a full 30-day history existed.
  • Exempt and OK.

For shop owners and inspectors

  • An “Explain this price” panel on every product shows the reference price, the exact dates of the 30-day window, and the price history.
  • Correct mistakes with an audit trail. A typo was live for two hours? Correct or void that record, with a reason. The original value is kept in an audit log, so nothing is hidden from an inspector.
  • Export the price history and the audit log of one product or the whole shop as CSV. Free.
  • Exempt individual products (for example perishable goods reduced before their expiry date).

Honest sale badge

Optionally replace “Sale!” with a percentage calculated from the 30-day lowest price and rounded down, so it never overstates the saving.

For developers and headless shops

  • The WooCommerce REST API returns an omnibus object for every product and variation: lowest price, number of days, whether the discount is genuine, discount percentage and the ready-made notice text.
  • Filters and actions: cartnorm_reference_price, cartnorm_notice_html, cartnorm_should_display, cartnorm_country_rules, cartnorm_history_corrected.
  • WP-CLI: wp cartnorm seed, wp cartnorm show <id>, wp cartnorm import <source>, wp cartnorm prune.

Display anywhere

Product pages, shop and category pages, a block for block themes, an Elementor widget (with color, typography and alignment), and the [cartnorm_lowest_price] shortcode. Choose where the notice appears on product pages: under the price, under the short description, under the add-to-cart button, or nowhere (place it yourself). On variable products, the general notice names its variation and is replaced by the selected variation’s own notice. The customer-facing notice is built in for German, Polish, French, Italian, Spanish and Dutch shops, using the wording recommended by national regulators (for example “Najniższa cena z 30 dni przed obniżką” in Poland).

Free, with nothing locked

Every feature described above is included in this free plugin and works without an account or licence. An optional paid add-on, Cartnorm Omnibus Pro, adds tools for multi-currency shops and a few extras (see “Is there a Pro version?” in the FAQ).

Not legal advice

Cartnorm helps you meet the price-indication rules, but it is not legal advice. You remain responsible for your prices and for checking the law that applies to your shop.

Screenshots

Installation

  1. Install and activate the plugin. WooCommerce must be active.
  2. Go to WooCommerce › Settings › Products › Lowest price (Omnibus) and check the country rules.
  3. If you used another Omnibus plugin, click Import price history in the same settings section.

Cartnorm starts recording immediately. Until a product has 30 days of history, the regular price is used as a fallback (you can change this).

FAQ

Do I need this if I only sell outside the EU?

No. The rule applies to price reductions announced to consumers in the EU.

Why is the strikethrough price different from my regular price?

Because the law requires the strikethrough price and the percentage to be calculated from the lowest price of the 30 days before the reduction. If you prefer the WooCommerce default, change “Strikethrough price” in the settings.

Why did the “Sale!” badge disappear?

The sale price is not below the lowest price of the previous 30 days, so it is not a genuine reduction. Showing it as a discount could mislead customers. You can turn this guard off in the settings.

Does it work with variable products?

Yes. Each variation has its own history and its own notice.

Will it slow down my store?

No. Nothing heavy runs when a page loads or a product is saved. Background work runs in small batches through the WooCommerce Action Scheduler.

In which languages is the customer-facing notice shown?

The notice shown to shoppers is built in for German (Germany, Austria, Switzerland), Polish, French (France, Belgium), Italian, Spanish and Dutch (Netherlands, Belgium), so it appears in the shop language from day one. You can replace it with your own text under “Custom text” in the settings. When a translation from translate.wordpress.org is installed, it is used instead. All other texts can be translated on translate.wordpress.org.

Is there a Pro version?

Yes. Cartnorm Omnibus Pro is an optional paid add-on. This free plugin stays fully functional without it; nothing in it is locked or time-limited. Pro adds:

  • Multi-currency: the lowest-price notice in the currency the customer sees (WPML / WooCommerce Multilingual, Aelia, CURCY, FOX or your own rates), with a separate 30-day history for each currency.
  • A warning when the regular price was raised in the 30 days before a sale.
  • A monthly Omnibus report by email.
  • Google Shopping feed prices that match the 30-day lowest price shown in your shop.
  • An EU withdrawal button (Directive (EU) 2023/2673).

Details and prices: cartnorm.com/pricing. The free plugin shows a “Pro version” link on the Plugins screen and one small note in its own settings, which you can dismiss for good. Both disappear when Pro is active.

What happens when I uninstall the plugin?

The history table, settings and the plugin’s other stored data are removed.

Reviews

There are no reviews for this plugin.

Contributors & Developers

“Cartnorm Omnibus Lowest Price” is open source software. The following people have contributed to this plugin.

Contributors

Changelog

0.1.2

  • New: Pro link on the Plugins screen and an optional, dismissible note in the plugin’s own settings.

0.1.1

  • Fix: in block themes (such as Twenty Twenty-Five) the sale badge in shop and category lists now follows the plugin settings too: it is hidden on discounts that are not genuine, and shows the percentage when that option is on. Older product grid blocks are covered as well.
  • Added the Plugin URI header.
  • Admin messages are limited to the plugin’s own settings section: the import offer is an inline box there and can be dismissed, the history-building status is a plain line in the settings, and the “WooCommerce is missing” notice appears only on the Plugins screen.
  • The customer-facing notice texts for German, Polish, French, Italian, Spanish and Dutch are now built into the plugin; translation files are no longer bundled (translations come from translate.wordpress.org).
  • Uninstall now also removes import status options, per-product exemptions and dismissed-message flags.

0.1.0

  • First release.