Shopify Products Export and Import Excel Sheet

Excel Sheet Name


Columns Available For Export And Import

Base Columns

Column Allowed Values Description / Example Value
ID Number ID is automatically generated number by Shopify to identify the item.
It is filled in by an Export.
When creating new Products, leave this value empty.

Handle Any characters allowed in a URL This is what your store visitors will see in the Products URL address like this:

URL address has a great impact on SEO, so be sure to give it a meaningful name.
Regardless, what you write here, the app will convert it to lowercase, and remove all non-URL friendly symbols.
You can leave it empty when creating new Products – in that case, the app will generate it for you from Title.

Even if the handle will be in the non-English language, it will transliterate it to English, so that it is valid for URL. For example “рубашка” will be converted to “rubaska”.

Each product Handle must be unique across your Shopify store, so when creating new products from external data source, even better approach would be to create Handle from Title and original product ID using Excel formula like this: =C2 & ” ” & B2 (assuming that you put some original product ID in the B column).

Whatever you will put in the Handle column, the app will convert it to required Handle format, which is acceptable by Shopify.

  • NEW
When importing Product row – tell the app, what to do with it:

  • NEW: will try to create a new Product with the provided details. If such Product will already exist (with the same ID or same Handle), then the result will be Failed.
  • UPDATE: will try to find existing Product, and update it with data from the row. If such product will not be found, then it will create new.
  • REPLACE: at first, if such Product with provided ID or Handle exists, then the app will delete it. After that, it will create a new one. If an existing Product will not be found, then still the app will create a new one. The difference from UPDATE is that it will not keep any of columns, which were not included in the import file since the Product will be deleted and re-created.
  • DELETE: the app will delete the existing Product, which is found by ID or Handle. If such Product will not be found, then the result will be Failed. This DELETE command is very handy for deleting Products in bulk.

If no Command is specified, then the app will assume the UPDATE command.

Title Text Title of the Product

Mom Strength Red T-shirt Slim Fit
Body HTML Text, HTML

This is a long description of the Product.

You can write here just a plain text, or format that text using HTML code.

You can put here additional images, videos, links to other Products or sites, tables, and so on.

You can learn about HTML capabilities online, for example or use some online video courses, like from or

The best way to create HTML for Product, is to write a Description in the Shopify Admin for one Product, format it as you like, and then do the export. Then you will see, how that translates to HTML, and will be able to apply the same to other Products.

   <li>Looks nice</li>
   <li>Feels good</li> 
Vendor Text Basically the Brand name.

Be sure to keep all the same Brand names written the same. For example, “H&M” and “H & M” (with spaces) will be appearing as two different brands.

Type Text Product Type – allows you to define certain kind for each Product. Those can be, for example: T-shirt, Shoe, Hat, and so on.

Tags Comma Separated List Tags allow you to add additional elements or “properties” to your product, which you can use for filtering, for showing some additional information about the Product in the store.

Tags also are great, when Type column is not enough, and you need to create a hierarchy of some sort. For example, you might want to tell that this Product is a Shirt and a Skirt. In this case, you could add tags: Type: Shirt, Type: Skirt.

Then you can create Smart Collections “Shirts”, where you include all Products which have Tag “Type: Shirt”, and another Smart Collection, where you include Products which have Tag “Type: Skirt”. That way this Product will be included in both Smart Collections.

Tags column values are read joined together from all the duplicated product rows so if you like, you can have duplicate rows with each tag in its own row, and those all will be imported.

Color: Red, Eatable, Featured, Type: Skirt
Tags Command
Tell the app, what to do with Tags:

  • MERGE: will add Tags to existing tags. It means that you don’t need to list all the tags in the import file, you can import those which you want to add. If some of the tags you are importing already exist, then the app will ignore it.
  • DELETE: will delete the Tags that are listed in the import file. If the listed tag will not exist, then the app will ignore it.
  • REPLACE: will replace all existing tags with the tags from the import file. Use this method to maximize the import speed, because if you will use MERGE, it means that the app will need first to load existing tags which takes additional time.

If Tags Command is not set, the app will assume the REPLACE command by default.

Updated At Time This column will only be exported.

It will be automatically updated, whenever you change the Product data.

2017-10-06 23:03:00 UTC
  • TRUE
Tells, whether this Product should be Published on your “Online Store” Sales Channel. If you will set it to FALSE, it will be hidden from Online Store, and clients will not be able to find it.

