First, the plain truth: CatalogCSV does not track shops over time. It doesn’t watch a store in the background, keep a history or send alerts. Each export is a snapshot of the catalog at the moment you click. But two snapshots side by side are a price history, and a spreadsheet does the comparing for you. This guide shows the formulas.
What the export gives you
The Variant rows format has one row per variant and 26 columns. The ones that matter here, with their column letters when you open the file as is:
updated_at(H) — when the store last changed the productvariant_id(K) — the variant’s own IDsku(P),price(Q),compare_at_price(R)available(S) — true or false
Those letters hold for the standard 26 columns. If you switched on the optional product description, it is added at the end, so turn it off for this routine or move the formulas below one or two columns to the right.
Prices come through as plain numbers without a currency, so note which currency the store shows if you compare shops in different countries.
Which products are on sale right now
On Shopify, a “was” price is stored as compare_at_price. A variant is on sale when that number is higher than price. Many rows leave it empty, so test for that. In the first free column (AA), add a discount:
=IF(AND(R2<>"", R2>Q2), 1-Q2/R2, "")
Format the column as a percent and fill it down. Filter AA for non-blank values, sort largest first, and you have every discounted variant with its markdown. A shop that leaves a stale compare-at price on an item will show up as “on sale” here too, because that is what its storefront shows.
Compare this week with last week
Put both exports in one workbook: last week’s file on a sheet named old and this week’s on a sheet named new. On new, pull in last week’s price for each variant:
=XLOOKUP(K2, old!K:K, old!Q:Q) in AB2
=IFERROR(Q2-AB2, "") in AC2
AC is the change: negative means a price cut, positive a price rise, zero means unchanged. Sort or filter on it to see only what moved. XLOOKUP works in Excel 365 and Excel 2021 and in Google Sheets. If your Excel uses a comma as the decimal sign, it uses semicolons between formula arguments, so type ; where the formulas here show ,.
Why variant_id and not sku? SKUs are whatever the shop typed in. Some shops leave them empty, and some reuse one SKU across several variants, so a lookup on SKU can match the wrong row or nothing at all. The variant ID is assigned by the platform and is unique, so it stays a reliable key from one export to the next.
New variants: when AB shows #N/A, that variant ID wasn’t in last week’s file. It’s new since your last export.
Removed variants: run the lookup in reverse. On the old sheet:
=ISNA(XLOOKUP(K2, new!K:K, new!K:K))
TRUE means the variant is gone from this week’s export: removed, unpublished or replaced. The export can’t tell you which.
The updated_at column can help you narrow things down, but it is per product and changes for any edit, not only a price change, so use the price comparison as the real test.
Spot stock changes
The available column works the same way. On new, look up last week’s value and flag the difference:
=XLOOKUP(K2, old!K:K, old!S:S) in AD2
=IFERROR(IF(AD2=S2, "", IF(S2, "back in stock", "sold out")), "new") in AE2
One limit: stock quantities aren’t public. You only see in stock or sold out, not how many units are left or how many were sold. The sold-out guide covers the single-export version of this.
Make it a weekly routine
- Same day, same format. Export on the same weekday each week, always as Variant rows, so the columns line up.
- Keep every file. The download is already named after the store and the date, like
catalog-export-<store>-<date>.csv, so a folder of them sorts itself in order. - Reuse the workbook. Each week, paste last week’s
newsheet intooldand the fresh export intonew. The formulas stay put.
Store size matters. The free tier exports the first 100 products per export, in all formats. If the competitor has more than 100 products, a free export covers only part of the catalog, and the new and removed flags above aren’t reliable, because a product can simply fall outside the first 100. For a larger store you need Pro: $9/month or $79/year, with unlimited products per export. See pricing.
This is a manual routine: a few minutes a week of clicking and pasting. If you need hourly checks or automatic alerts, this isn’t that. If a weekly look at what a competitor changed is enough, two CSV files and a handful of formulas cover it.