14 pages · 15 recorded observations
Import errors, measured
Every page here was written from a real Shopify store we broke on purpose and recorded. None of it is from documentation — we tried that first, twice, and both rules were wrong.
The ones with no error message
These are the expensive ones. The import reports success, your catalogue is wrong, and there is nothing to paste into a search box. They are also the reason this product exists.
- Shopify imported fewer products than my CSV had, and reported successTwo rows sharing a handle become one product. Shopify merges them silently, shows a "Products imported" banner, and never mentions what it collapsed.
- Re-importing a product deleted its variants, and nothing warned meA one-row update with the option columns blank, imported with overwrite on, leaves the product with one variant. The others are gone and no message says so.
- Shopify changed my product handles, so my URLs are not what I uploadedHandles are slugified on the way in — silently, without an error — so the URL you planned and the URL you got can differ.
- Shopify said "Products Imported" and a product never arrivedA product with one malformed variant row can pass validation, count toward the preview, report success, and never appear in the store.
- My Shopify CSV import has been running for hours — is it stuck?Probably not. A 20,000-row import took seven hours and nineteen minutes on a real store and completed with no gaps.
- Are Windows line endings (CRLF) breaking my Shopify import?No. We tested it on a real store: LF and CRLF both imported cleanly and identically.
- My CSV has 28,000 lines but only a few hundred productsDescriptions containing newlines put line breaks inside quoted fields, so counting lines overstates a catalogue — on one real file, by more than forty times.
- A tool says my CSV is not UTF-8, but it looks fineEncoding detectors read a sample from the start of the file. If nothing distinguishing lives there, the answer is a guess — and on one 3.3MB file the deciding byte was at offset 128,268.
- How many products are actually in my Shopify CSV?Count distinct handles, not rows. Repeated handles are variants and image rows of one product, and the two numbers differ by roughly half on real supplier files.
- WooCommerce CSV: what goes in the Parent column?In a real Woo export, Parent is `id:<ID>` and not a SKU — and most parent references in that export did not resolve inside the file at all.
The ones that do say something
Four of them. You can paste the error into a search box — but the number that comes back is not what it looks like, and each of these says what the string actually means and what it costs.
- Shopify: "The supplied file is too large to be imported."Shopify refuses the upload on bytes, not on rows. Splitting the file works — but split it on product boundaries or you will silently lose variants.
- Shopify: "The alt value exceeds the maximum limit of 512 characters."Image alt text is capped at 512 characters and rejected hard above it — while SEO title and description have no ceiling at all.
- Shopify: "Fulfillment service can't be blank"Every variant row needs a fulfillment service and an inventory policy — including the continuation rows most exporters leave empty.
- Shopify: "Inventory policy is not included in the list"The field accepts exactly two values, and blank is not one of them — which is why this message usually means a missing cell rather than a wrong one.
Why there are 14 of these and not two hundred
Because 14 is how many we can prove. Pages like these are usually generated by the hundred from a list of plausible error strings, and most of those strings are invented. Ours are joined to an archive of what a real store actually said, and a test in our own build refuses to ship a page quoting an error that is not in it.
The store has since been deleted, so the archive does not grow on its own. When we next have a real store — or a real WooCommerce install — there will be more pages, and they will be dated too.
Or skip the reading
Drop your supplier file into the Pre-Flight Report. It names every blocker and the row it is on, before you upload anything anywhere. Free, no account.