If you will leave this cell empty, then it will hide that Product form Online Store.

If Product is not Published, you can publish it from Shopify Admin by finding this Product, or importing the update of this column, marking Published to TRUE.

Published At Time This column can be exported and imported.

It will be automatically updated, whenever you publish the Product to Online Store channel.

You can set product publication date in the past, by importing the specific date you like.

2017-10-06 23:03:00 UTC
Published Scope
  • global
  • web
Tells Shopify, where to publish this Product.

  • global: will be published in all your active store channels, like Online, POS, Facebook, etc.
  • web: will be published only in Online channel
Template Suffix Text Template Suffix allows you to specify another Template from your Theme for this specific Product. For example, you might want to specify different template for a Featured product, which has different page layout.

Work with your developer to create new Template or read Shopify documentation about adding additional Product templates. Once new Template is created, you can set in this column to activate it for needed Products.

That different template will show as dropdown for Products in Shopify Admin, when new Product Template will be created in your Theme. For example, if the new Template file name is “product.featured.liquid”, then – to activate this Template for this Product, write “featured” as the Template Suffix.

URL URL The Product page URL.

Only exported.

Primary Row TRUE / FALSE Since all the base rows values are repeated for all item rows, in the export the primary row is set to TRUE, so that it can be used in sorting, to have that primary row on top.

Collections Columns

Each Product can exist in several Custom Collections and Smart Collections.

Column Allowed Values Description / Example Value
Custom Collections Comma-separated Collection Handles This column is only exported.

It contains a comma-separated list of Custom Collections where this product is appearing.

The values of this column are repeated for all the product rows (image rows and variant rows). This would allow tricks like – finding out which SKU is in which collection.

If this cell is empty, it means that this particular product is not included in any of the Custom Collections.

To include the product in a Custom Collection, please, refer to the Custom Collections documentation or see the tutorial: How to add Products to Shopify Custom Collections (also known as Manual Collections).

daily-picks, our-bestsellers
Smart Collections Comma-separated Collection Handles This column is only exported.

It contains a comma-separated list of Smart Collections where this product is appearing.

The values of this column are repeated for all the product rows (image rows and variant rows). This would allow tricks like – finding out which SKU is in which collection.

If this cell is empty, it means that this particular product is not included in any of the Smart Collections.

To include the product in a Smart Collection, please, refer to the Smart Collections documentation or see the tutorial: Create Smart Collections in bulk by Product Tags.

red-shirts, discounted

Image Columns

Each Product can have several images.

Each variant can be linked to one of those images.

Columns and rows of images don’t correlate with Variant Columns and rows. So Variant Image and Image Src rows are not aligned. Each of the column groups live their own life.

Column Allowed Values Description / Example Value
Image Src URL Link to the image. This link must be publicly available.

Once images are imported, those don’t need to be hosted anymore with this link, because Shopify will download this image and store on their own servers.

To import several images for the same Product, you have two options:

  1. repeat the new row with the same ID or Handle, or Title values
  2. have several image links in the same Image Src cell, separated by ; (semicolon)
  3. any combination of the both above options.

If you need to add additional image, you don’t need to mention other images – just mention those images, which you need to import, and use MERGE as “Image Command”.

If Image Src column will be empty, or will not exist, the images will stay unchanged.

If Shopify will not be able to download all images, the warning about that will be put to Import Results file “Import Comment” column.;
Image Command
Here you define the action, what to do with images:

  • MERGE – will keep all existing images for your product, update data of specified images from this import, and add any new images.
  • DELETE – if put next to the image, then this particular image will be deleted, while all other images will be kept.
  • REPLACE – will delete all other images, and keep only those, which are included in this import.

Images are never deleted or removed by default – only when you will give the explicit command to do so.

If Image Command is empty or such column don’t exist, then the MERGE command will be assumed.

Image Position Number The position of the particular image.

You can reorder images inside one product by doing Export, changing those Position values, and importing back as an image column update.

To change positions of images, you also need to have the “Image Src” column in the same import, so that it knows, which image you are talking about.

When importing several images with the semicolon, the image numbers will be auto-incremented starting from this given number.

Image Width Number The width of the image, in pixels.

Exported only.

Image Height Number The height of the image, in pixels.

Exported only.

