Bulk Editing Shopify Products Without Wrecking Them
Every growing store reaches a point where someone needs to change a thousand products at once. A price revision, a new size chart, a supplier rename, a tax field. The quickest route is a spreadsheet, and the spreadsheet is also how catalogues get wrecked. This guide covers what Shopify actually does with your file, and the order of work that keeps a catalogue intact.
It is written for store owners and operations teams who run product data themselves, rather than for developers.
What does Shopify do with a product CSV file?
It reads your file column by column and applies it to products that match by handle. The behaviour that surprises people is in the blanks. According to Shopify's product import documentation:
- A column you leave out is left alone. Values already in your store keep their current data.
- A column you include but leave blank is overwritten as blank. An empty cell is an instruction to erase, not an instruction to skip.
- A column that depends on data you did not include gets its existing data deleted.
- Changing an option value column creates new variant IDs and deletes the existing ones, which matters for anything that references those variants.
Two more facts from the same page are worth knowing before you start. A product CSV cannot exceed 15 MB. And sorting the file in a spreadsheet program such as Excel or Numbers can separate products from their image links, so images are lost on import.
Shopify also states plainly that an import cannot be cancelled once it has started. There is no undo button waiting for you halfway through.

When should you use the bulk editor instead of a CSV?
Use the bulk editor when the change is small and visible: adjusting prices across a group of products, or changing which sales channels they appear on. You see what you are editing, in a grid, and you can check the result immediately.
Use a CSV when the change is large, repetitive, or comes from another system such as an ERP or a supplier price list. The tradeoff is that a CSV is powerful and unforgiving, while the bulk editor is limited and safe.
A rough rule: if you would be comfortable making the change by hand for ten products, the bulk editor will handle a hundred. If you would not, the change belongs in a tested CSV.
What is the safe order for a large product edit?
Five steps, and the first one is not optional.
1. Export first and keep the file untouched. Export your products before you change anything, save that file somewhere safe, and do not edit that copy. It is your record of what the data looked like before.
2. Change one thing at a time. A file that changes prices is easy to check. A file that changes prices, descriptions, tags and images at once is impossible to check, and impossible to unwind if one column behaves unexpectedly.
3. Test on a handful of products. Cut your file down to five or ten rows, import those, and look at the result in the admin. Check a product with variants, one that is out of stock, and one with several images.
4. Import the full file only after the test behaves exactly as expected. Not roughly as expected. Exactly.
5. Check the storefront, not just the admin. Open the live site and look at prices, images, variant options and availability. Some problems only appear where customers see them.

What goes wrong most often with product imports?
The same handful of mistakes, in our experience, and each one is cheap to avoid:
- Blank cells that were meant to be skipped. A team deletes a column's contents to leave it alone, and instead erases it for every product.
- Files sorted in a spreadsheet. Sorting can break the relationship between a product row and its image rows.
- Edited option values. Renaming a size or colour value creates new variants rather than renaming the old ones, which can break inventory links.
- Prices with currency symbols or commas. Numbers that look right to a person and wrong to an importer.
- Two people editing the same catalogue at once. One person's import overwrites the other's admin changes.
If your imports keep leaving inventory in a strange state afterwards, that is usually a sync problem rather than an import problem, and our inventory sync diagnostic walks through it.
Can you undo a bad import?
Not with a button. You recover by importing your earlier export back over the affected products, which is exactly why step one matters. If you did not export first, your options get worse: rebuilding from your ERP or supplier data, or fixing products by hand.
It is also worth knowing what a store backup does and does not cover, because product data is only one part of a store. Our piece on what gets lost in a Shopify backup and restore goes through that in detail.
One more caution from Shopify's documentation: a product CSV cannot be used to bulk delete products, and it cannot update multi channel availability. Those need other tools, so do not plan a cleanup around them.
How should you handle variants in a bulk edit?
Carefully, because variants are where a spreadsheet does the most damage. Each variant is its own row in the export, sharing the handle of its parent product, and the relationship between those rows is what the import reads.
Practical rules that save catalogues:
- Do not sort the file. If you must sort, do it on a copy you will never import.
- Do not rename option values unless you intend to create new variants. Shopify's documentation is explicit that this deletes existing variant IDs and creates new ones.
- Keep the parent row. Deleting the first row of a product group and keeping its variant rows produces results nobody wants.
- Check your variant count after import. Compare the number of variants before and after. A jump means new variants were created rather than updated.
If your catalogue is large enough that variant limits are part of the conversation, our guide to Shopify's variant limits covers how to structure products before the numbers become a problem.
Who should be allowed to run imports?
Fewer people than currently can, in most stores. An import affects every product it touches and cannot be cancelled, which makes it closer to a deployment than to an edit.
A workable policy for a small team: one named owner for product data, a second person who reviews any file touching more than a hundred products, no imports during a sale or a campaign, and a shared folder where every import file and its matching pre export are kept with the date in the filename. That folder is what lets you answer the question "what changed" three weeks later.
How do you check an import actually worked?
Counting is the fastest check, and most teams skip it. Before you import, note three numbers from your store: how many products you have, how many variants, and how many are published. After the import, look at the same three. A change you did not intend is usually visible there before anyone notices it on the storefront.
Then check by sample rather than by scrolling. Pick five products deliberately: the cheapest, the most expensive, one with many variants, one that was out of stock, and one that was recently added. If all five are correct, the file behaved. If one is wrong, stop and look at that column before touching anything else.
Finally, look at what depends on your product data. Collections built on automatic conditions can empty themselves when a tag or product type changes. Discount codes tied to specific products can stop applying. Feeds to marketplaces and ad platforms pick up the change on their own schedule, so a mistake can reach Google or Meta hours after you have moved on.
What should you do before a sale or festive season?
Freeze the catalogue. Decide a date after which nobody imports anything, and make it early enough that you have days to spot problems rather than hours. Most price mistakes found during a sale were introduced by a well meaning edit two days earlier.
Before that freeze, get four things done:
- A full product export saved with the date in the filename, so you can compare or restore later.
- Sale prices set the way Shopify expects them, using the compare at price, rather than typed into titles or descriptions.
- A check of automatic collections, because that is where a wrong tag hides until the campaign goes live.
- One person named as the owner of any emergency change during the sale, so two people do not import at once.
If a price does have to change mid campaign, do it in the admin for the individual products rather than through a file. It is slower, and slower is what you want when money is moving.
When should a developer or an app handle this instead?
When the edit repeats, when it depends on another system, or when it is too complex to check by eye.
Recurring price updates from a supplier file, inventory synchronised from an ERP or warehouse, or product data that has to stay aligned with a marketplace listing are all better handled by an integration than by someone opening a spreadsheet every week. The same is true for changes that need conditional logic, such as raising prices in one category while leaving another untouched.
The signal to watch for is repetition. The first time is a task. The fourth time is a process, and processes belong in software rather than in a person's Friday afternoon.
Want your product data process reviewed?
Free review. Get in touch or email hello@exactwhy.com with the subject "Product data review", and tell us roughly how many products you have, where the data comes from, and what you edit most often. We reply within 4 hours with where your risk sits and what to change first.
Automation work. If the same edit keeps coming back, we build the integration or the internal tool that does it properly, with a record of what changed and the ability to reverse it.