Import and Export Products
Export products to CSV, edit them in a spreadsheet, and import them back: the columns, how rows match, new variants, and the review sheet.
Import and Export Products
You can export your products to a CSV file, edit it in a spreadsheet, and import it back to update many products at once. The import also creates variants and products from rows whose SKU is new. Both use the same columns, so an exported file imports back unchanged.
Importing products needs both the Create Product and Update Product rights, because one import can do both.
Import or Bulk Edit?
Both change many products at once, but in different ways, so pick the one that matches your change.
Bulk Edit sets one value on every variant that matches the product table's filters, such as a weight of 1 lb on every Apparel product. It needs no file.
Import gives each row its own value, such as a different price for each SKU, and can create new variants and products.
Export Your Products
To get a file to edit, start from an export. It has every column the import reads, and a Variant ID on each row, so each row updates exactly the variant it came from.
Open Products and set any filters, such as status, type or tags. The export has only the variants the table shows, so filter first to export part of your catalog.
Click the Export products button (the CSV icon) at the top of the list.
Under Fields, turn off any columns you do not need. Every field is on by default, so the file imports back with every column.
Click Export.
With Instant download on, the file downloads to this computer as it is built, while the tab stays open. Otherwise the export runs in the background: you can leave the page, and the file is listed in Exports when it is ready.
The file has one row per variant, and deleted variants are left out. Prices and costs are written as plain decimal amounts, such as 24.990.
Columns in the File
Each column updates one field. A blank cell keeps the current value, so an import never clears a field, and a column you leave out or do not map changes nothing. To update only prices, import a file with a SKU and a Price column.
Some fields are saved on the product or the inventory item, not the variant. A product field applies to all of its variants, and an item field applies to every variant that shares the item (see Shared Items and Pooled SKUs below).
| Column | Saved on | What it takes |
|---|---|---|
Variant ID | Variant | Finds the one variant to update. A row needs a Variant ID or a SKU. |
SKU | Variant | Without a Variant ID, finds every variant with this SKU. A SKU no variant has creates a variant. With a Variant ID, it must be that variant’s SKU. |
Product ID | Product | New variants only: adds the variant to this product. Takes precedence over Product name. |
Product name | Product | New variants only, and required for them when there is no Product ID. Rows with the same new name become one product. |
Option 1 name, Option 2 name, Option 3 name | Product | New products only, such as Size or Color. |
Option 1 value, Option 2 value, Option 3 value | Variant | New variants only, such as Small or Black. |
Status | Product | Active, Archived, Draft or Unlisted, in any letter case. |
Type | Product | Any text, such as Apparel. |
Price | Variant | A money amount, such as 24.99. |
Backorderable | Variant | Yes, No, True or False. |
Weight | Inventory item | A number of zero or more. |
Weight unit | Inventory item | g, kg, lb or oz. |
Length, Width, Height | Inventory item | Numbers of zero or more. |
Length unit | Inventory item | cm, ft, in, m or mm. |
HS code | Inventory item | The item’s tariff code, such as 6109.10. |
Country of origin | Inventory item | A two-letter country code, such as US. |
Customs description | Inventory item | Text for customs forms, such as Cotton t-shirt. |
Perishable | Inventory item | Yes, No, True or False. |
Shippable | Inventory item | No for items that are not physical, such as gift cards. Packing them takes no stock. |
Serial tracking | Inventory item | Yes requires a serial number for each unit. No turns serial numbers off. |
Default landed cost | Inventory item | A money amount, such as 6.50. |
Barcode | Inventory item | Added to the item, and its other barcodes are kept. The format is read from the value (UPC, EAN), or else your default barcode format. |
How Rows Find Your Products
Each row finds the variants it updates in one of two ways.
Variant ID: updates that one variant. If the row also has a SKU, it must be the variant’s SKU, because the import does not rename SKUs.
SKU without a Variant ID: updates every variant with that SKU. SKUs match in any letter case, and spaces around them are ignored.
Each Variant ID, and each SKU without a Variant ID, can be on one row only. Two rows for the same variant would leave it unclear which value to keep, so the import stops at the second one.
New SKUs Create Variants
A row whose SKU no variant has creates a new variant. Give it a Product name or a Product ID, so the import knows which product the variant belongs to.
With a Product ID, the variant joins that product.
With a Product name that matches one of your SKUSavvy products, the variant joins it. A name that matches no product creates a new product, and every row with that name becomes one of its variants.
A new product with more than one variant needs an Option 1 name, because a product without options has only one variant. Rows of one product can leave the option names blank, but must not disagree.
New variants cannot join a product that comes from Shopify. Add them in Shopify instead, and they sync to SKUSavvy. Products that the import creates stay in SKUSavvy and are not created in Shopify.
Update Only
To update existing variants with no risk of creating new ones, turn on Update only when you map the columns. Rows with a new SKU are then skipped and listed on the review, so you can check them for typos. Update only also hides the columns that only new variants use.
The import never moves a variant to another product, renames a SKU, or deletes anything. Make those changes on the product or variant page.
Import the File
Nothing is saved until you confirm on the last step. If any row has an error when you confirm, nothing is saved, so you can fix the file and import it again.
Click the Import products button (the upload icon) at the top of the product list.
Drop your file on the page, or choose it. CSV, Excel and JSON files work, up to 5,000 rows, so split a larger file.
On Align Columns, check that each Spreadsheet Column is matched to the right SKUSavvy Field. Columns from an export match by name, and the Example column shows a value from your file to help you match the rest.
Turn on Update only under Set Base Criteria if the file must not create variants, then click Next.
Check the rows on the review sheet (below), then click Review import.
On Review import, check the counts and the Rows table, then click Import.
The Review import step runs the whole import and then undoes it, so its counts are exactly what the import will do. It shows how many products and variants the import creates and how many fields it updates. The Rows table lists every row of the file with its Action: Create product, Add variant, Update, No change, or a skip for a new SKU in update-only mode.
When the import finishes, it says how many variants it created and how many rows it updated. Open a few of the changed products to confirm the values.
Check Rows on the Review Sheet
The review sheet shows every row of the file as SKUSavvy reads it. Check it before you import, because a wrong number format changes every price in the file.
Number and Money Format
Choose the number format your file uses: 1,234.56, 1.234,56, 1 234,56 or 1’234.56. The sheet warns you when a column has decimal points that the chosen format would read as thousands separators, such as 24.990 read as twenty-four thousand nine hundred ninety.
Money parsing sets how prices and costs are read. Plain reads 24.99 as 24.99, 1/100 reads whole cents (2499), and 1/1000 reads whole thousandths (24990). Exported files use Plain, and currency symbols or codes around an amount, such as $ or USD, are ignored.
Rows With Problems
A row that cannot be imported shows its row number in red and the reason in the Issue column. These rows are left out of the import, so fix them in the file and upload it again unless you mean to leave them out.
Click rows were not processed at the top of the sheet to jump to the next of these rows. Click Export Status to download the file with a ROW_STATUS and an ERROR_CODE column added, so you can fix the rows in your spreadsheet.
If the import stops at a row when you click Review import or Import, the error shows at the top, and the sheet scrolls to that row and outlines it.
Find, Skip and Go to Rows
Filter rows searches both the values in your file and the values as SKUSavvy reads them.
Click a row number to skip that row, and the import leaves it out. Click it again to include the row.
Click # at the top of the row numbers to go to a row by its number, such as the row an error names.
Columns that are blank on every row are hidden. The bar under the heading stands for every row of the file: green rows are ready, red rows have a problem, and the outlined part is the rows on screen.
Sync Changes to Shopify
To send your changes to linked Shopify products, turn on Sync to Shopify at the top of the upload page or of the Review import step. It pushes changes to price, backorderable, weight, HS code, country of origin and status.
Other fields, and barcodes, stay in SKUSavvy. With Sync to Shopify off, the import changes only SKUSavvy, so turn it off to test a file first.
Import Errors
Find the message you see, and the fix for it.
Why do I see "No variant has SKU …: add a product name or ID to create it"?
No variant has the row’s SKU, so the import would create one, and a new variant needs a product. Correct the SKU if it has a typo, add a Product name or Product ID, or turn on Update only to skip the row.
Why do I see "This variant’s SKU is …. The import does not rename SKUs"?
The row has a Variant ID and a different SKU. Change the SKU on the variant page, or put the variant’s current SKU in the row.
Why do I see "… is a Shopify product. Add its new variants in Shopify"?
The row’s SKU is new and its Product name is a product that comes from Shopify. Create the variant in Shopify, and it syncs to SKUSavvy.
Why do I see "… has no options, so it cannot have more than one variant"?
The product the row joins has no options, so it can have only one variant. Add an option to the product first, or give the row a different Product name to create a new product.
Why do I see "More than one product is named …"?
The new variant has no single product to join. Use the Product ID column instead of Product name for that row.
Why do I see "Another row sets a different … on the same product or item"?
Two rows update the same product or inventory item with different values, such as two pooled variants with different weights. Give the rows the same value, or leave the cell blank on all but one row.
Why do I see "SKU … is on … inventory items, so the barcode has no single item"?
The SKU matches variants on more than one inventory item, so the import cannot tell which item gets the barcode. Add the Variant ID of the variant whose item gets it.
Why do I see "Barcode … is already on …"?
Another item, order, shipment or batch already has this barcode. A barcode must find one thing when it is scanned, so remove it from the row or from the other record.
Why do I see "Unknown country code …"?
Country of origin takes a two-letter country code, such as US, CA or CN.
Why are my imported prices 1,000 times too large or too small?
The number format or the money parsing on the review sheet does not match the file. Exported files use the 1,234.56 number format and Plain money parsing. The sheet shows a warning above the rows when the values look wrong for the setting.