Image Alt Text Text By SEO best practices, it is strongly suggested that images have “alt text” specified, because this is how search engines know, what’s inside that image.

T-shirt small size


Variant Columns

Each Product can have several variants, that is a different version of a product, for example, size or color.

All those variants can be imported, as well as exported.

Products with several Variants are organized as follows: you need to copy cells from base Columns to a new row for each additional Variant. To identify that Variant belongs to the same Product, you must have ID column or Handle column. At the same time, you can duplicate also all other columns, if that’s more convenient.

Those all are columns, which are accessible in Shopify Admin, when adding new product Variant.

Shopify allows maximum of 100 Variants per Product.

Column Allowed Values Description / Example Value
Variant Inventory Item ID Number Global Inventory Item identifier. It is the new way how Shopify identifies inventory item across many locations. We are transitioning the app gradually to this new approach. Read more here.

For now it’s exported only.

Variant ID Number Products have Variants – which are essentially combination of unique Option Values.

Each Variant, after imported, gets its own Variant ID, assigned by Shopify.

When you import new Variants or replace all existing Variants for Product, you need to leave Variant ID column empty, or remove that column from Excel file.

When you will Export Products, then Variant ID will serve as a reference to whichever Variant you want to update. You can update one or many columns for Variant by keeping the Variant ID in the import file. That way the import will know precisely, which Variant you need to update.

To add several Variants to a Product, you need to add additional row. Import will know that the Variant belongs to the same Product, if that added Excel row will have the same ID, Handle or Title (whichever comes first). All the other Product base columns (which are not variants) are ignored for Variant rows. That means that you can either leave them empty, or just copy the same previous line – which in some cases can be much more convenient. Basically, when you are copying rows, you don’t need to empty the cells of copied product information.

Your Product can have no Variants, in this case it will have one Variant, which will hold information like inventory quantity and price for this Product.

Option1 Name Text Each product can have 3 Options, with many values per option.

This Option1 Name column is the name of 1st Option. The value of this 1st option is to be written in “Option1 Value” column, which becomes so called Variant of the product.

You can have those options empty, if you don’t have any options to choose from. Then you need to keep Option Values empty as well.

Option1 Value Text The Value of Option1 Name.

For example, if we considered the Option1 Name to be a “Color”, then Option1 Value need to contain colors, like, Red, Blue, Green, and so on.

You can have as many Option Values as you like. The Shopify global limitation here is that you can have up to 100 Variants per Product.

All option value combinations must be unique, meaning that there is not allowed to be two variants with the same Option Values. For example, you can’t have two Variants with the same Color, Size and Fabric. At least one of those must be different.

Option2 Name Text The name of the 2nd Option.

Option2 Value Text The Value of the 2nd Option.

Option3 Name Text The name of the 3nd Option.

Option3 Value Text The Value of the 3rd Option.

Variant Position Number Variants can be sorted in specific order. This Variant Position tells that order.

You can update order of existing Variants by changing those numbers and importing them back as an update.

And off course, you can import just this column – just you must have ID and Variant ID columns in your import file, remember – so that app knows, which Product and which Variant you need to update.

Variant SKU Text SKU number is a “Stock Keeping Unit” reference number, usually used in wholesale to uniquely identify and reference the Product Variant. Some companies organize all their inventory by SKU numbers, which allows them to track items with precision.

When you import data from any DropShipping company, they will almost always have SKU number to identify their Product variants. It’s good practice to keep those SKU numbers from wholesale company or DropShipper in this column. It will be useful when your customer will place an order through your store, you will be able to tell the DropShipper this SKU number, and they will instantly know, which Product Variant is being ordered.

If you have your own inventory, you can create your own SKU numbers, as simple as 1, 2, 3, or something more complex, which encodes your product category, or some other important information, like: TS000001RXSC.

Variant SKU can also be used as a “key” to identify existing Products if the ID or handle is not known for the product. Read Tutorial: How to update Product by SKU?

Variant Grams Whole Number Imported only (to be compatible with Shopify CSV columns format).

Regardless of the weight that you will show on your Store, you can specify weight in grams.

Will use the value of this column only when there is no “Variant Weight” column.

When showing Product information, Shopify will convert those grams to whatever Weight Unit you will need to use.

Variant Weight Number The weight in the specified Variant Weight Unit.

Variant Weight Unit
  • g
  • kg
  • oz
  • lb
