Skip to main content

How imports find existing Shopify products

Learn which columns Altera uses to match spreadsheet rows to products in your store, and how to control the match.

Every row in a products import either updates a product that's already in your store or creates a new one. Which of the two happens depends on whether Altera can find a matching product, and that depends on the identifier columns in your file.

This article explains which columns Altera checks, in which order, and how to choose the identifier yourself. Altera reads spreadsheets in the Altera/Matrixify format, so files you exported from Matrixify are matched with the same columns.

Quick answer

Find the row that describes your file. The right column shows what Altera uses to find the product.

Your file has

Altera finds the product by

A column that ends in [ID]

That column only

ID, Handle, or Title

ID, then Handle, then Title

No product columns, but Variant ID or Variant SKU

Variant ID, then Variant SKU

Only Variant Barcode

Variant Barcode

The rest of this article explains each case.

When your file has product columns

If your file has an ID, Handle, or Title column, Altera uses only these columns to find the product. Variant columns such as Variant SKU don't take part in the product match, even when they're filled in.

Altera checks the columns in this order and stops at the first match:

  1. ID - Shopify's product ID, for example 9104527311125. An ID never changes, so it's the safest identifier. It's also the only identifier that lets you change a product's handle, because the handle in the row is then a new value, not a lookup key.

  2. Handle - for example linen-apron-sage. Altera uses the handle when the ID cell is blank or when no product has that ID. Handles are unique in a Shopify store, so a handle matches at most one product.

  3. Title - for example Linen Apron - Sage. Altera uses the title only when the row has no handle. If two products in your store have the same title, the row fails with PRD004, because Altera can't tell which product you mean.

Example: this file updates the price of two aprons. The first row is found by its ID. The second row has no ID, so Altera finds it by its handle.

ID

Handle

Variant Price

9104527311125

linen-apron-sage

34.00

linen-apron-indigo

34.00

Note: Once Altera has found the product, it matches each row to a variant of that product. To learn how, see Variant matching within products.

When your file has only variant columns

Files from suppliers, warehouses, and point-of-sale systems often have no product columns at all, only a SKU or a barcode per row. In that case Altera finds the variant first and then updates the product that the variant belongs to.

Altera checks the columns in this order:

  1. Variant ID - Shopify's variant ID, for example 47285563104277.

  2. Variant SKU - for example APR-LIN-SG. The SKU must match exactly. A row with APR-LIN doesn't match a variant with the SKU APR-LIN-SG.

  3. Variant Barcode - for example 0614141007349. Altera uses the barcode only when your file has neither a Variant ID nor a Variant SKU column. If one of those columns is in the file, Altera doesn't match by barcode, even in rows where the SKU cell is blank.

SKUs and barcodes don't have to be unique in Shopify. If the same SKU or barcode is on variants of more than one product, the row fails with IMP006 and nothing is changed. To update these products, use the ID or Handle column, or make the SKUs unique in your store first.

Example: this stock file has only SKUs. Altera finds each variant by its SKU and updates its inventory.

Variant SKU

Inventory Available: Main Warehouse

APR-LIN-SG

42

APR-LIN-IN

17

Choose the identifier yourself with [ID]

Sometimes your file has product columns, but you want Altera to match by a variant column. For example, a supplier feed can include Title and Variant SKU. Without help, Altera matches that file by Title, and a title that's spelled differently from the one in your store creates a new product.

To tell Altera which column to use, add [ID] to the end of the column name. These columns are supported:

  • ID [ID]

  • Variant ID [ID]

  • Variant SKU [ID]

  • Variant Barcode [ID]

With an [ID] column, Altera matches only by that column:

  • Other identifier columns are normal data. A Title or Handle column in the same file updates the product's title or handle. It isn't used to find the product.

  • There's no fallback. If no product matches the value in the [ID] column, Altera doesn't try ID, Handle, or Title instead.

  • Rows with a blank [ID] cell are skipped, because there's nothing to match them by.

  • Rows that match the same product are combined, so you can have one row per variant in any order.

Example: this supplier feed renames products and changes prices, and the SKU decides which product each row updates.

Variant SKU [ID]

Title

Variant Price

APR-LIN-SG

Linen Apron, Sage Green

36.00

APR-LIN-IN

Linen Apron, Indigo

36.00

Faster updates on large stores

An [ID] column also makes large imports faster. Altera first loads an index of all the products and variants in your store, and then matches every row against that index instead of searching Shopify row by row. The job page shows how many variants are loaded while the index is built. For more ways to speed up an import, see How to speed up Shopify imports.

What happens when nothing matches

When Altera can't find a product for a row, the Command column decides what happens next:

Command

When no product matches

MERGE

Creates a new product. The row needs a title for this.

UPDATE

Skips the row and reports IMP002.

NEW

Creates a new product. If a product already matches, the row is skipped with IMP001.

REPLACE

Creates a new product.

DELETE

Skips the row and reports IMP003.

If you only want to change products that already exist, set the Command to UPDATE. A wrong handle or SKU then shows up as a skipped row in the results, not as a duplicate product in your store. For all values, see Command.

Common problems and fixes

The import created duplicate products. The identifier in your file didn't match the product in your store, and the command was MERGE. This often happens when a file has a Title column and the titles are different from those in your store, or when a handle was changed in Shopify after the export. Delete the duplicates, then import again with an ID column or a Variant SKU [ID] column, and set the Command to UPDATE.

A row fails with "More than one product matches". The SKU or barcode in the row is on more than one product (IMP006). Export these products, find the duplicate SKUs, and either make them unique or identify the rows by ID or Handle.

A row fails with "Multiple products with title". Two products in your store have the same title (PRD004). Add a Handle or ID column to the file.

Product IDs don't match after you edit the file in Excel. Excel can show long numbers as 9.10453E+12, and saving the file in that form changes the ID. Altera can't use such a value, so it tries the handle instead. Format the ID column as text before you save, or upload the file as .xlsx.

Related articles

Did this answer your question?