How to update Product by SKU?

Update Shopify Variants by SKU

Quite often, when getting Product data for updating from suppliers or other data sources, you have just the product SKU, but not the Product ID or Handle to identify it.

That’s ok – now the app can identify your Product by only the SKU number, and do all the same advanced updates and with it.

You can:

  • Update existing Product base fields (like Tags, Published, and so on) by having just the Variant SKU;
  • Update existing Product Variant fields (like Variant Inventory Qty, Variant Price, and so on) by having just the Variant SKU;
  • Update existing Product Metafields by just the Variant SKU;
  • Import Product Images by identifying products by Variant SKU;
  • Delete Variant from the Product by having just the Variant SKU;
  • Delete the Product itself by having just the Variant SKU.

SKU number column is called “Variant SKU” (even if your product doesn’t have variants).

Here are examples of all the mentioned scenarios.

Update existing Product base fields by SKU

For example, to update product Tags for each SKU, import columns like this:

Variant SKU Tags
SKU-1001 Tag1, Tag2, Tag3
SKU-1002 Another Tag1, Tag2, Tag3
SKU-1003 And Another Tag1, Tag2, Tag3

Update existing Product Variant fields by SKU

For example, to update product price and inventory quantity for each SKU, import columns like this:

Variant SKU Variant Inventory Qty Variant Price
SKU-1001 1000 9.99
SKU-1002 2000 19.99
SKU-1003 3000 99.99
4000 109.99

You can add additional columns to this import, to update them all at once.

Notice the empty Variant SKU value – that will update all Variants that don’t have a SKU number.

Update existing Product Metafields by SKU

For example, to update product Tags, inventory quantity, and Metafields, you would import columns like this:

Variant SKU Tags Variant Inventory Qty Metafield: your.metafield_name
SKU-1001 Tag1, Tag2 1000 value1
SKU-1002 Tag1, Tag2 2000 value2
SKU-1003 Tag1, Tag2 3000 value3

If the several SKU will belong to the same product, then the Tags and Metafields for that product will be set only from the first SKU that belongs to that product.

Import Product Images by identifying products by Variant SKU

If you need to add images to Products, but you only have the Variant SKU, you can do import like this:

Variant SKU Image Src Image Position Image Alt Text
SKU-1001 1 Image about first thing
SKU-1001 2 Image about second thing
SKU-1001 3 Image about third thing

All the products that will have this SKU, will get those images imported.

Delete Variant from the Product by SKU

If products have several variants, and you just need to delete specific variants and keep the other variants of those products unchanged, import table like this:

Variant SKU Variant Command

Also notice here the empty Variant SKU value. That will delete all variants that don’t have the SKU number.

Delete Product by SKU

Notice the difference from the previous example where you deleted just one variant from that product – here you will delete the whole product. In this case, even if the Product will have 100 variants, if just one of its SKU will be found, the whole product with all its variants will get deleted:

Variant SKU Command

Typically. you would want to use this method to delete products which have just one variant. But you can see how you can go beyond that, too.

How the import by SKU works?

In Shopify, the SKU is the attribute of the Variant. That means that each Product can have one or many variants, each having its own SKU number.

First, the app will index all SKUs in your import file – grouping rows by SKU value. Then the app will go through your whole store and update all the products/variants which will match the SKUs from your import file. It will not change any other variants or products.

On your store, SKUs don’t have to be unique. The app will update all SKUs that will match SKUs from your import file.

Logically, if you import table of many SKU numbers, then some of SKUs might belong to the same Product. Before making any changes to that product, the app is taking all that into account and is grouping together SKUs that belong to the same product. That will ensure the consistency of data in all product variants and will improve import speed because each product will be updated just once.

Import Results

After the import, in your Import Results file, you will see the additional columns “ID”, “Handle” and “Variant ID” added from your store, so that you see, which products and variants actually were updated.

