Before you re-import a Shopify product CSV, check what every included column is allowed to change. A blank cell can clear existing data, and removing the wrong column can affect a product's variants.
This guide is for updating products already in your store with Shopify's native product CSV importer. If an import has already changed something unexpectedly, keep the exact file you uploaded and compare one affected product before trying another bulk correction.
Check which existing product the file will match
Shopify uses the product handle to match existing products. With the overwrite option enabled, included values can replace existing ones; without it, matching products are skipped [1]. A SKU is useful for checking the intended variant, but it isn't the product-matching key for this overwrite option.
Start from a fresh export of the products you intend to edit. Keep an untouched copy, then make a separate working file. Shopify lets you export a selected or filtered set, which makes this easier to review than a whole-catalog file [3].
Write down the purpose in one sentence: ‘Change the vendor on these products’ or ‘Update these variant weights’. If a colleague cannot tell which products and fields are in scope, the file isn't ready for import. Keep handles unchanged when the aim is to update those same products.
Separate blank cells from omitted columns
For a non-required field, an included blank column can erase its existing value. Leaving that column out preserves the value, provided no other included field depends on it [1,2]. Check the field reference for defaults too; don't apply this rule to every column. This distinction matters when someone clears spreadsheet cells to mean ‘leave this alone’.
Consider an illustrative product whose Vendor is North Mill. A populated Vendor cell changes it to the supplied name. A blank Vendor cell clears it. An omitted Vendor column leaves North Mill in place. The following comparison isolates this one field; it is not a complete import file.
Product-level fields such as Vendor belong on the product's first row. Later variant rows can legitimately leave them blank [2]; don't fill those continuation rows indiscriminately. Mark intentional clearing in your work notes. That lets the reviewer distinguish a requested deletion from an accidentally empty column. Keep those notes outside the upload file. Don't fill unknown values with guesses just to make the sheet look complete.
Keep the columns that identify each variant
Shopify lists URL handle and Title as the required update columns, but variant-related changes need additional data. For example, a SKU or weight update also needs Option1 name and Option1 value. Missing dependent option data can replace existing variants with a default variant [2].
Use the current store export and preserve the option structure for the products being changed. Review all option columns present, including second and third options where used. Don't build a minimal file by deleting every column that isn't the field you want to edit.
Changing option values can recreate variant IDs and break app dependencies [1]. Keep a routine content or weight update separate from renaming sizes, reorganizing options or redesigning variants. If the change includes those tasks, ask the developer or integration owner to plan the effect on connected systems first.
Current Shopify documentation uses headings such as URL handle and SKU; older exports can use different supported names [2]. Work from the actual export and field reference, rather than renaming headers to match an old tutorial. Preserve the product row groupings too: Shopify warns that spreadsheet sorting can disconnect variants or images [3].
Test a small, representative set
Choose examples that cover the change: a simple product, a product with several variants, and any unusual product that relies on an app. Use a suitable test store first for a large import [1]. Keep the production update limited until the expected result is clear and the test has passed.
- ✓Record the current value and intended result for each changed field.
- ✓Record what must stay the same: option combinations, SKU mapping, images and any relevant app behavior.
- ✓Compare the working file with the untouched export, including blank cells and omitted columns.
- ✓Review the import details and overwrite choice before starting. Shopify says a started CSV import cannot be canceled [1].
Check the product in the admin after the import, then inspect the affected storefront behavior. A new export helps compare saved field values. It won't replace a customer-facing check when the change affects a product selector, image or app feature.
For the wider update, agree who owns the file and when other catalog edits can happen. If someone changes a product after your export, reconcile that change before importing your older copy. This is especially important when apps or another team also write the same fields.
Repair the cause before importing again
If a row failed, start with Shopify's reported error and the affected product. If a row was accepted but the result is wrong, compare the submitted values with the original export. Those are different problems: resubmitting a syntactically valid blank field will not recover its old value.
For a few incorrect field values, a targeted admin correction may be easier to review. For a larger correction, prepare a new file containing the intended products, the values to restore and their required dependencies. Test that correction on a small set before expanding it. Avoid re-importing an entire old catalog over newer, valid edits.
If variants were recreated or images are missing, keep the files and involve whoever owns the affected integrations or backup. Restoring a displayed label doesn't prove that a previous identifier or app relationship has returned. Shopify's product export contains image references rather than the image files themselves [3], so retain a separate recovery plan for the resources your store needs.
Two questions before choosing CSV
Is a CSV necessary for a small product update?
Can I use this workflow to update stock at several locations?
Before the next upload, choose one product and write its expected result beside the current value. Then check every included field that could change that product. That gives the wider import a concrete result to match.

