Fixed prices, paid once·Written replies within one working day
CheckoutLoom.

Marketing and retentionWin shoppers back

View all marketing →

Support and order careAnswer faster

View all support →

Product contentBetter listings

View all product content →

Inventory and pricingPrices and suppliers

View all inventory →

Finance and riskMoney and disputes

View all finance →

Shopify and WooStore-specific

View all services →

Dropshipping and EtsyMarketplaces and print

View all services →

Explore everything

Pick a way in. Every page has a fixed price and a delivery window.

All services88 automations for storesAll platformsShopify, WooCommerce and moreAll integrations82 tools we connectRequest a quote →

ShopifyStore platform

View all Shopify →

WooCommerceStore platform

View all WooCommerce →

BigCommerceStore platform

View all BigCommerce →

WixStore platform

View all Wix →

AmazonMarketplace

View all Amazon →

EtsyMarketplace

View all Etsy →

eBayMarketplace

View all eBay →

Your platform

Automation built for the store or marketplace you already sell on.

Store platforms8 platformsMarketplaces11 marketplacesAll who we serve363 pagesRequest a quote →

DropshippersSeller type

View all dropshippers →

DTC brandsSeller type

View all dtc brands →

Handmade sellersSeller type

View all handmade sellers →

Subscription boxesSeller type

View all →

B2B and wholesaleSeller type

View all b2b and wholesale →

AgenciesSeller type

View all agencies →

PrintfulPrint-on-demand

View all Printful →

Your kind of store

Pages written for how each type of seller actually works.

Seller types14 types of sellerPrint-on-demand9 platformsPopular audiences20 moreRequest a quote →

Email and SMSKlaviyo, Mailchimp and more

View all email and sms →

Support and chatGorgias, Zendesk and more

View all →

Payments and accountingStripe, QuickBooks and more

View all →

Shipping and suppliersShipStation, DSers and more

View all →

Reviews, ads and creativeJudge.me, Meta Ads and more

View all →

Automation and dataZapier, Make, Sheets

View all →

Marketplace and feed toolsGoogle Merchant, Helium 10

View all →

Works with your tools

We build inside the apps you already pay for.

All integrations82 toolsEmail and SMSKlaviyo, MailchimpPaymentsStripe, QuickBooksRequest a quote →

How-to guidesStep by step

View all 63 how-to guides →

Templates and checklistsCopy and use

View all 68 templates →

ComparisonsTools and options

View all 44 comparisons →

Cost and ROIWhat it costs

View all 34 cost pages →

GuidesLong reads

View all 14 guides →

Compliance and riskRules in plain words

View all →

Glossary and statisticsTerms and numbers

View all 17 →

Learn before you buy

Guides, templates and honest comparisons, free to use.

Resources hub256+ free resourcesBlogPractical articlesStatisticsSourced numbersRequest a quote →
Checkout Loom blog

Shopify CSV import errors and how to fix every common one

Why product imports fail, how to read the error report, the fixes for headers, variants, images, encoding and inventory, and a pre-flight checklist that prevents most problems.

  • 9 minute read
  • Written for store owners
  • Sources named
TitlesImagesFeeds

The CSV import is the workhorse of Shopify catalogue management. It lets you create or update thousands of products at once, and it is also a famously unforgiving file format. A single missing comma, a mismatched header or an image link that returns an error can stop a row, a block of rows or the entire import. The error messages are short, and the cause is often a few lines away from where the message points.

This guide walks through the commonest Shopify CSV import errors in the order that most often finds the cause: structure, headers, handles, variants, images, encoding, inventory and metafields. It ends with a pre-flight checklist and a safe testing method. Shopify’s columns and limits change over time, so always compare with the current sample file and the Help Center before relying on any detail here. If you regularly load large catalogues, a repeatable path such as our bulk product upload service is often safer than hand-edited spreadsheets.

How the CSV is organised

