Three files. One declared target.
CatalogWitness checks whether values in a supplied catalog snapshot match the target values you specify. It works with UTF-8 CSV or TSV files containing one complete row per stable, unique identity. It does not connect to your store or make changes.
1. Prepare your snapshots
Export the same catalog scope before and after the work. Each row needs a unique, nonblank SKU or another stable identity column. Preserve leading zeroes, letter case, and whitespace. If an identity changes, the tool treats it as a removed identity and a new identity; it does not infer a rename.
2. Make the approved change sheet
Include only the rows you intend to update or add, with target values in the fields you want to change. Keep the identity column. A blank cell in a mapped target column means “the expected value is empty.” An omitted row or unmapped target column means “keep the original.” Absence never means delete. For a new identity, only declared target fields are checked.
If a blank means “leave unchanged” for some rows and “clear” for others, split the change sheet into separate checks or fill in explicit original values. The tool cannot infer two different meanings for the same blank.
3. Confirm mappings before running
Choose the identity column in each file. Map every field you want checked from the original to the actual snapshot. Map the corresponding approved target column where a change is intended. Columns outside this mapping are not checked. Exact text is the default; optional decimal comparison treats 12, 12.0, and 12.00 equally without rounding large numbers. Decimal mode accepts plain decimal notation only. It does not convert currencies, units, or comma decimal separators.
4. Read the result
| Finding | Meaning |
|---|---|
| Applied | A declared change or addition matches the supplied result. |
| Target mismatch | The actual value does not match the declared target. |
| Unexpected | A field or record changed outside the declared target. |
| Unresolved | Identity or selected comparison cannot be established reliably. |
| Unchanged | The original value is preserved where expected. |
A single product can have both applied and failed fields. “No exceptions found” covers only the selected fields and supplied data. “No declared changes” means the selected scope contains no actual target change to verify. A missing product can also mean the after export is incomplete; check the export scope before drawing conclusions.
Native Shopify CSVs need preparation
This version is a SKU-level target comparator, not a Shopify importer simulator. Native product exports can contain image-only rows with blank SKUs and product-level fields omitted on subsequent variant rows. Use complete SKU-level rows and expand inherited values explicitly before comparing. Image-only rows will appear unresolved if included. Optional or duplicate SKUs need an alternative unique identity.
Shopify may transform imported values, apply defaults, or omit fields from exports. A raw import sheet is not always the same as the desired exported state. Blank prices, fulfillment-service values, image URLs, Collection, and variant-option changes need particular care. Base your approved change sheet on values you expect in the after snapshot. Read Shopify’s current CSV documentation.
What remains outside scope
Images actually loading, storefront appearance, SEO, variant-ID preservation, inventory across locations, order/customer records, app integrations, tax correctness, importer side effects, and fields absent from your files. We do not verify who approved a change sheet. File hashes identify the bytes provided, not store authenticity or export completeness.
Limits and supported browsers
Up to 50,000 rows and 12 MB per file, 150 input columns, 30 mapped fields, and 500,000 identity × field combinations. Optional pricing checks have a separate limit of 250,000 evaluations per run: identities × enabled rules × two stages (expected and actual). With all four rules enabled, 31,250 identities use the full 250,000 evaluations. Select fewer rules or compare a smaller prepared catalog if the run exceeds that limit. Use a current desktop browser with JavaScript and Web Crypto enabled. Processing large files uses your device’s memory; split files for low-memory devices. XLSX, PDF, XML, and zipped catalogs are not supported. Export them to UTF-8 CSV first.
5. Save the evidence pack
The $199 one-time Professional license includes a downloadable current-version tool and ZIP evidence exports: report.html, findings.csv, report.json, and a README. Open HTML in your browser and print to PDF if needed. Every finding and the source hashes are included. Spreadsheet exports escape formula-like values; the JSON preserves originals. You may retain reports and repeat projects under your perpetual current-version license. After payment, save your access keys and download the Professional ZIP. Extract it and open catalogwitness-professional.html in a compatible desktop browser with JavaScript enabled. The included tool, guide and example work without an internet connection. Keep a backup of the ZIP and save reports before closing your workspace. Hosted access is available while the service operates; future updates and indefinite hosting are not promised.
Open the workbench →