# EU Omnibus Compliance Monitoring: Build a 30-Day Lowest-Price History and Catch Non-Compliant Discounts

Source: PageCrawl.io Blog
URL: https://pagecrawl.io/blog/eu-omnibus-30-day-lowest-price-monitoring

---

At 08:14 on a Monday in February, the head of e-commerce compliance at a German fashion retailer opened an email from the local consumer protection authority. A test-purchase team had screenshotted one of the company's product pages the previous Thursday: a winter jacket marked "40% off, was 149 euros, now 89 euros." The problem was that the same jacket had been listed at 99 euros for most of the previous month. The "was" price of 149 euros had not been the price actually charged in the 30 days before the promotion. Under the EU's Omnibus rules, the only legal reference price was the lowest price in that 30-day window, which was 99 euros, making the real reduction roughly 10 percent, not 40. The retailer had no archive of its own historical prices with which to argue. The dated screenshot the regulator was holding was the only timestamped record in the room, and it belonged to the other side.

That gap, the absence of your own dated price history, is what turns a paperwork rule into a fine. The EU Price Indication Directive, as amended by the Omnibus Directive, does not just ask retailers to be honest about discounts. It defines exactly which number you are allowed to call the "before" price, and it expects you to be able to prove that number for every promotion you run. Pure price-tracking tools record the current price. They do not maintain the 30-day rolling minimum, they do not read the strikethrough and "% off" claims printed on the page, and they do not preserve a court-quality visual record of what a shopper actually saw on a given day.

This guide explains what Article 6a and the Aldi Süd ruling require in concrete terms, why ordinary price trackers cannot demonstrate compliance, which page elements you have to capture, and how to build a self-auditing 30-day lowest-price history with PageCrawl that alerts you the moment a discount claim is not backed by the prior 30-day minimum.

<iframe src="/tools/eu-omnibus-30-day-lowest-price-monitoring.html" style="width: 100%; height: 500px; border: none; border-radius: 4px;" loading="lazy"></iframe>

### What does the EU Omnibus 30-day lowest-price rule actually require?

The rule lives in Article 6a of the Price Indication Directive (98/6/EC), inserted by the Omnibus Directive (EU) 2019/2161 and in force across the EU since 28 May 2022. Any announced price reduction must state the "prior price," defined as the lowest price the trader applied during at least the 30 days before the reduction.

In plain terms, the strikethrough number next to your discounted price is not free for you to choose. If a product sat at 99 euros for three weeks, briefly touched 149 euros, then dropped to 89 euros, you cannot advertise the saving against 149 euros. The reference must be the 30-day low. The directive sets the floor at 30 days, but member states added their own variations. Germany codified it in the Price Indication Ordinance (PAngV §11), and several states permit longer reference windows or special handling for goods that deteriorate or have short shelf lives. Progressive reductions, where a price falls in stages during a single campaign, may keep referencing the original 30-day-prior low rather than resetting at each step.

The compliance burden is continuous, not one-off. Every time you display a "was" price, a "% off" badge, a "lowest price in 30 days" claim, or a struck-through figure, you are making a factual assertion about your own pricing history that a regulator can test against the real record. If you cannot reconstruct that record on demand, you cannot defend the claim. This is why treating Omnibus as a data problem, not a marketing problem, is the right framing, and why a broader [regulatory compliance monitoring](/blog/regulatory-compliance-monitoring) practice tends to absorb it well.

### What did the CJEU Aldi Süd ruling (C-330/23) change?

The Court of Justice of the European Union, in its 26 September 2024 judgment in Case C-330/23 (Aldi Süd), confirmed that a percentage reduction must be calculated from the 30-day lowest price, not the most recent price. It held that "price highlight" advertising, such as a prominent "top deal" sticker, must be measured against that same 30-day low.

Before the ruling, some retailers argued that a "% off" figure was a marketing comparison against an immediately preceding price, separate from the Article 6a "prior price" obligation. The Court rejected that. If a product was 99 euros at its 30-day low and you now sell it at 89 euros while shouting "minus 40 percent," the percentage you advertise is misleading, because the honest percentage against the legal reference price is about 10 percent. The reduction, the percentage, and any "lowest ever" or "top deal" flourish must all line up with the 30-day minimum.

The practical effect is that your monitoring cannot only watch the numeric price. It has to read the words and badges printed alongside it, because the Court made those promotional claims directly testable against the same historical record. That dual requirement, the numeric reference price plus the textual discount claim, is exactly the pairing that a change-history-plus-screenshot system is built to capture and that a spreadsheet of daily prices cannot.

### Why can't a standard price tracker prove Omnibus compliance?

A standard price tracker stores today's price. Omnibus compliance needs three things it does not produce: a rolling 30-day minimum recomputed every day, the promotional text and strikethrough reference price as displayed, and a tamper-evident dated visual record of the page a shopper actually saw. Missing any one leaves you unable to defend a discount claim.

#### The three artifacts a discount defense needs

