WordPress WooCommerce

30-Day Lowest Price for WooCommerce (Omnibus Directive Compliance)

Omnibus Directive, the 30-day window done right

Display the lowest price of the 30 days preceding your promotion, computed the way the text requires: window anchored at the start of the reduction, promotional series frozen, and never a reference line displayed without the history to prove it.

At a glance
  • Reference price computed on a 30-day window anchored at the start of the reduction, not on a rolling minimum
  • Successive reductions frozen on the price charged before the first promotion of the series
  • Automatic capture from day one: daily snapshot plus capture on every price change, per variation and per currency
  • Defense dashboard and timestamped CSV exports of what your visitors were actually shown
  • WooCommerce 8.0 to 11, HPOS compatibility declared, PHP 8.0 to 8.3
EU compliance WooCommerce 8 to 11 HPOS ready Variations and multi-currency No external dependency
  • 30-day refund
  • 12 months updates
  • 24h support
www.datafirefly.com/en/
30-Day Lowest Price for WooCommerce (Omnibus Directive Compliance)
v1.0.0 · updated 2026-08-10
What it does

The short version.

01

The 30-day window, anchored where it belongs

The reference price is the lowest one charged during the 30 days preceding the start of the reduction. The window stops when the promotion begins instead of rolling with today's date, which is exactly what the text requires.

02

Promotional series frozen

When reductions run back to back, the reference stays anchored on the price charged before the first promotion of the series. The back office shows the freeze date and the reason applied.

03

Automatic capture from day one

Scheduled daily snapshot, automatic catch-up when the cron misses a run, and event capture on every price change: product editor, bulk edit, catalog import, scheduled sales.

04

Defense panel and proof exports

A log of what your visitors were actually shown, date by date, plus timestamped CSV exports ready to hand over during an inspection.

The long version

Everything you'd want to know before you install.

A detailed look at how 30-Day Lowest Price for WooCommerce (Omnibus Directive Compliance) works, why we built it the way we did, and the thinking behind the features above.

§ 01

What the Omnibus Directive actually requires

Since Directive 2019/2161 came into force, any announcement of a price reduction addressed to a consumer in the European Union must state the lowest price charged during the 30 days preceding the application of that reduction. The obligation covers product pages, category pages, banners and promotional campaigns, with no revenue threshold. National enforcement bodies act on inaccurate claims, and fines scale with turnover.

§ 02

Why a rolling minimum is not compliant

Most tools record a price history and display the minimum of the last 30 days counted from today. The text asks for something else: the window stops when the reduction begins. A rolling minimum gradually pulls the promotional price itself into the window, which drags the displayed reference down day after day and produces a claim that no longer matches anything. This plugin anchors the window at the start of the reduction and keeps it stable for the whole duration of the promotion.

§ 03

Back-to-back reductions, the case everyone misses

A back to school discount followed by an autumn campaign, then Black Friday, forms a series of reductions. The reference to display remains the price charged before the first promotion of the series, otherwise each new discount compares itself to the previous one and the announced saving becomes artificial. The engine detects series, freezes the reference price, and shows the freeze date and the reason in the back office, with a series boundary set to 60 days by default and adjustable.

§ 04

Automatic capture, from install and without intervention

Two mechanisms work in parallel. A scheduled daily snapshot walks the catalog and records the state of prices, with automatic catch-up when the last run is more than 24 hours old, which protects low-traffic stores where cron fires unreliably. Alongside it, event capture reacts to every real change: saving in the product editor, bulk edit, catalog import, start and end of scheduled sales. Duplicates are discarded, so one history row means one actual price change.

§ 05

A defense panel, because compliance has to be proven

Displaying the right line is not enough if you cannot demonstrate what your visitors saw. Every served display is logged and aggregated by day, product and reference price. The defense dashboard gives compliance status product by product, and timestamped CSV exports are generated as a stream, without saturating memory, even on a large catalog. You end up with a dated file, ready to submit during an inspection or a customer complaint.

§ 06

Freeze planner for your commercial peaks

A price increase too close to a commercial campaign sabotages the reference: the price recorded during the previous 30 days stays low, and the announced saving loses its appeal. The planner computes, for each event, the last date beyond which a price change becomes counterproductive, roughly a month before the campaign starts. You prepare Black Friday, seasonal sales and your own operations with a coherent price calendar instead of improvising the day before.

§ 07

Light on the front end, restrained in the database

The reference price computation is cached, reads rely on composite indexes and nothing is written during display. The 30-day history chart is rendered by a vanilla JavaScript canvas of roughly 3 KB, with no external library, no CDN and no third-party cookie. The reference line is inserted under the price through standard WooCommerce hooks, and variable products recompute their reference when the visitor switches variation.

§ 08

Install, early days and migrating existing data

Installation takes a few minutes: you upload the archive, the plugin creates its tables, schedules the daily snapshot and seeds history with the current state of the catalog. While history does not cover the required window, no reference line is displayed, and dedicated wording flags recently listed products. Install before your promotions rather than on the day itself. If price history already exists in another extension, the importer detects it from the table structure and migrates the data without creating duplicates.

§ 09

Auditable code and a clear license

Code ships unencrypted, with a clean namespace, an in-house class loader and no production dependency to install. Admin actions are protected by security tokens and capability checks, queries are prepared, and no secret is hard coded. The license covers one production store and includes 12 months of updates. On uninstall, settings are removed but price history is kept by default, since it is your legal evidence, with an explicit purge option if you want everything erased.