If you run an operating store, the Shopify CSV is the fastest way to change hundreds of products at once. It is also the fastest way to blank out every description you spent a year writing. This guide covers the mechanics, the exact limits, and the margin math the other guides skip.
CSV vs. the built-in bulk editor — pick by volume
Shopify gives you two tools for the same job, and the right one depends on how many rows you're touching.
The in-admin bulk editor is a spreadsheet view: check products on the Products list, click Bulk edit, add columns like price or SKU, and save. It's instant and reversible-by-eye, and it's the right choice for same-day edits across a few dozen items.
The CSV is for structured changes at scale — repricing 300 tees, rewriting a tag taxonomy, or swapping compare-at prices before a sale. Shopify's own guidance is to switch to CSV once the volume climbs, and you get a confirmation email after the file processes. For a walkthrough of the broader admin, our Shopify store operations guide maps every tool to the job it fits.
The exact limits that bite
Most guides mention the file size and stop. These are the limits that actually cost operators an afternoon.
File size caps at 15 MB. Your product CSV can't exceed 15 MB, per Shopify's CSV documentation — split a bigger catalog into multiple files. A store with thousands of products and long HTML descriptions hits this faster than you'd think.
The handle is the matching key. For brand-new products, only the Title column is required. For updates, both the URL handle and Title are required, according to Shopify's import documentation — the handle is how Shopify knows which existing product a row maps to. Change a handle and you create a duplicate instead of editing the original.
Images must be public URLs, up to 250 per product. Image cells take publicly reachable https:// URLs, and Shopify redownloads and re-hosts each one on import, with a cap of 250 images per product noted in the CSV documentation. Paste a dead link and that product imports with no image.
Changing option values regenerates variants. Editing a variant's option values deletes the old variant IDs and creates new ones, per Shopify's CSV documentation — which quietly breaks anything keyed to the old IDs, like an ad feed or a reviews app. If you only mean to change a price, never touch the option columns.
New products publish everywhere by default. Imported products go live on all your sales channels unless you deselect that during import, per Shopify's import documentation. For a store with a storefront and a connected channel, that can surface drafts you weren't ready to show.
One more worth knowing before your catalog grows: Shopify notes that stores with 500,000 or more variants hit a daily limit of 10,000 new variants added by app or CSV, per its variants documentation. The same page confirms the per-product ceiling is 2,048 variants, not the old 100 number people still quote. Most POD stores aren't there yet, but a catalog of 250 designs across several products and size runs climbs toward it.
The blank-column trap that wipes catalogs
This is the single most expensive mistake, and the competing articles leave it vague. Here is the exact behavior.
With "Overwrite products with matching handles" turned on, a column that is present but blank overwrites the existing value with blank, while a column that is missing entirely leaves the value untouched, per Shopify's CSV documentation.
Say you want to update prices on 300 products. You export, delete every column except Handle, Title, and Variant Price "to keep it clean," but you leave the Body (HTML) header in place with empty cells. On import, all 300 descriptions get replaced with nothing.
The fix is one keystroke of discipline: delete the whole column instead of clearing its cells. A missing column means "don't touch this." A blank cell means "erase this." Treat your spreadsheet accordingly, and only keep the columns you actually intend to change plus Handle and Title.
No undo — so the pre-import export is your safety net
Shopify is blunt about this. A CSV import can't be canceled once it begins, and you can't view a history of past imports, per Shopify's import documentation. There is no rollback button.
That makes one habit non-negotiable: always keep the clean export you pulled right before editing. If an import goes wrong, your only recovery is to re-import that earlier file. Save it with a dated filename and don't overwrite it.
Two more quiet gotchas from the same docs: collections won't export in a product CSV even though you can assign one on import, and variant metafields aren't supported in product CSV at all, per Shopify's CSV documentation. If you're reorganizing collections, that work lives elsewhere — our guide on importing Shopify collections covers the right path.
Worked example: reprice without crushing margin
The reason to bulk edit prices isn't neatness — it's profit. Here's the math the "add 20% markup" tutorials never finish.
Say you run a store doing 340 orders a month at a $31 average order value, with $2,800 a month in Meta spend. You sell a tee at $28 with a Printify cost of $12. Your blended ad cost is $2,800 ÷ 340 = about $8.24 per order.
Assume your processor keeps roughly $1.11 on that $28 sale (a card fee plus a fixed cost). Per-order profit today: $28 − $1.11 − $12 − $8.24 = $6.65.
Now you bulk edit that tee to $31. The fee rises slightly to about $1.20. New per-order profit: $31 − $1.20 − $12 − $8.24 = $9.56. That $3 price bump added $2.91 of profit per order — not $3, because the fee scaled with the price.
Across 340 orders that's about $989 more profit a month from one CSV import. But the same spreadsheet can quietly destroy margin if you fat-finger a decimal and ship a $3.10 price to 300 products. That asymmetry — huge upside, catastrophic downside, no undo — is exactly why the pre-import export rule matters.
Where Victor fits
Running that margin math by hand, product by product, is the part that doesn't scale. That's the job Victor was built for.
Victor is the AI employee inside PodVector AI. He sees every order, every ad dollar, and every supplier cost together, so he can tell you the true profit on each product — then, with your approval, make the price change inside Shopify for you. He isn't a dashboard you read; he's an employee who does the work and waits for your yes before anything goes live.
Because he also works across Meta Ads, Google Ads, your Printify, Printful, or Gelato costs, and Klaviyo, he can tell you whether a price change actually helped once the orders come in. Every write action he takes — a price edit, a budget change, a drafted support reply — is approval-gated, and his reports land in your Google Drive. When you're ready to show those new prices off, pair the edit with our guide on showing a discount on the product page.
FAQs
How many products can I bulk edit with a Shopify CSV at once?
There's no fixed product count — the hard limit is the 15 MB file size, per Shopify's CSV documentation. Split larger catalogs into multiple files under that ceiling and import them in sequence. For a few dozen products, the in-admin bulk editor is faster than a round trip through a spreadsheet.
Will a CSV import delete my product descriptions?
Only if you let it. With overwrite on, a blank cell under a present column erases that value, while a missing column leaves it alone, per Shopify's CSV documentation. Delete the Body (HTML) column entirely from your edit file and descriptions stay intact.
Can I undo a Shopify CSV import?
No. Imports can't be canceled once started, and there's no import history, per Shopify's import documentation. Recovery means re-importing the clean export you pulled before editing — which is why you should always keep it.
Should I use the bulk editor or a CSV to change prices?
Use the bulk editor for a quick change across a handful of products you can eyeball. Use a CSV when you're repricing hundreds of items with formulas, or applying compare-at prices before a sale. Whichever you pick, run the per-order margin math first so a price "increase" doesn't get eaten by fees and ad cost.
Does editing the CSV change my theme or product page layout?
No. The CSV touches product data — titles, prices, descriptions, tags, images — not your storefront code. Layout changes live in the theme; see our guide on the Shopify product page template code for that side of the store.
Why did my variants break after a CSV import?
Changing a variant's option values deletes the old variant IDs and creates new ones, per Shopify's variants documentation. Anything keyed to those IDs — ad feeds, reviews, app integrations — loses its link. If you only mean to change prices or inventory, leave the Option columns exactly as they exported.