The audit in numbers

Fictional data
rows audited
89
issues identified
75
documented fixes
49
need the owner’s decision
26
Client
Fictional: Hollow Pine Goods
Service
Product data: audit report (Basic) and cleanup (Standard)
File
hollow_pine_original.csv · 89 rows · 27 products · 72 variant rows · 31 columns
Checks
39, against Shopify’s documented product CSV format
Date
7 November 2026
Deliverables
Audit report (8 pages) · cleanup report (8 pages) · corrected file · change log

The brief

A small shop wants to import its catalogue into Shopify from a spreadsheet maintained by hand. Before importing, it needs to know what will fail, what will import wrong, and which questions only the owner can answer.

Constraints

  • Offline review only: no store login, no test import.
  • Nothing invented: no titles, prices, SKUs or image links made up.
  • App columns, metafields, subscriptions, bundles and multi-location inventory out of scope.

Approach

  1. The same 39 checks every time

    A fixed list means nothing depends on my mood that day, and you can see exactly what passed and what failed.

  2. Three severities

    Blocking: the import fails or the row is skipped. Will import wrong: it imports, but the data ends up wrong. Cleanup: it works, but it’s messy. You fix the blocking issues first.

  3. Fix only what has one right answer

    A price written as “24,00 CHF” has one correct form. A product with no title doesn’t. That goes on the decision list.

  4. A decision list with exact rows

    26 items the owner has to decide, each with the row, the column and the options.

  5. Verify, don’t assume

    After cleanup I re-ran all 39 checks and compared the old and new files cell by cell. Every one of the 52 changed cells is in the change log.

Result

Issues by severity

  • 10BlockingLikely to stop the row importing, or to break the product it belongs to.
  • 40Will import wrongImports, but something in the store won’t be what the owner meant.
  • 25CleanupImports fine. Worth tidying for consistency and later maintenance.

75 issues in total. 26 of 27 products had at least one.

Found, fixed and left, by area

AreaFoundFixedLeft for the owner
Structure & headers10100
Handles, titles & SKUs1459
Variants651
Prices, weights & booleans30264
Images & missing data15312
Total754926

What changed

49 fixes applied: 52 cells changed on 38 rows, 2 rows removed (one empty, one exact duplicate). 89 rows in, 87 rows out. Saved as UTF-8 with LF line endings, columns in their original order.

What’s left

26 items left for the owner. 2 of them would still block the import: the product with no title and the repeated Wild Fig candle. Nothing was guessed.

What the file contained

  • Prices with “$”, a currency code or a decimal comma
  • A status of “Live” instead of active
  • A handle with spaces
  • A variant without a handle
  • A product without a title
  • Duplicate variants (Stoneware Mug, Oat / 12 oz)
  • Weights in kilograms in the grams column
  • A blank price that would list at 0.00
  • Dropbox and Google Drive image links
  • Two products sharing one handle
  • Broken characters (“Café”)
  • Curly quotes inside HTML
  • A barcode Excel turned into 8.40127E+11
  • TRUE and FALSE written as Yes, 1, y or True

One broken product, fixed: the Stoneware Mug

Shopify builds a product’s variants from its option values. Rows 2–8 describe a mug in three glazes and two sizes, but three small mistakes would have given it a third size, an empty slot and a duplicate.

What Shopify would have built

Before: the variant grid Shopify would have built from rows 2–8
Glaze × Size8 oz12 oz8oz
MossHPG-MUG-MOS-08Row 2HPG-MUG-MOS-12Row 3No variant
OatHPG-MUG-OAT-08Row 4HPG-MUG-OAT-12HPG-MUG-OAT-12Rows 5, 6Twice. Blocking.No variant
CharcoalNo variantHPG-MUG-CHA-12Row 8HPG-MUG-CHA-08Row 7Only size in this column.
3 glazes × 3 sizes = 9 slots. 6 filled, one of them twice, and 3 empty.

After the fixes

After: the variant grid from the corrected rows
Glaze × Size8 oz12 oz
MossHPG-MUG-MOS-08Row 2HPG-MUG-MOS-12Row 3
OatHPG-MUG-OAT-08Row 4HPG-MUG-OAT-12Row 5
CharcoalHPG-MUG-CHA-08Row 7HPG-MUG-CHA-12Row 8
3 glazes × 2 sizes = 6 slots, each filled exactly once.

What I changed

  1. Deleted row 6, an exact copy of row 5.
  2. Row 7: “8oz” changed to “8 oz”, the spelling the other rows use.
  3. Row 8: option name “Colour” changed to “Glaze”, to match the first row.

Inside the sample reports

Four of the sixteen pages. Every figure in them comes from running the audit on the demo file.

  • Audit report · page 2 of 8
    Page 2 of the sample audit report for the fictional shop: 10 blocking, 40 will-import-wrong and 25 cleanup issues, a paragraph on what would have gone wrong on import, and the top 5 fixes with their rows.
    The summary: 75 issues by severity, what would have gone wrong, and the top 5 fixes.
  • Audit report · page 7 of 8
    Page 7 of the sample audit report: the “Needs your decision” list. Each open question for the owner shows its rows, what I found and what I need from the owner.
    Needs your decision: 26 open questions, each with its rows and the one thing I need.
  • Cleanup report · page 2 of 8
    Page 2 of the sample cleanup report: a table of issues found, fixed and left per area, and the number of changed cells by type of change.
    Found, fixed and left per area, and every changed cell counted by type.
  • Cleanup report · page 3 of 8
    Page 3 of the sample cleanup report: rows 15 to 25 of the file before and after the fixes, with the changed cells shaded and the cells left for the owner outlined.
    Before and after: rows 15–25, with every changed cell shaded.

Download the sample reports

What this file would cost

89 rows fall into the smallest band, up to 250 rows. At founding rates:

  • Basic

    Audit report

    CHF 49

    Delivery: 2 working days

  • Standard

    Corrected file + QA report + change log

    CHF 119

    Delivery: 3 working days

  • Premium

    Standard + your decisions applied + 2nd QA pass

    CHF 169

    Delivery: 4 working days

Founding rateup to 250 rows · Prices in CHF, no VAT added.

All product data packages

Have a file like this?

Check it for free first, or book an audit. Basic is paid after delivery.