PRICING
How to bulk update prices in Shopify
Price changes are the most common bulk job in any store, and the riskiest one to get wrong. The safest method is a round trip: export your current prices, edit them in a spreadsheet, and import the same file back. Because the file comes from your store, every row already knows which variant it belongs to.
Step by step
Export your products
In BulkCSV, open Export and choose Products. The export has one row per product followed by one row per variant, with the Command and Variant Command columns already filled in as UPDATE.
Keep an untouched copy
Save a second copy of the export before you edit anything. That copy holds your old prices. If the change needs to be reversed, importing the copy puts every price back.
Edit the price columns
Change Variant Price, and Variant Compare At Price if you run sale pricing. Leave the other columns as they are. You can delete rows for products you are not changing.
Load the file into BulkCSV
Open BulkCSV in your Shopify admin and drop the file onto the import area. CSV, XLS and XLSX files all work, and you can also paste the link to a public Google Sheet.
Validate and read the preview
BulkCSV checks every row before anything is sent to Shopify. Rows with problems are listed with the row number and the reason, so you can fix the spreadsheet and load it again. Nothing in your store changes at this stage.
Run the import
Each variant row updates its matching variant. The run is logged row by row, so any variant that could not be matched is reported instead of silently skipped.
Example file
Variant rows identified by Handle and SKU. Only the price columns need values.
| Handle | Variant Command | Variant SKU | Variant Price | Variant Compare At Price |
|---|---|---|---|---|
| classic-canvas-tote | UPDATE | TOTE-NAT | 34.00 | 42.00 |
| classic-canvas-tote | UPDATE | TOTE-BLK | 34.00 | 42.00 |
| weekend-duffel | UPDATE | DUF-GRY | 89.00 |
Download this example as a CSV ↓
Good to know
- Variants are matched by Variant ID first, then by Variant SKU, within the product named by Handle or ID.
- A blank cell means leave this field alone. An update never clears a price you left empty.
- A row that cannot be matched is skipped. It never creates a new variant by accident.
- For very large catalogs, split the work into several files and queue them. BulkCSV imports them one after another and stops at the first file with errors.
Try it on your own store
BulkCSV is free for your first 250 rows, with every feature included. No card needed.
Install BulkCSV free →Common questions
Can I update prices without exporting first?
Yes. Build a file with Handle, Variant Command set to UPDATE, Variant SKU (or Variant ID) and the new Variant Price. The export is simply the quickest way to get those identifiers right.
How do I put products on sale?
Set Variant Price to the sale price and Variant Compare At Price to the original price. Shopify shows the compare at price crossed out.
Can I undo a price update?
Rollback only removes records an import created, so it does not reverse an update. Import the untouched copy of your export to restore the old prices.