Skip to content

For Shopify stores selling in the EU

The 30-day price, next to every sale price.

When you announce a price reduction to EU shoppers, the Omnibus rules ask you to show the lowest price you charged in the 30 days before it. TB Dynamic Pricing works that price out from your own price history and shows it on product pages, collection grids and the cart, in the shopper’s language and currency.

  • on every plan, from $12 a month
  • 14-day free trial
  • off until you turn it on
Your product page
Alpine Down Jacket
€169.99€189.00
Lowest price in the 30 days before this discount: €189.00
Collection grid and cart drawer
Trailhead Fleece€64.99Lowest 30-day price: €74.00
Summit Wool Beanie€29.99
Sample products · no discount on the beanie, so no line
◇ The rule in plain words

Announce a discount, and show the lowest price before it.

The EU’s Omnibus Directive, in force since May 2022, added a requirement to how shops announce price reductions. Wherever you tell shoppers a price has come down, with a crossed-out price or a percentage off, you also show the prior price: the lowest price you charged for that product in the 30 days before the reduction.

That lets a shopper tell a real reduction from a price that went up last week so it could come down this week. Any percentage you show is worked out from the prior price too.

An example. The Alpine Down Jacket sold at €189.00 all through October. On 6 November you mark it down to €169.99, and under the price the shopper reads: Lowest price in the 30 days before this discount: €189.00.

Now say the jacket had been on sale at €179.00 for a week in mid October. The lowest price in the 30 days before 6 November is then €179.00, so that is the figure the line shows. A percentage off comes to 5% from €179.00, where the €189.00 price would have suggested 10%.

Each EU country writes the rule into its own law, and some set different details for certain goods, such as food that goes off quickly. The app works to 30 days by default, and you can change how far back it looks in Settings.

The app keeps a record of every price from the day you install it, including prices changed in the Shopify admin or by other apps, and works out each product’s 30-day price from that record.

◇ Where it shows

Next to the price, not in a footnote.

The line goes directly under the price it is about, wherever the discount shows. In October 2025 Germany’s Federal Court of Justice held that an asterisk pointing to a footnote did not make the 30-day price clear enough (BGH, in German).

Theme block

Product pages

Add the block under the price once. It follows the version the shopper picks, from a dropdown, a swatch or a link to one version, and shows nothing for a combination that is not available.

App embed

Collection grids

Collection pages, search results, recommendations, featured collections and quick views. The line shows only while the card shows the price it was worked out from, so a swatch that switches the card to a dearer version removes it.

Same embed

Cart page and cart drawer

Updated when a shopper adds to the cart or changes a quantity. The line sits under the unit price, or under the line total in themes that only show that.

Checkout itself is not covered. Shopify lets apps add to the checkout steps only on Shopify Plus, so the line stops at the cart.

◇ Currencies and markets

The right figure in every currency.

Your history is kept in your store’s currency. This is how the line gets to the currency your shopper is looking at, and when it stays hidden.

Your store's currency

Shown as it is, in your theme's own money format, and only while the price on the page is the price the figure was worked out from.

Automatic conversion

The 30-day price is converted at the same rate as the price beside it, market adjustments included, and rounded down. Any rounding makes the saving look a little smaller, never larger.

Fixed prices in a market

If you type prices into a price list for a market, your history says nothing about those prices, so the line stays hidden for shoppers in that market.

The percentage

If you show one, it is worked out in your store's currency from the 30-day price, so a change in exchange rate never moves it.

◇ Languages

Your wording, in the shopper’s language.

The line is shown in the language the shopper is reading, whatever language your admin is in. It comes with our wording in 15 languages.

The EU price rules screen lists every language your store publishes, with a field for each line, a live preview and a reset button. A language we do not ship, Japanese for example, starts from the English text until you write your own.

The wording is yours to decide and stand behind, so read our defaults through, above all in languages you do not speak. Before saving, the app checks that each line still contains the price.

  • English
  • German
  • French
  • Spanish
  • Italian
  • Dutch
  • Polish
  • Portuguese (Portugal)
  • Swedish
  • Danish
  • Finnish
  • Czech
  • Romanian
  • Greek
  • Hungarian
  • deNiedrigster Preis in den 30 Tagen vor dieser Preissenkung: 189,00 €
  • frPrix le plus bas au cours des 30 jours précédant cette réduction : 189,00 €
  • nlLaagste prijs in de 30 dagen vóór deze prijsverlaging: € 189,00
  • plNajniższa cena z 30 dni przed obniżką: 799,00 zł
◇ Checks and records

Discounts checked before they go out.

With the EU price rules on, the app compares each discount with your own prices from the 30 days before it, and keeps a dated record you can download.

Crossed-out prices

Every price the app writes, from a rule, a bulk change, a sale or an undo, is checked first. If it would show a crossed-out price above your 30-day low, the app lowers the crossed-out price to match, or holds the change for you to look at. You choose which in Settings.

Changes made elsewhere

A sale you set in the Shopify admin or with another app is checked too, and listed on the EU price rules screen with the numbers. The app does not rewrite a price you set yourself.

A 30-day price that holds still

The 30 days are counted back from the day the discount started, so the figure stays the same for the whole sale and changes only when your prices do.