First, the **30-day rolling low**, not just a price series. The legal reference price is a moving window minimum. You need each day's price logged with a timestamp so you can compute "the lowest price applied in the prior 30 days" for any promotion date, which is precisely what a continuous [competitor price monitoring](/blog/competitor-price-monitoring-ecommerce-guide) cadence gives you when it is applied to your own catalog.

Second, the **claim as published**. The "was 149 euros," the "40% off" badge, and the "best price" sticker are text and visual elements on the page. A price feed that only ingests the structured selling price never sees them, so it cannot tell you when the claim and the underlying 30-day low diverge.

Third, the **evidence**. If a regulator or a competitor challenges you, a CSV of numbers is weak. A timestamped, full-page screenshot of the live product page, archived automatically, is the artifact that holds up. This is the same discipline behind e-discovery and web evidence capture: the value is in the dated, unaltered record, not the summary. PageCrawl keeps screenshots on by default for exactly this reason, so the visual record accrues without anyone remembering to capture it.

### Which page elements do you need to capture for a defensible price history?

Capture five things on every promoted product page: the current selling price as a numeric value, the displayed reference or "was" price, the percentage-off or "save X" claim text, any "lowest price" or "top deal" badge, and a full-page screenshot. Together these let you reconstruct both the price history and the claim made on any given day.

#### Mapping each element to a tracking mode

- **Current selling price** as a numeric value with [price and number tracking](/blog/conditional-alerts-price-keyword-threshold-rules), so PageCrawl extracts the figure (for example 89.00) and stores it on a timeline you can query for the 30-day minimum.
- **Reference or strikethrough "was" price** as a second numeric element, tracked separately, so you can compare what you advertise as the prior price against the computed 30-day low.
- **Discount claim text** ("40% off," "Save 60 euros," "lowest price in 30 days") with keyword and text tracking, so a change in the wording or percentage is logged the moment it appears.
- **Promotional badge** ("Top Deal," "Best Price") with text or visual change capture, since the Aldi Süd ruling pulled these highlights into scope.
- **Structured product data** when the page exposes price and availability in a JSON or API response, using JSON and API field tracking to read the machine-readable price even when the visible markup is rendered dynamically.

PageCrawl renders the page fully before reading it, so it sees the same price, badge, and strikethrough that a real visitor sees, including values injected after the initial load. For pages behind a customer account or a regional storefront, login-gated monitoring lets PageCrawl sign in and capture the member-facing price rather than a guest placeholder, so your recorded history reflects what real shoppers were actually charged.

### How do you spot a non-compliant discount automatically?

Run a conditional rule that fires when the advertised reference price is higher than the 30-day lowest price you have recorded, or when the advertised percentage is larger than the real percentage computed from that low. Because PageCrawl stores every check on a timeline, the 30-day minimum is always available to compare against the claim on the page.

#### The logic in practice

For each promoted product, PageCrawl holds a daily timeline of the extracted selling price. The lowest value across the trailing 30 entries is your legal reference price. When the page starts advertising a discount, the system compares the displayed "was" price and "% off" claim against that computed minimum. If the "was" price exceeds the 30-day low, or the percentage implies a reference price you never actually charged, the rule trips and you get an alert before the promotion has run long enough to attract a regulator.

You can make the alerts conditional and quiet, so they only fire on genuine mismatches rather than on every routine price wobble. The mechanics are straightforward: set a numeric threshold, a direction, and a keyword condition, then let PageCrawl suppress everything that does not meet all of them. Note: pair the numeric reference-price check with a keyword condition on the discount text so a "40% off" badge that appears without a matching 30-day-backed reference price is flagged immediately, even if the raw selling price barely moved.

Routing matters too. A compliance alert is useless if it lands in an inbox nobody reads during a flash sale. Send mismatches straight into a dedicated channel using [website change alerts in Slack](/blog/website-change-alerts-slack), or to Telegram, Discord, or a webhook that opens a ticket, so the merchandising team can correct the reference price the same hour.

### What are the penalties for getting the reference price wrong?

Under the Omnibus Directive, member states must allow fines of at least 4 percent of the trader's annual turnover in the markets concerned for widespread cross-border infringements, or up to 2 million euros where turnover information is unavailable. Authorities also issue cease-and-desist orders, and consumer groups and competitors can bring unfair-competition actions that force you to withdraw the claim.

The reputational exposure is often larger than the fine. Consumer organizations routinely run test-purchase sweeps around Black Friday and seasonal sales, screenshot non-compliant "was/now" claims, and publish them. A single viral example of a fake 40 percent discount can undo a season of brand-trust work, and in some markets the same dispute carries damages on top of the regulatory penalty. The defensive posture is the one any regulated team adopts: keep your own dated evidence so that when a claim is challenged, you can produce the price history that backs it rather than reconstructing it under pressure.

There is an offensive use of the same data, too. If a competitor is running discounts their 30-day history cannot support, a documented record of their non-compliant claims is leverage, whether you raise it with a regulator, a marketplace, or in your own competitive positioning.

