Wondering how to fix a Shopify CSV import that won’t go through? Most Shopify import problems trace back to a small set of recurring errors: a column value Shopify doesn’t accept, a missing required field, an unreachable image URL, or a header row that’s slightly off. Below is every common Shopify CSV import error message, what causes it, and the exact step-by-step fix. Use the column reference and quick-diagnostic checklist further down if you’re not sure where to start.

Key Takeaways
1
The “Variant Inventory Policy” column must contain exactly “deny” or “continue” (lowercase, no spaces) or your import will fail.
2
Set “Variant Fulfillment Service” to “manual” unless you use a third-party fulfillment provider connected to your Shopify account.
3
Image URLs in the “Image Src” column must start with https:// and point to a publicly accessible file under 20 megapixels.
4
Always check your CSV header row for extra spaces, missing columns, or incorrect column names before uploading.
5
Products, customers, and orders use three different CSV templates with three different sets of required columns and error messages.

What Columns Shopify Expects in a Product CSV

Most import errors come from one specific column being wrong. Knowing what each column is for makes it much faster to find and fix the issue. Here are the columns Shopify reads from a product CSV, in order:

  • Handle - the URL-friendly identifier for the product (e.g. blue-cotton-shirt).
  • Title - the product name.
  • Body (HTML) - the product description, with HTML allowed.
  • Vendor - the brand or supplier.
  • Type - the product category.
  • Tags - comma-separated tags.
  • Published - true or false.
  • Option1 Name / Option1 Value, Option2 Name / Option2 Value, Option3 Name / Option3 Value - variant options like Size or Color.
  • Variant SKU - your internal stock code.
  • Variant Grams - product weight in grams.
  • Variant Inventory Tracker - usually shopify or blank.
  • Variant Inventory Qty - whole number stock count.
  • Variant Inventory Policy - deny or continue.
  • Variant Fulfillment Service - manual or a configured third-party service handle.
  • Variant Price - numeric, no currency symbol.
  • Variant Compare At Price - numeric, optional.
  • Variant Requires Shipping - true or false.
  • Variant Taxable - true or false.
  • Variant Barcode - optional barcode string.
  • Image Src - full https:// URL to a publicly hosted image.
  • Image Alt Text - descriptive text for the image.

If an error message names a column, jump to the matching section below.

Common Shopify CSV Import Error Messages and Fixes

Below are the specific error messages Shopify displays during a CSV import, along with what causes each one and the exact steps to fix it.

Inventory Policy Is Not Included in the List

This is one of the most common Shopify import errors. The full message Shopify usually displays is “there was an error importing your csv file. after you fix the error, try importing the csv file again. inventory policy is not included in the list.” It means the value in your Variant Inventory Policy CSV column is not one of the two accepted options. Shopify only allows two values here:

  • deny - Shopify will prevent customers from buying the product when inventory reaches zero. This is the most common setting for physical products.
  • continue - Shopify will allow customers to keep purchasing even when the item is out of stock. Use this for pre-orders, made-to-order items, or digital products.

The value must be lowercase and contain no extra spaces. Common mistakes that trigger this error include entering “Deny” (capitalized), “Deny selling” (extra text), leaving the cell blank, or having a trailing space after the value.

To fix this, open your CSV file and find the Variant Inventory Policy column (column R in Shopify’s default template). Make sure every row contains either deny or continue. Here is what a correct row looks like:

my-product-handle,My Product,"

Description

",My Vendor,Widget,tag1,true,Size,Small,,,,,SKU123,500,shopify,10,deny,manual,29.99,,true,true,,https://example.com/image.jpg,Product image alt

If you’re editing in Google Sheets or Excel, use Find & Replace to search for any values in that column that aren’t “deny” or “continue.” Also check for hidden whitespace characters by trimming the cells.

Fulfillment Service Can’t Be Blank

This error appears when the Variant Fulfillment Service column in your CSV is empty or contains a value Shopify doesn’t recognize. Every product variant needs a fulfillment service assigned to it.

If you fulfill orders yourself (packing and shipping from your own location), set this column to manual. If you use a third-party fulfillment service like ShipBob, Amazon FBA, or another provider, you need to enter the exact handle of that service as it appears in your Shopify admin under Settings > Shipping and delivery > Custom order fulfillment.

A common cause of this error is copying products from another store or platform where the fulfillment service name doesn’t match what’s configured in your Shopify account. Check that the fulfillment service is actually set up in your Shopify admin before importing. If you only use Shopify’s built-in fulfillment, simply put manual in every row.

Fulfillment Service Is Not Defined for Your Shop

This is a close cousin of the “can’t be blank” error and trips people up because the column is not empty. The fulfillment service column has a value, but that value doesn’t match any service that’s been set up inside your Shopify admin. Shopify treats the named service as undefined.