Good to know

  • If you need to make your SKU numbers unique across your whole store, you can do the full export of Products with their Variants, and create the Pivot Table in Excel, where you put “Variant SKU” as Rows, and count Variant SKU values. Then you can see, which Variant SKUs count is more than 1 – then you can fix those in your store manually, or using the app to do that in bulk.
  • If you need to get the list of Products which have certain SKUs, you can just import the file with one column “Variant SKU”. In the Import Results file you will see all the products, their ID, Handle and Variant ID – which has which of your SKUs from your table. Then you can update their Titles or even Handles.
  • You can add additional columns to this import, to update them all at once. You can combine base columns, Variant columns, and even image columns in the same import.
  • Column order doesn’t matter.
  • You can update Product by knowing the Barcode or Options of Variants, but then you need to have Product ID or Handle too. This is how to do it.

Read more about all the Products columns.


Update Variants by SKU, Barcode, or Options

Update your products by Variant SKU, Variant Barcode or even by Option values, if you don’t have SKUs or Barcodes. It will MERGE Variants in such a smart way that you almost never ever need to use Variant ID to update your variants.

When importing, remember that still you will have to identify the Product as well, by specifying “ID” or “Handle” values.

The import file to update specific variant fields now can look like this:

Update Shopify Variants by SKU, Barcode or Options

You have waited so long, but it’s finally here!!! I hope it was worth the waiting…

How to maximize Shopify bulk import speed?

Shopify import speed

There are different ways how you can gain maximum import speed when loading data to your Shopify store. Some are faster than others.

I will describe two basic import scenarios – one for importing with the goal to create new items, the other – with the goal to update existing items.

“Items” mean Products, Collections, Customers, Discounts, Orders, and so on.

While Shopify CSV file import is also quite fast, the following instructions apply to “Bulk Import Export Update with Excel” Shopify app and its Excel file format for importing and exporting data.

Overall import logic

A bit of background logic, how importing to Shopify happens.

At first, an item is identified by “ID” column value. ID is the Shopify internal identifier for an item. You can’t assign them by yourself – you can only get them out by exporting existing items.

If the ID column value is empty or such ID doesn’t exist – then it tries to find the existing item by “Handle” value. In Discounts case the handle is the “Code” column value; in Customers case that is an “Email”, but for the sake of common terminology – the app will refer to them as “Handle” in all those cases.

If it finds an existing item by ID or by Handle, then it will update that item by changing only fields you provided in the import, and leaves other fields as they were. If it will not find such item, then it will create New.

So if you really want the fastest possible import speed, here’s what you do in each scenario.

Fastest import of New items

Keep the ID column empty, or remove it entirely from the import file.

Then it will not even try to find existing by ID, it will only check if an item with such Handle exists – that is needed to determine if it needs to create New or do the Update of existing.

If your store is relatively small, import speed by Handle will be the same as by ID.

Fastest Update of existing items

First – help the app to identify existing items quickly

Shopify import upadte by ID

Have the ID column with ID values from the export file.

If you have an ID for each item, and if the item with such ID actually exists, then it will be the fastest way to update them – it will do one single “push”, and that’s it.

You don’t have to have an ID – you can have just the Handle. Then it will find by Handle – it will be roughly two times slower, but still ok.

You will have the slowest speed if you have IDs which don’t exist. Because Then it will try to update by ID, which it will not find, then it will need to search by Handle, and then do the update. So it will be three times slower.

So – whenever you can, update by ID, the correct one.

Second – import only fields you need to update

Shopify import speed - delete unneeded columns

When you import your data, whatever item columns you import, all of them be sent to Shopify. So to improve the speed, import only those columns, which you really need to update, and avoid importing columns, which you are sure, are already correct.

The especially big difference is made with uploading images. Every time you import an image, Shopify will re-download that image. That adds at least one second to each item import, which might not seem a big deal, but it accumulates big time – imagine if you are importing several thousands of items. So, if you know you have your images already in place, just remove image columns from the import file.

