Omnibus sale-price check
EU Price Indication 30-Day Lowest Price Audit
EU price indication rules require the announced prior price to be the lowest of the last 30 days — not just your compare-at price. Audit a price history CSV per variant before the sale goes live.
Browser-side scan
Drop a price history CSV
No CSV selected
Shopify's compare-at price keeps no history, so a flash sale or Black Friday banner can silently violate the EU Price Indication Directive when the advertised prior price was undercut sometime in the last 30 days. This audit reads a sanitized price history CSV — SKU, date, price, optional compare-at price and campaign label — in your browser, groups rows per variant, takes the latest dated row as the current state, calculates the lowest price observed in the 30 days up to that date, and flags every variant whose reference price sits above that 30-day low. It exports a per-variant worksheet for pricing review. It provides calculations, not legal advice, and never writes prices back to Shopify.
Import blockers
Common causes this scan checks
- Compare-at prices only store the current value, so the 30-day price history lives outside Shopify.
- A sale banner advertises a prior price higher than something charged within the last 30 days.
- Flash sales and Black Friday campaigns need per-variant reference prices checked in bulk.
- Pricing teams keep history in spreadsheets and need a repeatable audit before each campaign.
Workflow
How to use the cleaned CSV
- Prepare a price history CSV with SKU, date, price, and optional compare-at price and campaign columns.
- Upload it and review each variant's calculated 30-day low against the current reference price.
- Export the audit worksheet and correct reference prices that exceed the 30-day low.
- Update your theme, metafields, or pricing app with the compliant reference before launching the sale.
Auto-fix policy
What the export can safely change
- Detects SKU, date, price, compare-at/reference price, and campaign columns from a history CSV.
- Groups history per variant and calculates the lowest price in the 30 days up to the latest row.
- Flags reference prices above the 30-day low and unparseable date rows.
- Exports a per-variant review worksheet in the browser without touching Shopify prices.
CSV example
CSV example: EU 30-day lowest price audit worksheet
The audit finds the 15.00 price charged on June 20, so the Summer-sale reference of 25.00 breaks the 30-day-low rule and the worksheet says exactly which value to fix.
Variant SKU,Date,Price,Compare At Price,Campaign MUG-1,2026-06-20,15.00,, MUG-1,2026-06-28,18.00,25.00,Summer sale
SKU,History rows,Window end,30-day low,Latest price,Reference price,Review note MUG-1,2,2026-06-28,15,18,25,Reference price must match the 30-day low (15)
FAQ
Shopify CSV questions
Is this legal compliance advice?
No. It is a calculation aid for the 30-day-low rule of the EU Price Indication Directive. Confirm the exact requirements for your market with your legal adviser.
Where does the price history come from?
From your own records: pricing spreadsheets, app exports, or scheduled Shopify exports you keep. Shopify's compare-at field alone cannot reconstruct history.
How is the 30-day window anchored?
At each variant's latest dated row in the file. The audit takes the lowest price dated within the 30 days before that row, so results are deterministic from your CSV.
Is my pricing data uploaded anywhere?
No. The CSV is read locally in your browser with the File API and nothing is stored or transmitted.
Feedback
How is this tool working for you?
Found a bug, a false alarm, or a missing check? Tell me — a human reads every note.