### How do you monitor competitors for Omnibus violations?

Point the same five-element capture at competitor product pages instead of your own. PageCrawl builds a parallel 30-day lowest-price history for each competitor SKU, reads their strikethrough and "% off" claims, and archives dated screenshots. When a rival advertises a reduction their own recorded price history does not justify, you hold timestamped evidence of the discrepancy.

This sits naturally alongside ordinary competitive pricing work. Many teams already run [cross-retailer price comparison monitoring](/blog/cross-retailer-price-comparison-product-monitoring) to see who undercuts whom. Adding the Omnibus layer means you are not only tracking the headline number but also auditing whether the advertised saving is real. A competitor claiming "lowest price ever, minus 50 percent" while their 30-day low says otherwise is making a misleading commercial statement, and that is actionable.

The brand-protection angle overlaps with [MAP pricing enforcement](/blog/map-pricing-enforcement-brand-guide) for manufacturers who police how their products are sold. A retailer inflating "was" prices to fake deeper discounts distorts the perceived market price of your brand just as a below-MAP listing does, and the dated screenshot evidence you collect serves both purposes. The Omnibus record is, in effect, a [web evidence layer](/blog/web-evidence-layer-definitional) over your pricing surface that you and your legal team can draw on whenever a claim, yours or a competitor's, is questioned.

### How do you set up EU Omnibus monitoring with PageCrawl?

Here is a concrete six-step setup that produces a 30-day lowest-price history, reads the discount claims, and archives dated evidence for a single promoted product. Repeat it per SKU, or use bulk import to apply the same template across a catalog.

[Image: PageCrawl price-history chart for Winter Jacket - 30-Day Lowest Price History, tracking the value over time with average, high and low]

**Step 1: Add the product page and choose the tracking mode.** Create a monitor for the product URL. Add a price/number element on the visible selling price so PageCrawl extracts the numeric value (for example 89.00) onto a timeline. Add a second numeric element on the strikethrough "was" price, and a keyword/text element on the "% off" or "save" claim. For pages that expose structured data, add a JSON/API field element so you capture the machine-readable price as a cross-check.

**Step 2: Set the check frequency.** Daily checks are the minimum for a credible 30-day rolling low. For high-velocity categories or campaign periods, increase to a check every few hours so a mid-day price change is timestamped before the promotion is advertised against it. The right cadence is the one that captures every price state the page actually displayed.

**Step 3: Enable screenshots.** New monitors keep full-page screenshots on by default, which is what you want here. Each check archives a dated visual of the page exactly as a shopper saw it, building the evidence trail automatically. Leave this on for every Omnibus monitor, because the screenshot is the artifact that survives a challenge.

**Step 4: Build the 30-day reference-price comparison.** Configure a conditional rule that compares the advertised "was" price and the "% off" claim against the lowest selling price recorded in the trailing 30 days. Set the numeric threshold and direction so the rule fires only when the advertised reference exceeds the real 30-day minimum, or when the percentage implies a reference you never charged.

**Step 5: Choose the notification channel.** Route alerts to where the responsible team will see them within the hour. Send compliance mismatches to a dedicated Slack channel, a Telegram or Discord group, or a webhook that files a ticket. Keep these alerts separate from routine price-movement notifications so a genuine non-compliant claim never gets buried in noise.

**Step 6: Tune thresholds and scale out.** Add a small tolerance band so trivial rounding does not trigger alerts, then widen coverage. Apply the same template to your full promoted catalog and to priority competitor SKUs, and review the archived screenshots periodically so your evidence library stays current ahead of seasonal sale events. For large catalogs, bulk import lets you stand up hundreds of these monitors from one configuration.

### Choosing your PageCrawl plan

PageCrawl's **Free plan** lets you monitor **6 pages** with **220 checks per month**, which is enough to validate the approach on your most critical pages. Most teams graduate to a paid plan once they see the value.

| Plan | Price | Pages | Checks / month | Frequency |
|------|-------|-------|----------------|-----------|
| Free | $0 | 6 | 220 | every 60 min |
| Standard | $8/mo or $80/yr | 100 | 15,000 | every 15 min |
| Enterprise | $30/mo or $300/yr | 500 | 100,000 | every 5 min |
| Ultimate | $99/mo or $999/yr | 1,000 | 100,000 | every 2 min |

Annual billing saves two months across every paid tier.

### How should you start building your price-history record?

Start with the products you discount most aggressively, because those are the ones a test-purchase team screenshots first. For each, capture the selling price, the "was" price, the "% off" claim, and a daily screenshot. Within a month you will hold a 30-day lowest-price history that turns every discount claim into something you can prove.

Build the record before the regulator's email arrives, not after, and the dated evidence in the room will be yours.

---

Need more? The complete PageCrawl.io help center, with every article, is available as a single document at https://pagecrawl.io/llms-full.txt. Read it for context on anything this page does not cover.