A similar principle is about “related” details for each item. For example, do you need to update Product Variant data, when you are updating the Product Tags? Probably not. If you need to just update Product Tags, then you just remove all the Variant columns (and rows), and it will not have to touch Variants at all, again, gaining a bit of speed per item. Similarly, if you don’t need to update related Products for Manual Collections (Custom Collections), just remove those columns (and rows) form import file.

The same also with Metafields.


In certain cases, the app will “pre-load” existing items from your store, to make the searching existing items faster. That’s because pre-loading is 250 times faster than identifying items one by one, so you can imagine the impact it has on overall import speed.

If you start the import and it seems like it’s not doing anything, give it a minute or two, because it decided that in total it will be quicker to pre-load your existing items, and then do the update on them.

Don’t check if items already exist

If you are absolutely sure that your import is just creating new items, and they don’t exist in Shopify, you can force the app not to load any of existing items by any of method. Just be aware that if items do exist, then there might be failed imports, errors, duplicates, or any other unexpected updates or errors if those items exist.

To not pre-load any items, remove the checkbox at “Check if items already exist in Shopify”.

Force not to check if items already exist in Shopify store

Note, that usually, you should leave this on, as the default – that is the safest way to import. So remove that checkbox, only if you are absolutely sure, what you are doing.

Which scenario was chosen?

You can see, how the existing item was identified, when you look in the Import Results Excel file (which you can download after the import has finished).

In the “Import Comment” column you will see the following comments (in the order starting from fastest):

UPDATE: Pushed by ID If you see this, it means you did the best job in helping the app to identify the existing item.
UPDATE: Found by ID (pre-loaded) Here the app searched for the existing item by ID in the pre-loaded items list, because it can’t push it, it needs additional data about the item to be able to do the update. You can improve this by removing columns, which you don’t need to update.
UPDATE: Found by ID The same reason as for pre-loaded, just app decided that in this case searching items one by one is faster than pre-loading all existing.
UPDATE: Found by Handle (pre-loaded) Either you don’t have the ID, or the item with such ID doesn’t exist in this store. But it exists with the same Handle (or Code in case of Discounts, or Email in case of Customers). Also, app decided that pre-loading items will be the fastest way to find them.
Found by Handle The same reason as for pre-loaded, just app decided that in this case searching items one by one is faster than pre-loading all existing.
Found by SKU (pre-loaded) For Products, when Product is being identified by Variant SKU – it will always be pre-loaded, because the app will essentially load all the store into memory, to know, which SKU belongs to which Product.
NEW The new item was created – meaning, that it didn’t find any existing item by ID or by Handle.

Summary import speed tips

  • Identify items by correct ID.
  • Remove columns and rows form import file which you don’t need to update.

What to do next?

  1. Review the “How it works?” tutorial.
  2. Install the “Bulk Import Export Update with Excel” app if you haven’t already.
  3. Upgrade to Big Plan or Enterprise Plan to give yourself to enjoy all the other benefits that come with them.

How to import several product images from one row?

So you are in this situation when you have to import several product images, but you hate to copy rows?

Here’s how you import several images per Product as one row – by separating image URLs with ; (semicolon).

Step 1: Prepare Import File With Several Product Images

Prepare your import file, where you have one row per Product, and put all your images in the same “Image Src” column, delimited by ; (semicolon).

For example: ;

To change images for a Product in this way, you need at minimum the following columns in your import file:

  • ID (or Handle)
  • Image Src

Shopify import several product images separated by semicolon

Step 2: Import That Excel File With Images

Import that with Bulk Import Export Update with Excel app.

Shopify Product several images import

Step 3: View Imported Images

Shopify imported several images delimited by semicolon

Good To Know

  1. You can have up to 250 images per Product.
  2. You can add, replace and update images for products the same way.
  3. You can combine both image import methods – have them as several rows, and split by ; (semicolon) in the same cell. As visible in the example image with Product “Jumping Dog”.
  4. Remember to give name for sheet “Products”, so that it knows which sheet contains Products import.
  5. You can update many Product fields at once with the same import file – just put them as additional columns.