To fix it, log into Shopify and go to Settings > Shipping and delivery > Custom order fulfillment. Look at the exact handle of each fulfillment service listed there. The value in your CSV’s Variant Fulfillment Service column must match one of those handles character-for-character, or be the literal word manual. If you migrated products from another store, the old store’s fulfillment service handle almost never matches your new shop’s setup. Replace each value with manual (or the correct handle from your current Shopify admin) and re-import.

Ignored Line #-## Because Handle Already Exists

This error shows up when a product row in your CSV has a handle value but no product title. Shopify reads the handle, finds it already exists, and skips the line since it can’t determine what to do with it.

To fix this, open your CSV and look for any rows that have a value in the Handle column but an empty Title column. If the row is a variant of an existing product, the Title column should be empty and that’s fine, but the Handle must match the parent product’s handle exactly. If the row is supposed to be a new product, fill in the Title. If the row is a duplicate you don’t need, delete it from the CSV entirely.

Illegal Quoting on Line

This error means your CSV file contains a character that breaks CSV parsing, usually a mismatched or curly quotation mark. Spreadsheet programs like Excel sometimes convert straight quotes (") into curly quotes, which Shopify can’t read.

To fix this, save your CSV with UTF-8 encoding. In Excel, go to File > Save As and choose “CSV UTF-8 (Comma delimited).” Then open the file in a plain text editor (like Notepad or VS Code) and search for curly quotes. Replace them with straight quotes. Also look for unmatched quotes: every opening quote needs a closing quote on the same field.

Incorrect Header Check

This error typically appears when an image reference in your CSV is corrupted or points to a file that can’t be read. The file might be in a format Shopify doesn’t support, or the image data might be damaged.

Try removing the image URL from the Image Src column for the affected row and re-uploading the CSV. If the import works without the image, the issue is with that specific file. Re-save or re-export the image as a JPG or PNG, upload it to a publicly accessible host, and update the URL in your CSV.

Invalid CSV Header: Missing Headers

Shopify requires your CSV file to have a specific header row as the first line. If any required column names are missing, misspelled, or in the wrong order, you’ll get this error.

The correct header row for a standard Shopify product CSV is:

Handle,Title,Body (HTML),Vendor,Type,Tags,Published,Option1 Name,Option1 Value,Option2 Name,Option2 Value,Option3 Name,Option3 Value,Variant SKU,Variant Grams,Variant Inventory Tracker,Variant Inventory Qty,Variant Inventory Policy,Variant Fulfillment Service,Variant Price,Variant Compare At Price,Variant Requires Shipping,Variant Taxable,Variant Barcode,Image Src,Image Alt Text

Copy this header row exactly, including the spaces and capitalization. A very common mistake is having an extra space or invisible character at the end of the header row. Open your file in a text editor and make sure the last character on line 1 is “t” (the end of “Image Alt Text”) with nothing after it.

Inventory Quantity Can’t Be Blank

This error means you have a row where the Variant Inventory Qty column is empty, but Shopify expects a number there. If you track inventory for this product, enter the actual stock count (even if it’s 0).

If you don’t track inventory at all for this product, you need to also leave the Variant Inventory Tracker column blank. When that tracker column has a value (like “shopify”) but the quantity column is empty, Shopify treats it as a conflict and throws this error. Either fill in both columns or leave both empty.

Inventory Quantity Is Not a Number

The Variant Inventory Qty column only accepts whole numbers. If it contains letters, symbols, decimal points, or special characters, Shopify will reject the row. Check for common issues like accidental currency symbols ($10), commas in large numbers (1,000 instead of 1000), or text like “in stock.” Replace the value with a plain integer.

Missing or Stray Quote on Line

This happens when your CSV has unmatched or extra quotation marks. Excel and Google Sheets sometimes add curly quotes or double up straight quotes in unexpected places, especially in product descriptions that contain HTML.

Open your CSV in a plain text editor and go to the line number mentioned in the error. Look for a quote character that doesn’t have a matching pair, or a field that has three quotes instead of two. In CSV format, if a field contains a comma or quote, the entire field should be wrapped in double quotes, and any quote inside the field should be escaped by doubling it ("").

Src Can’t Be Blank (Image Src Can’t Be Blank)

This error appears when a product row has an Image Alt Text value but no value in the Image Src column. Shopify can’t attach alt text to an image that doesn’t exist, so the entire row is rejected.

To fix it, open your CSV and find rows where the Image Src column is empty but Image Alt Text is filled in. You have two choices: either add a valid image URL to the Image Src column (it must start with https:// and point to a publicly hosted file), or clear the Image Alt Text value so both fields are blank. The same rule applies to variant rows that should have no image: leave both image-related columns empty.

Validation Failed: An Error Occurred While Trying to Download the Image

Shopify couldn’t download the image from the URL in your Image Src column. The image file might have been deleted, moved, or the server hosting it might be blocking Shopify’s request.

Make sure the URL starts with https:// and that you can open it directly in a browser. The image must be publicly accessible: if it’s behind a login or on a private server, Shopify can’t reach it. Try re-uploading the image to a public host and updating the URL.

Validation Failed: getaddrinfo: Nodename nor Servname Provided, or Not Known

This error means the domain name in your image URL is invalid or can’t be resolved. Usually this happens when the URL is missing the protocol (https://) or contains a typo in the domain name.

Check every image URL in the Image Src column. Each URL must be a complete, valid web address starting with https://. For example, example.com/image.jpg will fail and needs to be https://example.com/image.jpg. Also verify that the hosting domain is still active and the image is publicly accessible.

Validation Failed: Options Are Not Unique

When a product has multiple variants (like different sizes or colors), each combination of option values must be unique. This error means two or more rows for the same product handle have identical option values.

Check your CSV for duplicate rows under the same handle. For example, if you have two rows for “my-shirt” both with Option1 Value set to “Large” and Option2 Value set to “Blue,” one of them needs to be changed or removed. Also make sure you don’t have the same product listed twice in your CSV file with different handles.

Validation Failed: Price Can’t Be Blank

Every product variant in your CSV must have a value in the Variant Price column. Even free products need a price of 0. Check the affected row and enter a numeric price value. Don’t include currency symbols, just the number (e.g., 29.99, not $29.99).

Validation Failed: The Uploaded Image Exceeds the 20 Megapixel Limit

Shopify limits product images to 20 megapixels (roughly 5760 x 5760 pixels). If your image is larger than this, you need to resize it before importing. Use an image editor or a free online tool to reduce the dimensions. For most product photos, 2048 x 2048 pixels is more than enough and will also keep your page load times fast.

Product Shows 0 in Stock After Import (or Doesn’t Show at All)

A different kind of import problem: the upload succeeds with no error, but the product either shows 0 stock or doesn’t appear in the storefront. There are two usual causes.

The first is a Variant Inventory Tracker / Variant Inventory Qty mismatch. If the tracker column is set to shopify but the quantity column is empty, Shopify stores the variant with 0 inventory. Re-export your products, fill in the actual stock numbers, and re-import. If the import is an update rather than a new product, make sure the Handle matches the existing product exactly.

The second is the Published column. If it’s set to false (or blank in some templates), the product is saved to your admin but hidden from the storefront and unavailable to sales channels. Change the value to true and re-import, or toggle availability manually in the product admin.

If you still don’t see the product after import, refresh the admin product list, then check the sales channel availability under the product page. Some templates default new products to “Unavailable” on the online store.

Importing Customers and Orders Has Different Rules

A lot of “Shopify import errors” actually come from someone trying to upload customer or order data using a product CSV. They’re three separate flows with three separate templates.

  • Product CSV - uploaded from Products > Import in the Shopify admin. Uses the column structure above.
  • Customer CSV - uploaded from Customers > Import. Required columns are First Name, Last Name, Email, plus optional fields for phone, addresses, tags, and accepts-marketing.
  • Order CSV - not natively supported by Shopify on lower plans. Use the Store Importer app (Apps > Store Importer) or an order-migration app. Required fields include order name, financial status, fulfillment status, line item details, and customer info.

If you’re migrating from another platform, Store Importer can handle WooCommerce, BigCommerce, Squarespace, Magento, and a few others end-to-end. For a step-by-step example, see how to migrate your Squarespace website data to Shopify, which walks through the export-then-import flow with two separate CSV files.

What to Do Before You Import

Most CSV problems can be caught in five minutes before you hit the import button:

  1. Check the file size. Shopify caps CSV uploads at 15 MB. If your file is larger, split it into chunks of 1,000 to 2,000 products each.
  2. Save as CSV UTF-8. In Excel: File > Save As > CSV UTF-8 (Comma delimited). This prevents curly-quote and accented-character errors.
  3. Open in a plain text editor. Confirm the header row is exact, no trailing spaces, and the first product row sits on line 2.
  4. Test image URLs. Open three or four Image Src URLs in a private browser window. If they don’t load there, Shopify can’t load them either.
  5. Run a 5-product sample first. Save the first five product rows as a separate CSV and import that. If it works, the headers and formatting are fine and any later errors will be data-specific to certain rows.

Still Stuck? Quick Diagnostic Steps

If your error message isn’t listed above, work through these in order:

  1. Read the line number in the error message. Open the CSV in a text editor and jump to that exact line.
  2. Compare the problem row to a row that imports successfully. Look for differences in quoting, missing columns, or extra commas.
  3. Remove that row and re-import. If the import succeeds without it, the issue is isolated to that row’s data.
  4. If many rows fail with the same error, the problem is structural: a wrong header, wrong column order, or wrong encoding.
  5. Re-download a fresh copy of Shopify’s sample CSV template, copy your data into it column by column, and try again.

If you’ve worked through everything and you’re still hitting the same error, reach out to Shopify support or a Shopify developer for help. For more technical setup work around your store, see our roundup of technical and developer tools in Shopify.