A Shopify product CSV has one row per variant, and extra rows for additional images. The first row of a product holds its title, description and general fields. Following rows with the same handle add variants or images, and leave the product-level fields blank. The handle is the unique, URL-friendly identifier of the product, and it is how Shopify knows which rows belong together.

Row typeHandleTitle and descriptionOption and variant fieldsImage fields
First row of a productRequiredRequiredFirst variantFirst image, optional
Additional variantSame as aboveBlankNew option values, price, SKUOptional
Additional image onlySame as aboveBlankBlankImage source and position

Error group 1: headers and template mismatch

The import maps columns by header name. If a header is spelled differently from the template, Shopify ignores the column or reports an invalid header. Shopify has revised its product template, for example when it introduced a standard product taxonomy, so a file created from an old template may not match.

  • Symptom: a column is ignored, or a message says a header is invalid or missing.
  • Cause: an old template, a renamed header, extra spaces or a changed case.
  • Fix: download the current sample CSV from the import screen, copy your data into it and keep the header row untouched.
  • Prevent: store the current template in your team’s shared folder and replace it when Shopify changes it.

Error group 2: handles

SymptomCauseFix
Variants appear as separate productsHandles differ slightly, for example a trailing space or different capitalisationMake the handle identical on every row of a product, lower case, with hyphens
Rows skipped as duplicatesTwo different products share a handleGive each product a unique handle
Existing product duplicated instead of updatedThe handle in the file differs from the live product’s handleExport the live products and copy the handle exactly
Handle contains symbols or spacesCopied from a titleUse lower-case letters, numbers and hyphens only

Error group 3: variants and options

Variant problems are the most common source of confusing errors. Shopify products can have up to three options, such as size, colour and material, and every variant must have a unique combination of option values.

  • Duplicate variant: two rows with the same option values. Fix by removing one or by adding a distinguishing option.
  • Missing option value: one row has an option name but no value. Fill every option field for every variant row.
  • Option names change between rows: the option name appears on the first row only in some templates; check the sample for where it belongs.
  • Too many variants: Shopify has a limit on variants per product, so very large option sets may need splitting. Check the current limit in the documentation.
  • Price missing or in the wrong format: use plain numbers without currency symbols or thousands separators, and use a full stop as the decimal mark.

Error group 4: images

Shopify does not upload images from your computer in a product import; it downloads them from the URLs in the file. If it cannot fetch a URL, the product may import without the image and an error is logged.

SymptomLikely causeFix
Image not importedThe URL needs a login or is blocked for downloadsHost images at a public address and test the link in a private browser window
Image not foundTypo, wrong extension or a moved fileOpen every URL in the browser before importing
Wrong image orderMissing or duplicated image position valuesNumber positions from one, once per image
Image appears on the wrong variantThe variant image column does not match an image URL in the fileUse the exact same URL string in the variant image column
Very slow importLarge images or a slow hostCompress images and use a fast host or CDN

Error group 5: encoding, quotes and line breaks

CSV is plain text, and plain text has traps. Spreadsheet programs can save in encodings that turn accented characters into garbage, or insert line breaks inside cells that split a row in two when the quoting is wrong.

  • Save as CSV UTF-8, not a legacy encoding. In some spreadsheet tools, choose the UTF-8 option explicitly.
  • Quote fields that contain commas, quotes or line breaks. Spreadsheet export usually does this correctly; hand-built files often do not.
  • Escape double quotes inside a field by doubling them.
  • Avoid smart quotes and special dashes in handles and option values.
  • Check descriptions that contain HTML. Broken tags can cause strange formatting after import.
  • Watch for leading zeros and long numbers. Barcodes and SKUs may be converted to scientific notation by a spreadsheet; format those columns as text.

Error group 6: inventory and locations

Inventory columns have changed as Shopify introduced multiple locations. In recent templates, quantities are set per location in columns named for the location, and they only apply if inventory is tracked for the variant. A mismatch between the location name in the file and the name in your admin means the quantity is ignored.

  • Quantities ignored: the variant is not set to track inventory, or the location name does not match exactly.
  • Negative or blank quantities: decide whether blank means zero or unchanged and follow the template’s rules.
  • Updating stock via CSV: a set quantity replaces the current value, so it can overwrite sales made since you exported. For live stores, prefer an adjustment method; see inventory sync across sales channels for why.