The weight unit to show Clients. Shopify will automatically convert grams to this weight unit.

Allowed values: g, kg, oz, lb.

Variant Inventory Tracker
  • shopify
  • <empty>
Inventory of the Variant can be tracked by Shopify, or not.

To have Inventory Tracking means that somebody will look after the available quantities in your inventory stock. Whenever item will be purchased, the quantity of this Variant will be decreased.

Allowed values in this column: shopify, <empty>.

If you will set the value to “shopify”, then Shopify will track and update your inventory quantities for each Variant.

Some DropShippers provide the inventory tracking service and automatic updating of available quantity. In that case you need to keep this value empty, so that Shopify won’t track it.

Some variants can have Shopify to track inventory, and some can be empty, meaning, that inventory here will not be tracked by Shopify.

Variant Inventory Qty Number Quantity of available Product Variants in your stock.

Will be automatically updated, when items are sold, if Variant Inventory Tracker is set to “shopify”.

Variant Inventory Policy
  • deny
  • continue
When Shopify is tracking your inventory, it needs to know, what to do, when Variant quantity reaches 0, which means, you are out of stock.

Allowed values are:

  • deny: Shopify will not allow to purchase this item on your Store. It will tell your Customers that item is out of stock.
  • continue: Shopify will still allow Customers to purchase orders from your Store, even when you are out of stock.

If you will leave this value empty, and Shopify will be set to track your inventory, then Shopify will consider this to be “deny” policy by default.

Variant Fulfillment Service Text There are warehouses or DropShippers who can package and ship the item to your Customer, when she places an order. That is called a Fulfillment Service. You can connect this, so that whenever item is ordered from your Store, the Fulfillment Service provider instantly ships that order to your Customer – automatically.

You can have several Fulfillment Services connected to your store, and each Variant can be linked with one of them.

If you want to fulfill orders manually, you can enter the value “manual“.

If you want a Fulfillment Service to ship your orders, then you should enter here the Handle of the Fulfillment Service. You can find this Handle by setting a chosen fulfillment service for one of your Variants in your store, and then doing the Export. In the Export file you will see the Handle of this Fulfillment Service.

Variant Price Decimal Number The price of the Variant item in the currency, which you have set for your Store.

Variant Compare At Price Decimal Number The original price, if your Variant Price is a discounted price.

Which means – if you want to show that a Variant is being sold at a discount, then you set your Variant Price to a new, discounted price, and set this “Variant Compare At Price” to the old, original price.

Neat Trick

If you want to create a Smart Collection, which shows all Discounted Products, you can create a Smart Collection with a Rule, which says: include all Products with Variant Compare At Price is greater than 0.

Even Neater Trick

If you want to create a Discount Code and allow to use it only for Products which are not sold already at a discount – you can create a Smart Collection, which includes only Products, where Variant Compare At Price equals 0. And then attach that Collection to your Discount Code.

But here is the problem – if your Variant Compare At Price will be empty, those Products will not be included in this list, and basically Customer will not be able to use their Discount code for them. To make those Products appear in that “Undiscounted Products” Collection, you need to set all non-discounted product variants Variant Compare At Price to be exactly 0. Voalá!

Variant Requires Shipping
  • TRUE
Variants can be shippable or not. Non-shippable Variant would be a digital good, which you sell.

If you set it to TRUE, then Shopify will ask Customer for Shipping address.

If this is FALSE, then Shopify will not ask for Shipping address.

If you leave this empty, then it will be assumed as FALSE – that it doesn’t require shipping.

Variant Taxable
  • TRUE
If you set it to TRUE, then Shopify will charge additional Tax on the item price, taking in account your store Tax settings.

If you set it to FALSE, then Tax will not be added to the Price.

If you leave it empty, then it will be assumed as FALSE – that it’s not taxable.

Variant Tax Code Text Specifies the Avalara tax code for the product variant. Will export and import only for stores that have the Avalara AvaTax app installed.

Variant Barcode Text Shopify officially supports UPC or ISBN barcode types, but you can put here any other barcode format.

Variant Image URL Link to your Variant image.

Rows of Variant Images are not aligned with rows of Image Src images. They each live their own life.

It can be the same link, as you use in your Image Src for product image, or it can be a different link, which is specific to this Variant.

If this link will be one of those, which you also have for Image Src column, then it will recognize it and use the same Product image for Variant.