Your price history, downloaded

A spreadsheet of every price and crossed-out price for each product, as dated periods, up to 400 days back. Accented product names come through intact in Excel.

◇ Recent decisions

What authorities and courts have looked at.

Consumer authorities and courts in several EU countries have looked at how shops show the prior price. These are the points they raised, with a source for each, and what the app does about each one.

Poland · January 2026

UOKiK decisions on Zalando and Temu

Poland's consumer authority found the prior price missing at some steps of the purchase, the cart among them, or on some devices. It also found a 30-day price recalculated every day while the selling price stayed the same, and percentages worked out from a "regular" price instead of the 30-day low. UOKiK announcement (Polish)

In the app: The line shows on product pages, grids and the cart at every screen width, the 30 days are counted from the start of the discount, and percentages come from the 30-day price.

Germany · October 2025

Federal Court of Justice (BGH)

The court held that the 30-day price has to be clear at a glance. A struck-through price and a percentage with an asterisk pointing to a footnote did not meet that. BGH press release (German)

In the app: The line sits directly under the price it is about.

EU-wide · March 2026

European Commission check of 314 online shops

Across Black Friday and Cyber Monday 2025, 30% of the shops checked referenced their discounts incorrectly. National authorities can act on the findings. European Commission news

In the app: Every price the app writes is checked against your own 30-day history before it goes out.

Poland · May 2026

UOKiK charges against H&M and Peek & Cloppenburg

In one example, an item marked 43% off gave the sale price itself as its "30-day best price". UOKiK announcement (English)

In the app: The 30 days end when the discount starts, so a sale price is never counted as its own prior price.

◇ Deliberate limits

What the app leaves alone.

In these cases the app hides the line or stays out of the way, so the figure your shoppers see is one your own price history backs up.

  • Products at full priceNo discount, no line. A note about an old price under a full-price product only adds clutter.
  • Figures it cannot back upA wrong prior price is worse than none. When a market uses fixed prices, the price on the page no longer matches, or a card shows versions with different 30-day prices, the line stays hidden.
  • Prices you set yourselfSales set in the Shopify admin or another app are checked and listed for you. The app never rewrites them.
  • The checkout stepsShopify lets apps add to the checkout steps only on Shopify Plus, so the line stops at the cart.
  • Shopper dataPrices come from your stock, your sales and your margin, and every shopper sees the same price.
  • Legal judgementThe app shows figures worked out from your own prices. Whether a rule applies to your store is your call.
◇ Setting it up

One switch, then two buttons in your theme.

No theme code to edit. The setup guide has the details for each step.

  1. Switch

    Switch it on

    One switch on the app's home screen. The app has been recording your prices since the day you installed it.

  2. Block

    Add the block

    A button on the EU price rules screen opens your theme editor, ready to place the block under the price.

  3. Embed

    Turn on the embed

    A second button switches on the app embed that covers collection grids and the cart.

  4. Status

    Check your theme

    The screen reads your live theme and tells you whether the block and the embed are on. When it cannot tell, it says so.

◇ FAQ

Questions from EU stores.

The rest of the app, from bulk price changes to scheduled sales, is on the TB Dynamic Pricing page.

What is the Omnibus 30-day price rule?

Since the EU's Omnibus Directive took effect in May 2022, a shop that announces a price reduction to shoppers in the EU has to show the prior price: the lowest price it charged in the 30 days before the reduction. Each EU country writes the rule into its own law, and some set different details for certain goods, so check how your country applies it.

Where does TB Dynamic Pricing show the 30-day price?

Directly under the price on product pages, on collection and search grids, recommendations and quick views, and in the cart page and cart drawer. It shows only on products with a discount, in the shopper's language and currency.

Does it work with my theme?

It is added as a theme block and an app embed, so you do not edit theme code. It has been tested against the markup of Shopify's Dawn and Horizon themes and a plain generic theme, and the EU price rules screen checks your live theme and tells you whether the block and the embed are on.

What if the app has not recorded 30 days of prices yet?

Shopify does not let apps read prices from before they were installed, so the app records from the day you install. Until a product has enough history to back up the figure, the line stays hidden for that product. The EU price rules screen shows how many days are recorded.

Can I change the wording?

Yes. The EU price rules screen lists every language your store publishes, with our default wording for each line, a live preview and a reset button. Languages we do not ship start from the English text until you write your own.

Which plans include it?

Every plan, starting with Essentials at $12 a month, with a 14-day free trial. The EU price rules are off when you install and take one switch to turn on.

What happens if I switch it off?

The line comes off your storefront straight away. The app keeps recording your prices either way, so switching it back on picks up where you left off.

Is this legal advice?

No. The app shows figures worked out from your own prices and the settings you choose. Whether and how the rules apply to your store is your decision, and if you are unsure, ask someone qualified. Our terms of service say the same.

This page describes what TB Dynamic Pricing does. It is not legal advice, and using the app does not by itself make a store meet any law. Whether and how these rules apply to your business is your decision; see our terms of service.

Show the 30-day price on your store.

The EU price rules come with every plan, from $12 a month with a 14-day free trial. Talk with the Thought Bulb team and we’ll help you place the block and the embed on your theme.