Where To Go From Here?

  1. Install the Bulk Import Export Update with Excel app from Shopify AppStore and try bulk update for Free on your own store.
  2. If you want to know more about this app, look the How it works? tutorial and video.
  3. Read the detailed Field Descriptions.
  4. Read other Tutorials.
  5. If you are not sure how to prepare the import file, ask our Support, we will teach you, or do that for you.


How to group products into products with variants

Products into Variants

If you have products without variants which you want to group into fewer products with variants, this is how you do it.

Step 1: Export products to Excel

Export products into Excel spreadsheet and open it to edit.

Shopify group products without variants into fewer products with variants

Step 2: Add data to variant columns

I will use following approach: Will add all products as new, but with variants, and then remove old products, which were without variants. I will do it, because this will save me in case something will go wrong (will add tag “new” for all newly imported products and they can be deleted easily, if imported incorrectly) and it will allow me to save images.

If you delete old products first, then Shopify will delete also attached images, and you will not be able to import them. That’s why you first need to import new Products, and then you are safe to delete the old Products.

So, to prepare the import Excel file I need to update following columns:

  1. Product ID – remove all data, so that it knows to create new Products with this import.
  2. Handle – set new handle for each product. For example, if the handle was: dress-anna-red-s, now I will have only dress-anna. This handle will be set for each variant of Dress Anna product. You can use formulas or play with Excel “split data” features to split your old handle into portions and then combine back as you need.
  3. Title – set appropriate Title (if there was a colour or size, now you can remove this data from the Title). You can also do that with formulas in Excel.
  4. Tags – add some tag for every row, that is absolutely new and use can use later to distinguish newly added products with variants. I used tag “new”.
  5. Variant ID – remove all data, so that it knows that those are new Variants.
  6. Option1 Name – set name for the first Variant option. In my case this is “Color”. Set it only in the first row of the product (no need to copy it for the each Variant.
  7. Option1 Value – set values for the option1. In my case these will be Variant colours: Black, Red, Blue, etc.
  8. Option2 Name – If you have more then 1 option for the Variant, like Colour and Size, set 2nd option Name here. In my case: Size.
  9. Option2 Value – Set sizes, L, M, S, XS.
  10. Variant Image – if your old Products has just one image per Product, copy Image Src column data here – then it will assign that same image to variant image.
  11. Image Src – Keep them as they are, with whatever images you have for your Products.

Shopify group products without variants into fewer products with variants


Step 3: Mark existing Products with tag “old”

Set tag for all existing products, so that you can filter them later. I added tag “old” for all existing products before importing the new ones, as will delete old products after the import:

Shopify group products without variants into fewer products with variants

Step 4: Import updated Excel

Import updated Excel file:

Shopify group products without variants into fewer products with variants

Shopify group products without variants into fewer products with variants

I have old products without variants and new products, but with variants.


Step 5: Delete old products

Now I can delete old products, by filtering them by the tag “old”, and doing “bulk delete” in Shopify Admin.

Or follow this tutorial: How to bulk delete Products.

Shopify group products without variants into fewer products with variants


Good To Know

  1. It is important, that you firstly add new Products with variants and only then delete old Products without variants, to keep all you images.
  2. Set some unique tag for new products to distinguish them from the old ones, in case something will go wrong.
  3. Delete old products only after you are sure that all new Products and imported correctly!
  4. After import is complete, you can download the “Import Results” Excel file, where the last 2 columns (Import Result and Import Comment) will show you the result for each row. This is helpful, when something failed in the import – you will see the failure reason there.


Where To Go From Here?

  1. Install the Bulk Import Export Update with Excel app to your Shopify store.
  2. Read the detailed Column Descriptions of all columns (fields) that you can export and import.
  3. Write us a Review and give some stars along with your story, how it helped.