VARIANTS
How to add and update Shopify variants in bulk
Variants are where most product spreadsheets go wrong, because one product spans several rows. BulkCSV keeps it simple: a variant is its own row with the same Handle as its product, and a Variant Command that says what to do with it.
Step by step
Make sure the product exists
Variant rows attach to a product that is already in your store. Create the product first, either in the Shopify admin or with a product import.
Add one row per variant
Give each row the product's Handle (or ID) and a Variant Command: NEW to add a variant, UPDATE to change one, DELETE to remove one, or IGNORE to skip the row.
Fill in the variant columns
Variant Options takes Name:Value pairs separated by semicolons, for example Size:Large;Color:Blue. Variant SKU, Variant Price, Variant Compare At Price and Variant Barcode are optional.
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
Variants are created or updated on the matching product, and each row's result is logged.
Example file
Variant rows share the product's Handle. Options use Name:Value pairs separated by semicolons.
| Handle | Variant Command | Variant SKU | Variant Options | Variant Price | Variant Barcode | Variant Inventory Qty |
|---|---|---|---|---|---|---|
| classic-canvas-tote | NEW | TOTE-NAT-L | Size:Large;Color:Natural | 38.00 | 0123456789012 | 25 |
| classic-canvas-tote | NEW | TOTE-BLK-L | Size:Large;Color:Black | 38.00 | 0123456789029 | 25 |
| classic-canvas-tote | UPDATE | TOTE-NAT | 34.00 | 0123456789036 |
Download this example as a CSV ↓
Good to know
- UPDATE and DELETE rows need a Variant ID or Variant SKU so BulkCSV can find the existing variant.
- Variant Inventory Qty is only read on NEW rows. It sets the starting stock at your store's primary location.
- A row is treated as a variant row only when Variant Command has a value, so ordinary product rows are never mistaken for variants.
- Product exports from BulkCSV use this same layout, so you can export, edit and re-import.
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 put the product and its variants in the same file?
Yes. Put the product row first, then its variant rows underneath with the same Handle.
Can I use my Shopify or Matrixify product export?
Yes. BulkCSV recognises those layouts and converts the extra rows for a product into variant rows for you.
How do I change stock levels on existing variants?
Inventory quantity can only be set when a variant is created. Use Shopify's inventory tools to adjust stock on existing variants.