Skip to main content

How to Add and Update Shopify Products Without Losing Data

BulkFlow | | 10/15/2026

A Shopify CSV import lets you create new products or bulk-update existing ones by uploading one spreadsheet instead of editing each product in the admin. The upload takes only a few clicks. The result depends on what’s in the file and how you set the overwrite option.

Shopify matches rows to existing products by their handle and expects column headers that match its template exactly. This guide shows you how to prepare and run the import so that a renamed header, a mistyped handle or a blank cell doesn’t cause a failed import, duplicate products or lost data.

Prepare Your CSV File

Most failed imports and unwanted data changes come from the file, not the import screen. A CSV file is a spreadsheet saved as plain text. Each row describes a product, variant or image, and each column holds one field.

Start From Shopify’s Template or a Product Export

Begin with a file whose headers Shopify already accepts. For new products, use Shopify’s current sample product CSV and replace its example products with your own. To update products already in your store, export them and edit that export, because it already contains the correct headers and your existing handles.

If the blank template feels unfamiliar, create one or two products manually in your Shopify admin and export them. The exported file shows how your own data looks in Shopify’s format, so you can follow that pattern for the rest of your catalog.

Keep the headers exactly as they appear in the current sample CSV, including capitalization. For example, Handle and handle are not treated as the same header. A file from another platform or store must be converted to Shopify’s product CSV format first, because mismatched or missing headers make the import fail.

Pay particular attention to the handle, the product’s unique URL-friendly identifier. Shopify uses it to match each row to an existing product, so a changed or mistyped handle can create a new product instead of updating the existing one.

Follow Shopify’s File Format Rules

Save the file with UTF-8 encoding, a text standard that keeps accents and symbols intact. Google Sheets saves CSV files as UTF-8 by default, but Excel and other spreadsheet programs may require you to choose UTF-8 when you save. If you skip this step, product text can show unexpected characters after the import.

