Start Free Trial
Start Free Trial

How to maximize Shopify bulk import speed?

Shopify import speed|||Shopify import speed - delete unneeded columns|Force not to check if items already exist in Shopify store|Options to ignore ID when copying from another Shopify store

The simplest way to improve speed – upgrade!

If you just want the maximum speed, you can upgrade your plan to Big Plan or even Enterprise Plan.

Big Plan has the 5 threads importing data in parallel.

Enterprise Plan has 10 (or more) threads importing data in parallel.

thread is an independent process that works with a piece of your import/export data. Several threads can work in parallel – each with different items.

That gives a significant boost on the speed.

But there are Shopify API speed limits which can be improved even further – by organizing import data in a way to minimize requests needed to the Shopify API.

Read more about how Shopify API Call Limit works and options to increase it for the  Matrixify app in your store.

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.

Check if items already exist in Shopify

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.

This import option can only be enabled by contacting Matrixify support.

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 the 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.
For the app not to check if items exist in the store when importing, remove the checkbox at “Check if items already exist in Shopify”.

Also, you can speed the import up by not checking if items already exist if you have the “ID” values. But then, if you are updating also Variants, you need to have “Variant ID” and you need to make sure all of the variants of each product are listed in the file. That will allow it to “Push by ID” without checking if such items already exist. If you will not have all the variants listed for some products, in this case, you will end up with just the variants which you had in your import for those products. Be really careful with this kind of import.

Check if items already exist checkbox

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.

Fastest import when copying from another store

When you copy your data to another store, those IDs don’t exist in the new store, so that causes the app to make an additional request to API to find that out. You can improve the speed by checking the “Ignore ID” box in the Import Options. That will tell the app not to try to use those IDs.

Ignore ID checkbox

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.