Error group 7: metafields, categories and other fields

Newer templates support metafield columns and a standard product category. Metafield column headers follow a specific pattern that includes the namespace, key and type, and the metafield definition may need to exist first. A product category value must match one of Shopify’s allowed values. When these fields cause trouble, remove them, import the basics, then add the extra fields in a second pass. Decide first which facts belong in metafields, such as materials or care, and define them once.

How to read the error report

After an import, Shopify can show or email a report of rows that failed. Read it line by line, and note two numbers for each message: the row number and the field. Row numbers in the report usually refer to the data rows in your file, and a spreadsheet’s row numbers include the header, so allow for an offset of one. Fix a few errors, re-import only the failed rows and repeat until the report is clean. Do not re-import the entire file each time, because it may overwrite changes you have made in the admin in the meantime.

A pre-flight checklist

  1. Download the current sample CSV and confirm your headers match exactly.
  2. Check that every product has a unique, clean handle repeated on all its rows.
  3. Check that every variant has a unique combination of option values.
  4. Open a sample of image URLs in a private browser window.
  5. Confirm the file is saved as CSV UTF-8 and opens correctly.
  6. Format barcode and SKU columns as text so that numbers are not altered.
  7. Confirm prices are plain numbers.
  8. Confirm location names and inventory tracking settings if you set quantities.
  9. Back up the current catalogue by exporting it first.
  10. Import five to ten products as a test and inspect them in the admin.

A safe workflow for large imports

Large catalogues need a process, not just a careful file. Export the current catalogue first, so that you can restore if something goes wrong. Work on a copy of the file, never the original. Import a small slice that includes the awkward cases: a product with many variants, one with images, one with metafields. Review the result on the storefront and in the admin, including how it looks on a phone. Only then import the rest, in batches if the file is large. Afterwards, spot-check twenty products at random and compare them with the source.

StageWhat to doWhat you are checking
Back upExport the current productsYou can restore
ValidateRun the pre-flight checklist or a scriptStructure and values
Test sliceImport 5 to 10 productsVariants, images, fields
Full importImport in batchesError reports per batch
Spot checkReview random products on the storefrontReal-world result

If your imports are frequent or come from supplier feeds, the manual process becomes a risk in itself. A supplier feed sync validates and loads changes automatically, and our bulk product upload service builds a repeatable import with validation and a report. For the copy that goes into the file, see AI product descriptions that pass review.

Sources and further reading

Figures and rules in this guide come from the primary pages below. Platform limits and prices change, so open the page before you build on a number.

Questions

8 questions readers ask about this topic

Why is my Shopify CSV import failing?

The commonest causes are headers that do not match the current template, inconsistent handles, duplicate or incomplete variants, unreachable image URLs, encoding problems and inventory columns that do not match a location.

Where can I get the correct Shopify CSV template?

From the import screen in your admin, which offers a sample CSV. Always use the current one, because templates change.

Why are my images not importing from CSV?

Shopify fetches images from URLs, so they must be publicly reachable. Test each link in a private window, and check for typos and blocked downloads.

Why are my variants importing as separate products?

Handles probably differ between rows. Make the handle identical for every row of a product.

How do I avoid overwriting inventory with a CSV?

A set quantity replaces the current number. For live stores, import quantities carefully or adjust stock using an adjustment method.

What encoding should the file use?

CSV UTF-8. Other encodings can corrupt accented characters.

Can I test an import safely?

Yes: export the current catalogue, import five to ten products first and inspect the result before the full file.

When should I automate imports?

When you import often, from suppliers or large files, a validated, repeatable process is safer than editing spreadsheets by hand.

Imports that validate themselves

A repeatable upload with checks, a test slice and a report, so a bad row never reaches your store.

  • Fixed price, paid once
  • Built inside your tools
  • Thirty days of fixes