Use straight quotation marks and apostrophes ("), not curly ones (“ ”). Word processors and some spreadsheet settings convert straight quotes automatically, which can trigger quoting errors during upload.

Keep each product CSV at or under 15 MB. If your file is larger, or the upload times out, split it into smaller files and import them one at a time.

Use one format for each type of value throughout the file, such as the same decimal style for every price and the same date format in every date field. Mixed formats are harder to check and can cause values to import incorrectly.

Structure Rows for Variants and Images

A product with variants usually spans several rows. Each variant gets its own row that repeats the product’s handle, and the option values in each row, such as size and color, must form a unique combination. A T-shirt sold in Small/Red, Small/Blue and Medium/Red, for example, uses three rows with the same handle and a different option pair on each.

Additional images follow a similar pattern: add one row for each extra image, with the product’s handle and the image URL. The URL must use HTTPS and be publicly accessible, because Shopify can’t import an image from a private or login-protected link.

Because rows are grouped by handle, each handle must belong to only one product. If two products share a handle, or one product’s rows contain conflicting handles, the import can fail. Before you upload, compare your row layout with the current sample CSV or a recent export.

How to Import Products Into Shopify

Test a small batch before you upload the full file. A test shows how Shopify reads your file and catches formatting mistakes while they affect only a few products. Merchants can import a few products from their file in their own store, while Partners running a large import for a merchant should test a small subset of the changes in a development store first.

Once your test looks right, follow these steps:

  1. In Shopify admin, go to Products.
  2. Click Import.
  3. Click Add file and select your CSV file.
  4. Optional: Deselect Publish new products to all sales channels if you want new products to appear only in your online store. This setting affects only new products, and you can add them to other channels later.
  5. Optional: Select Overwrite products with matching handles only if you intend to update existing products. It replaces existing values for every column in your CSV when a handle matches, so read the next section before you select it.
  6. Click Upload and continue.
  7. Review the import details carefully. Once the import starts, you can’t cancel it, and Shopify processes every row in the file.
  8. Click Import products.

Shopify sends you a confirmation email when the import completes.

Update Existing Products Without Losing Data

To bulk-edit products you already have, export them, change the values in a spreadsheet and reimport the file with Overwrite products with matching handles selected. If you leave that option unselected, Shopify ignores every row whose handle matches an existing product, so none of your edits reach the store.

  1. Export the products you want to change from your Shopify admin.
  2. Save an untouched copy of that export, and make your edits on a duplicate.
  3. Edit the duplicate in a spreadsheet program such as Google Sheets.
  4. Import the edited file with Overwrite products with matching handles selected.

The untouched copy is your only practical rollback path. Shopify can’t undo an import and keeps no import history, so if an overwrite changes the wrong values, your saved original is the only record of what the products looked like before.

During an overwrite, the result for each column depends on whether the column is in your file and what it contains:

  • Included but blank: A blank cell in a non-required column replaces the existing value with a blank. If a product’s Vendor is John’s Apparel and the Vendor cell in your file is empty, the product ends up with no vendor.
  • Left out of the file: If a non-required column isn’t in the file at all, the existing value stays unchanged.
  • Included without its related columns: Some columns depend on others, and including one without the columns it relies on deletes existing data. For example, importing a SKU column without the Option1 name and Option1 value columns deletes the variant option.

Because an empty cell and a missing column have opposite effects, delete the columns you don’t intend to change instead of clearing their cells. Keep the handle column so Shopify can match each row, along with the columns you’re editing. If you’re updating variant details such as SKUs, also keep the option name and value columns, including Option2 and Option3 if your products use them.

Be cautious when editing the option values themselves, such as renaming a size from “Small” to “S”. This may create new variant IDs, the internal identifiers apps use to recognize each variant, so apps that reference the old IDs could stop working correctly. If your store relies on such apps, test the change on a single product before updating the full catalog.

Fix Common Shopify CSV Import Errors

Most import errors trace back to encoding, headers, file size or changes to variant options. Find the message or symptom you’re seeing below and apply the matching fix.

Unexpected characters after import

Garbled accented letters or symbols mean the file wasn’t saved with UTF-8 encoding. Depending on how many products are affected, choose one of these fixes:

  • Correct a few affected products manually in Shopify.
  • Import an older version of the file that was saved correctly.
  • Re-save the file with UTF-8 encoding and import it again.

“Network error: Unexpected token < in JSON at position 0”

This message means your column headers don’t exactly match Shopify’s template. Compare each header, including its capitalization, with the current sample CSV and edit any that differ. The error is common with files exported from another platform.

Illegal quoting

This error occurs when commas or quotation marks in the file aren’t UTF-8 characters, often because curly quotes replaced straight ones. Save the original file with UTF-8 encoding so quotes and apostrophes become standard straight characters.

“Line is invalid (No details)”

This error can appear when you move an existing option to a different position, such as moving Size from Option 1 to Option 2 because you added Type as Option 1. Shopify’s workaround uses two imports:

  1. Import the file with a temporary option name, such as “Size.” with a trailing period.
  2. Import a second CSV that renames the temporary option to the name you want.

Upload error or timeout

A failed or timed-out upload usually means the file exceeds the 15 MB limit. Split it into smaller files and import them one at a time.

Problems that appear after a successful import

Some problems produce no error message: the import completes, but the products look wrong. These causes are common, although they aren’t the only possibilities.

Symptom Likely cause Fix
Images are missing The image URLs are private or broken Use public HTTPS image URLs that open in a browser, then re-import
Existing values are now blank Columns were left blank while the overwrite option was selected Remove columns you didn’t intend to change, or fill them in, then re-import
Variants disappeared or were replaced by a single default variant Variant fields were imported without their option columns Include the option name and value columns for every variant row

Verify Your Products After the Import

An import that finishes without an error can still contain wrong or missing values. Read Shopify’s confirmation email, then open your store’s activity log to see the recent changes the import made, since it’s the only in-admin record of what changed.

Next, compare the number of products and variants in your admin with the number in your source file. If the totals don’t match, some rows were skipped or duplicated, so fix that gap before checking individual details.

Once the counts match, spot-check a sample that covers each type of product in your file:

  • A simple product with a single variant
  • A product with several variants
  • A product with several images

Each type depends on different rows in the CSV, so a problem with variant or image rows often shows up in one type but not the others. On each product, check the title, prices, SKUs, images and their order, product status and sales channel availability. If your file included inventory or SEO fields, confirm those values too, including inventory for each location.

Finally, keep the original CSV, the final CSV you imported and Shopify’s result email together. These files record what the store looked like before the import and what you changed.

What the Product CSV Doesn’t Cover

The product import handles creating, migrating and bulk-editing products, but some related jobs need a different tool:

  • Deleting products: You can’t bulk-delete with a CSV. Use the bulk actions on the Products page instead.
  • Availability on other sales channels: You can’t bulk-change it through the import, so adjust those channels separately.
  • Stock levels by location: Import quantities through an inventory CSV under Products > Inventory. If you only need to change quantities, use that import instead of the product CSV.
  • Customers and orders: Customers have their own CSV import, and order history isn’t part of this workflow.

Conclusion

A Shopify CSV import is a fast and reliable way to add or update products once your file matches Shopify’s current template and you treat the overwrite option with care. With a backup of your catalog, a small test batch and a quick check afterward, you can make large changes without losing the data you meant to keep. We hope this guide helps you run your next import with confidence.

How to Add and Update Shopify Products Without Losing Data
BulkFlow provides a solution to import data in bulk from CSV/Excels Files, FTP, Google Sheet, XML,… to e-commerce platforms such as Shopify, WooCommerce,… automatically and quickly.