Merchant Tools
Under the EU Omnibus Directive, every price reduction must display the lowest price charged during the 30 days before the sale — with fines for stores that don't. This app records your prices, computes that legal reference, and shows it on your product pages. It never changes a price.
You cut a price for the weekend. The law wants "Lowest price in the last 30 days: $7.90" under the sale badge — computed correctly, from real history.
A consumer authority asks how your references were computed. You export the compliance report and hand it over.
Your sale price is above the legal reference — technically not a discount. The app flags it before a customer or regulator does.
Install, add the price line to your theme, and stay compliant: recording, computing, displaying and reporting run by themselves.
Add the Omnibus lowest price block to your product template in the theme editor (and the collection embed if you want the line on product cards too). The overview tells you when the line is live, flags promotions to check, and explains what happens for products with less than 30 days of history — the line shows the lowest price since recording began, with its date, and becomes a full 30-day value automatically. One exception, on purpose: if a sale was already running when you installed the app, no price from before it is known, so the line stays hidden for that product instead of showing a made-up reference; it appears on the next sale.
When a product goes on sale (compare-at price above the selling price), the block shows the reference under the price: the lowest price of the 30 days before the sale started, with its date. It only appears during promotions, follows the selected variant, and is rendered by your theme with zero network calls — it doesn't slow your pages down. Font, size and wording are adjustable in the theme editor.
The Prices page lists what is on sale: price, compare-at, since when, the computed Omnibus reference and the window it comes from. A red badge warns when the sale price is above the reference — information only, nothing is changed in your store; review the sale price or the compare-at and decide.
One line per promotion and per variant: dates, compare-at, sale price, the reference price in force and what changed. Pick a period, download it as an Excel file (prices as real numbers, dates as real dates, opens correctly in any language) or as a CSV, and file it with your records — if an authority asks, this is what you show.
A typo fixed within 24 hours, a test price, an unpublished product — you can exclude such a price point from the reference, with a reason, dated and logged; the exclusion shows in the compliance report and is reversible. What you can never do is type in a higher reference: the reference is always a price that was actually charged. Declaring a lower price charged elsewhere is always allowed.
A single reference computed from your main prices is wrong as soon as a country pays different prices: another currency, a price adjustment, fixed prices or a sale that only runs there. The Omnibus rule is about the lowest price charged in that country. This app builds each country's reference from the prices actually observed there:
Good to know. For EU markets, Shopify can hide compare-at prices (Markets › your market › Compare-at price › Hide compare-at price for EEA customers). While they are hidden there is no crossed-out price, so no Omnibus line is needed or shown. Untick it when you want to show your sales with a crossed-out price in the EU: the app then shows the reference under it. The app needs permission to read your Markets settings (Shopify asks you once).
The app records a price point each time a variant's price actually changes, then computes the reference according to the Omnibus rule: the lowest price charged in the 30 days before the promotion started (the strict pre-promotion reading; a rolling-window mode is available in the settings). The result is written to metafields — merchant_tools.omnibus_* — which your theme reads directly.
Selling in several EU countries. If a country has its own prices (another currency, a price adjustment, fixed prices or a promotion that only runs there), tick it in Settings › Prices per country: the app records the prices shown to visitors from that country and publishes a separate reference for it. A visitor paying in another currency with no reference for their country sees no line rather than a price in the wrong currency. Your main-price reference is shown only in markets the app has observed using your main prices (same currency, no price adjustment or fixed prices) for the whole reference period.
Languages. The line and the "since" date follow the shopper's language in the 24 official EU languages; English, French, German, Spanish, Italian, Dutch and Polish wordings can be edited in the theme editor.
Limits, stated plainly: promotions applied by discount code or checkout scripts are not part of the displayed price, so they are not counted; the compliance report and manual corrections cover your main prices.
Since 27 September 2026, EU consumer law (Directive 2024/825, Regulation 2025/1960) asks every online store to remind shoppers of their legal guarantee of conformity, and to show the EU GARAN label when the producer gives a free durability guarantee on the whole product that lasts more than 2 years. The app covers both with the official EU artwork:
warranty_months, and if you want warranty_brand and warranty_model — and drop the file. Comma or semicolon, saved from Excel in any language, up to 5,000 lines. The app first shows a preview (products found, lines in error with their line number, products not found) and writes nothing until you confirm. An empty cell leaves the current value untouched: the import never clears a value.Zero JavaScript, zero cookie, zero network call: the notice and the label are rendered by your theme.
The EU guidelines also expect the legal guarantee notice in the order confirmation e-mail, with a reminder of the GARAN label. Shopify does not let apps edit notifications, so it is a one-time copy and paste from the app's Settings page. Follow the step-by-step guide with screenshots.
Since 13 December 2024, the EU General Product Safety Regulation (Regulation (EU) 2023/988, art. 19) asks every online offer to show clearly who made the product and how to use it safely. The app adds this to your product pages, on every plan:
Your text is never shortened: a value longer than the limit is refused with a message, and nothing is written. Zero JavaScript, zero cookie, zero network call on the storefront.
No plan limits the number of variants: every plan tracks your whole catalog. Free: 90 days of price history, the legal line, the guarantee notice and the GARAN label with bulk guarantee entry (GARAN is complete on every plan), product safety information (GPSR), one reference per EU country. Standard ($5/month): 1-year history, compliance report and full price history export (Excel or CSV). Plus ($12/month): 2-year history, everything in Standard. Change plan at any time from the app. Questions: support@merchanttools.eu.