If that will be a link, which is not listed in Image Src column, then it will add this image to Product images too.

Each Variant can have only one image.

If the app will not be sure that the correct image is mapped to a variant image, due to missing images, then warning about that will be written in Import Results file “Import Comment” column.

To specify the “alt text” for this image, do that for this image link in the “Image Alt Text” column.
Variant Command
Whenever variants are imported, there is always one of those commands executed for each of variant rows:

  • MERGE – merges new variants into existing product variants. Updates those that can be found by “Variant ID”, “Variant SKU”, “Variant Barcode” or Option Values. If it will not find such variant to update, then it will add new.
  • DELETE – will delete the listed variant. Requires “Variant ID”, “Variant SKU”, “Variant Barcode”, or Option Values – so that it can identify, which variant you want to delete.
  • REPLACE – will replace all existing product variants with the ones that are listed in the import. This will delete any variants that are not included in the import for that product.

If no Variant Command is specified, then the MERGE will be assumed.

See this Tutorial for more details about adding variants: How Add Variants To Existing Product.


Variant Metafields

Variant Metafields are metafields that are attached to each Variant. The column name for variant metafield starts with “Variant Metafield: “, followed by the – the same way as the Metafields.

For example:

  • The variant metafield with name “buy_price” in the global namespace should be called “Variant Metafield: buy_price”.
  • The variant metafield with name “description” in the “details” namespace should be called “Variant Metafield: details.description”.

Note that exporting and importing Variant Metafields will significantly increase the time it takes to process the items because each variant metafield needs separate request to the Shopify API. Therefore, be mindful and export/import variant metafields only when you really need them.

Read more detailed documentation on Metafields page.


Read more detailed documentation on Metafields page.

Metafields for SEO

Metafield Column Name SEO Field
Metafield: title_tag SEO Title
Metafield: description_tag SEO Description

Metafields for Google Shopping

Those are the same fields that you import and export with Shopify CSV files, just they are actually stored as the following Metafields in Shopify:

Metafield Column Name Shopify CSV File Column Google Shopping Field
Metafield: mm-google-shopping.adwords_group Google Shopping / AdWords Grouping
Metafield: mm-google-shopping.adwords_labels Google Shopping / AdWords Labels
Metafield: mm-google-shopping.gmc_id Comma separated relationships between product and its variant(s).

“shopify_US_”+”product ID”+”_”+”variant product ID”

Metafield: mm-google-shopping.condition Google Shopping / Condition  


more info here.


Metafield: mm-google-shopping.custom_label_0 Google Shopping / Custom Label 0 custom label 0
Metafield: mm-google-shopping.custom_label_1 Google Shopping / Custom Label 1 custom label 1
Metafield: mm-google-shopping.custom_label_2 Google Shopping / Custom Label 2  custom label 2
Metafield: mm-google-shopping.custom_label_3 Google Shopping / Custom Label 3  custom label 3
Metafield: mm-google-shopping.custom_label_4 Google Shopping / Custom Label 4  custom label 4
Metafield: mm-google-shopping.custom_product Google Shopping / Custom Product  custom product
Metafield: mm-google-shopping.google_product_type Google Shopping / Google Product Category google product category

more info here

Metafield: mm-google-shopping.mpn Google Shopping / MPN mpn

Product’s Manufacturer Part Number. More info here.

Metafield: mm-google-shopping.age_group Google Shopping / Age Group age group

more info here

Metafield: mm-google-shopping.gender Google Shopping / Gender gender

more info here.

Note that other Google Shopping apps might store Google Shopping data in other Metafields – so be sure to Export a sample product to see in which Metafields the data you need to change, is stored.

Good To Know

  • To import several images and variants to Product, just repeat the row with the same ID, Handle or Title (whichever comes first).
  • To repeat rows, you can copy the whole row as it is, and you don’t have to delete contents of Product base rows – that makes copying easier.
  • Shopify exported CSV file, pasted to Excel [Products] Sheet, can be imported with the same columns. You just need to change SEO Description and SEO Title columns to Metafield columns, as shown in the table above.
  • To not update some columns, remove those columns from Excel file. Then the Import will not touch them.
  • If you will have the Column with an empty value, then this field will be changed to empty.
  • To update existing Variant columns, remember to keep the “Variant ID” column.
  • You can have the unlimited count of Metafields.