Check a Shopify product CSV before import
Use this before a Shopify product CSV import when the file looks valid but you want to catch obvious structural and row-level problems first. It checks Title, URL handle (and legacy Handle), price, fulfillment, option combinations, and product image URLs so you can narrow down what to fix.
A Shopify product can span multiple CSV rows. Reading those rows as one product—grouped by URL handle / Handle—is usually more useful than treating every row as an independent record.
Shopify’s current headers are not identical to older templates
The current Shopify CSV uses names such as `URL handle`, `Price`, and `Product image URL`. Older templates used headers such as `Handle`, `Variant Price`, and `Image Src`, and Shopify still supports legacy names. This checker recognizes both generations.
Avoid renaming Shopify columns just to make them look friendlier. Start from a current export or official template, then edit values rather than inventing your own schema.
How to read the result
A missing Title column is a template-level problem. A missing URL handle / Handle column is more nuanced: a new simple product can be created from Title alone, while updates and variant workflows depend on the handle.
Blank Price or Fulfillment service values are warnings rather than automatic failures because Shopify has defaults. The useful question is whether zero price or manual fulfillment is actually what you intended.
A practical example
For a shirt with S, M, and L variants, first inspect the three rows that share the same URL handle / Handle. The first product row should carry the Title, and the option-value combinations should be unique. Then review price and image URL issues.
Even with a clean preflight result, import a small sample first and inspect Shopify’s preview and the resulting product page. “The CSV imported” and “the catalog changed exactly as intended” are different checks.