Shopware GDPR & Compliance

Lowest Price 30 Days Shopware 6: Omnibus Directive Compliance (EU Strikethrough Price)

Omnibus Directive, the real 30-day window

Display the lowest price from the 30 days preceding your promotion on Shopware 6, calculated exactly as the law requires: window anchored to the start of the reduction, consecutive promotions frozen, and never a reference price displayed without history to prove it.

At a glance
  • Reference price calculated over a 30-day window anchored to the start of the reduction, not a sliding minimum
  • Consecutive reductions frozen on the price before the first promotion in the series
  • Automatic capture from installation: Shopware scheduled task and event-driven capture on every price change, per variant and currency
  • Defence dashboard and timestamped CSV exports of what was actually displayed to visitors
  • Shopware 6.5 to 6.7, PHP 8.2 to 8.4, native multi-Sales Channel
EU Compliance Shopware 6.5 to 6.7 Multi-Sales Channel Variants & multi-currency No external dependency
  • 30-day refund
  • 12 months updates
  • 24h support
www.datafirefly.com/en/
Lowest Price 30 Days Shopware 6: Omnibus Directive Compliance (EU Strikethrough Price)
v1.0.0 · updated 2026-08-11
What it does

The short version.

01

The 30-day window, anchored in the right place

The reference price is the lowest charged during the 30 days preceding the start of the reduction. The window stops at the moment the promotion begins instead of sliding with today's date, which is exactly what the legislation requires.

02

Consecutive promotions frozen

When reductions follow one another, the reference stays anchored to the price charged before the first promotion in the series. The Shopware admin shows the freeze date and the reason applied.

03

Automatic capture from installation

Daily Shopware Scheduled Task, automatic catch-up if the last run was skipped, and event-driven capture via Subscribers on every real price change: product editor, import, scheduled promotions.

04

Defence panel and proof exports

Log of what was actually displayed to your visitors, day by day, and timestamped CSV exports ready to hand over in case of an inspection.

The long version

Everything you'd want to know before you install.

A detailed look at how Lowest Price 30 Days Shopware 6: Omnibus Directive Compliance (EU Strikethrough Price) 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, every price reduction announcement aimed at an EU consumer 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 turnover threshold. National enforcement authorities, including the CMA in the UK and the Bundeskartellamt in Germany, penalise inaccurate claims, and fine amounts are indexed to annual turnover.

§ 02

Why a sliding minimum is not compliant

Most solutions record a price history and display the minimum over the last 30 days from today. The legislation asks for something different: the window stops at the moment the reduction begins. A sliding minimum gradually incorporates the promotional price itself into the window, which lowers the displayed reference day by day and produces a claim that no longer means anything. This plugin anchors the window to the start of the reduction and keeps it stable for the entire duration of the promotion.

§ 03

Consecutive 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 in the series; otherwise each new reduction compares itself to the previous one and the announced discount becomes artificial. The engine detects series, freezes the reference price, and shows in the admin the freeze date and the reason applied, with a configurable series boundary set to 60 days by default.

§ 04

Automatic capture, integrated into the Shopware lifecycle

Two mechanisms work in parallel. A daily Scheduled Task registered in the Shopware scheduler scans the catalogue and records price states, with automatic catch-up if the last run is more than 24 hours old. In addition, Subscribers react to product.written and promotion.written events to capture every real price change: product editing, catalogue import, start and end of scheduled promotions. Duplicates are discarded; one history row corresponds to one real price change.

§ 05

A defence panel, because compliance must be provable

Displaying the correct notice is not enough if you cannot demonstrate what your visitors actually saw. Every served display is logged, aggregated by day, product and reference price. The defence dashboard in the Shopware admin gives compliance status product by product, and timestamped CSV exports are generated as a stream, without saturating memory, even on a large catalogue. You have a dated file ready to hand over in case of an inspection or complaint.

§ 06

Freeze planner for your commercial peak events

A price increase too close to a commercial event undermines the reference: the price recorded during the preceding 30 days stays low, and the announced discount loses its point. The planner calculates for each event the deadline beyond which a price change becomes counter-productive, roughly one month before the start of the event. You prepare Black Friday, sales and seasonal events with a coherent price calendar.

§ 07

Native Shopware integration: Sales Channels, Rule Builder, Snippets

History is partitioned by Sales Channel: each channel keeps its own price snapshots, which guarantees consistency on multi-store installations. Display conditions for the notice leverage the Shopware Rule Builder, which lets you restrict the notice to EU countries, specific customer groups or Sales Channels without writing code. Displayed texts go through the native Shopware snippet system, making them editable and translatable directly in the admin.

§ 08

Light on the front, lean in the database

The reference price calculation is cached, reads use composite indexes and never write during display. The 30-day history chart is rendered by a vanilla JavaScript canvas of approximately 3 KB, with no external library, no CDN and no third-party cookie. The notice line is inserted below the price via Shopware CMS blocks, and variant products recalculate their reference on selection change.

§ 09

Installation, first days and existing data migration

Installation takes a few minutes: upload the ZIP in Extensions, the plugin creates its tables, schedules the Scheduled Task and seeds history with the current catalogue state. Until history covers the required window, no notice is displayed, and a specific wording flags recently listed products. Install before your promotions rather than on the day itself. If price history already exists in another plugin, the import detects it by table structure and migrates the data without creating duplicates.

§ 10

Auditable code and clear licence

The code ships unencrypted, with a clean Symfony namespace, standard Shopware dependency injection and no production dependency to install. Admin actions are protected by Shopware ACL and CSRF tokens, queries are prepared via Doctrine DBAL, and no secret is hardcoded. The licence covers one production store and includes 12 months of updates. On uninstall, settings are removed but price history is kept by default, since it constitutes your legal proof, with an explicit purge option if you wish to delete everything.