P
Portaim

Map Supplier Categories to Shopify's Product Taxonomy

Supplier category labels and paths are matched to Shopify's product taxonomy and land as real Product Category values, not tags, with one review per value.

Free plan available · No credit card required · Shopify connection optional

The problem with supplier category data

Shopify classifies products with its Standard Product Taxonomy, a fixed tree of categories shared by every store. In a product CSV import, the Product Category column takes one of those entries and nothing else. A product can have only one, and a value Shopify does not recognise is not a category.

Supplier files carry category data in every shape except that one:

Supplier column Example value Why it is a problem
Category pathHome > Lighting > Table LampsLooks like a taxonomy path but is not one; Shopify’s entry is Home & Garden > Lighting > Lamps > Table Lamps
CategoryTable LampsA leaf name with no path; a supplier label rarely matches an entry word for word
Category 1 / Category 2 / Category 3Home / Lighting / LampsOne level per column; Shopify wants the whole path in one cell
DepartmentLighting & BulbsStore-specific naming that has to be resolved to a shared taxonomy entry
Group codeLGT-04A supplier code means nothing to Shopify’s taxonomy
TypeLampProduct type is free text; it is a different Shopify field, not the category

Getting categories right by hand means:

  • searching Shopify’s taxonomy for the closest entry to each supplier label, one label at a time;
  • rewriting every path in Shopify’s exact spelling, down to the ampersands;
  • joining level columns into one path, or trimming a path that goes one level deeper than the taxonomy does;
  • keeping Product Category apart from Type and Tags;
  • doing it again when the next catalog arrives.

The usual shortcut is to give up and import the category column as tags. The products then have no category at all, and the tree is flattened into keyword noise.

How Portaim helps

1. Upload your supplier file

Upload a CSV, XLSX or XLS file, or paste a Google Drive, Google Sheets, Dropbox or plain file link. For a workbook with several sheets you pick the sheet and the header row, so Portaim knows where the product data starts.

2. Map the category column to Product Category

Portaim suggests a mapping from each supplier column to the Shopify product CSV fields. A category column goes to Product Category. A column whose values are paths written with > is recognised as category data by its values, not only by its header, and is kept out of Tags, Type and the variant option fields. The whole path is kept as the value; nothing is trimmed at this stage.

Portaim's mapping preview with a supplier Category column mapped directly to Product Category, showing path values such as Apparel > Sweaters and Footwear > Sneakers on each product row

When the levels come as separate numbered columns, Portaim proposes to combine them into one path with Shopify’s > separator:

Category 1 · 2 · 3
Home
Lighting
Lamps
joined with >
Product Category
Home > Lighting > Lamps

Every suggestion is shown against a preview of your first rows before you confirm, and you can change any of it. The mapping step only decides which column feeds the field. Whether each value is a real taxonomy entry is settled in the next step.

3. Review the category values in the fix step

Portaim validates every category value against the current version of Shopify’s taxonomy. A value that is already a valid path or ID passes. Every other value is flagged as an invalid category and listed once, with the rows that use it underneath, so a file with 2,000 products and 40 distinct category labels gives you 40 things to look at, not 2,000. Next to each value Portaim shows the nearest taxonomy entry it found as a recommendation. Accept it, accept all recommendations at once, search the taxonomy with autocomplete for a different entry, set all values to one entry, or leave the category empty. One choice applies to every row with that value.

Portaim's fix step listing invalid Product Category values fed from a supplier Type column, each with the rows that use it and a recommended Shopify taxonomy entry such as Electronics > Audio and Furniture > Office Furniture > Desks, plus a search box for choosing a different entry

Invalid categories are errors, so the export waits until each value is resolved, cleared, or set to empty. That is deliberate: an unrecognised value would not become a category in Shopify anyway, and it is quicker to decide here, once per value, than to find out after the import.

How category matching works

Every entry in Shopify’s Standard Product Taxonomy has a full path and a short ID. Portaim accepts either form for Product Category, and ignores letter case:

  • the full path, such as Home & Garden > Lighting > Lamps;
  • the category ID, such as hg-13-5.

For a value that is neither, the recommendation comes from a text comparison, in stages:

  • Separators are unified. >>, /, |, arrows and dashes are all read as level separators, so Lighting / Lamps is compared as a two-level path.
  • The last segment counts most. Each taxonomy entry is scored on how many words it shares with your value, with the last segment weighted more than the rest of the path. A label like Table Lamps therefore finds Home & Garden > Lighting > Lamps > Table Lamps without an exact string match.
  • Paths that go too deep walk up a level. If the last segment has no counterpart, Portaim drops it and scores the parent path, and returns the deepest level that matches with confidence. A supplier’s Bedside Lamps under Lighting > Lamps resolves to Shopify’s Lamps entry rather than to nothing.
  • No confident match, no recommendation. A value like Bags could sit in several branches of the taxonomy, so Portaim leaves the choice to you and offers the search box instead of guessing.
Supplier value
Home > Lighting > Table Lamps
last segment matched
Recommended
Home & Garden > Lighting > Lamps > Table Lamps
Supplier value
Lighting / Lamps / Bedside Lamps
one level up
Recommended
Home & Garden > Lighting > Lamps

The recommendation is never applied for you. A text match can be wrong in ways only you can see, so it stays a suggestion until you accept it, per value or for the whole group. What you accept is stored as the full taxonomy path.

Product Category vs Type vs Tags

A common import mistake is to collapse three different Shopify fields into one. They are not interchangeable:

Shopify field What it is Example
Product CategoryOne entry from Shopify’s taxonomy; used by Shopify for tax and searchHome & Garden > Lighting > Lamps
TypeFree-text product type you defineTable Lamp
TagsFree-text keywords for filtering and automated collectionsbedside, dimmable

Portaim maps the three separately. A category path goes to Product Category, not into Tags, and a supplier’s own type label goes to Type. The two are also treated differently when data is missing: an empty Type can be generated with AI in the fix step from the rest of the row, because it is free text. A category is never invented, because it has to be an entry from the taxonomy.

Files that come from another platform tend to have the opposite need. A WooCommerce export has its own category tree, which Portaim converts into Type and Tags; mapping the converted type column to Product Category as well then puts it through the same matching described above. See the WooCommerce to Shopify migration guide.

Export to Shopify or download a Shopify-ready CSV

After the categories are settled, you choose how to export:

  • Direct Shopify export — connect your store and Portaim sends each product through the Shopify API with the category as a taxonomy ID. Portaim validates against the current taxonomy Shopify publishes, and a store can be a version behind. If your store rejects an entry it does not have yet, Portaim retries with the parent category, then the grandparent, and uses the first one the store accepts. The product is imported either way, with a note on the export telling you which category was used, or that none was.
  • CSV download — download a Shopify-formatted CSV with the full taxonomy path in the Product Category column, and import it in Shopify admin.

Connecting your Shopify store is optional. You can map and match categories end to end without connecting one, download the clean CSV, check it, and import it on your own schedule.

Portaim export options showing direct Shopify export to a connected store and a Shopify-ready CSV download

Built for repeat supplier imports

The same supplier sends the same category labels in its next catalog. Once you have confirmed a mapping, Portaim saves it against the file’s set of column headers, and the next file with the same headers is mapped the same way automatically, including where the category column goes and how level columns are combined. Column order does not matter, and there is no template to name or pick.

Category values are checked again on every import, so a new label the supplier introduces shows up in the fix step as one new item to decide, next to its recommendation.

When this page is for you

Portaim is a good fit if you:

  • import supplier files with free-text or hierarchical category data;
  • want products to land in Shopify’s Product Category, not only in tags;
  • have paths like Home > Lighting > Lamps, or level columns, that need resolving to taxonomy entries;
  • reimport the same supplier’s catalog and do not want to redo the category work.

Portaim may not be the right fit if:

  • your supplier file has no category data and you assign categories in Shopify by hand;
  • your supplier already provides valid Shopify taxonomy paths or IDs, in which case the values pass straight through and this page is not the interesting part;
  • you need a full ERP or PIM with its own category management;
  • you want a custom one-off migration project rather than a self-service import tool.

Why not write the category paths into the CSV yourself?

You can type category values into a Shopify product CSV by hand. The catch is that Product Category only accepts an exact taxonomy entry, and a supplier’s own label or path is almost never one. The work is a lookup per distinct label against a taxonomy of more than ten thousand entries, and a spelling that has to be exact.

Portaim sits between the supplier file and Shopify:

Supplier category text → Portaim mapping + taxonomy matching + per-value review → Shopify Product Category

The goal is not to replace Shopify’s import. The goal is to turn supplier category data into real taxonomy entries with one decision per distinct value, keep the category tree out of the tags, and not repeat the work every month.

For the full mapping-and-validation flow around this step, see the supplier CSV to Shopify guide or the Portaim docs.

Frequently asked questions

My supplier uses category paths like "Home > Lighting > Lamps". Can Portaim map those?

Yes. A column of category paths is mapped to Shopify's Product Category field, not to Tags or Type. A path that is already an entry in Shopify's taxonomy passes validation as it is. One that is not, such as "Home > Lighting > Lamps" against Shopify's "Home & Garden > Lighting > Lamps", is flagged in the fix step next to the nearest taxonomy entry, and one click applies it to every row with that value.

What format does Shopify's Product Category field expect?

An entry from Shopify's Standard Product Taxonomy, written either as the full path, such as "Home & Garden > Lighting > Lamps", or as the category ID, such as "hg-13-5". Portaim accepts both, ignoring letter case, and checks each value against the taxonomy before export.

What happens when a supplier category does not match Shopify's taxonomy exactly?

It is flagged as an invalid category in the fix step, grouped with every row that uses the same value. Portaim compares the words in your value with each taxonomy entry, weighting the last segment most, and shows the closest entry as a recommendation you can accept per value or for all values at once. If nothing is close enough, there is no recommendation and you search the taxonomy with autocomplete instead. You can also leave the category empty.

Is the product category the same as the product type?

No. Product Category is an entry from Shopify's fixed taxonomy and is used by Shopify for tax and search. Type is free text you define, and Tags are keywords. Shopify itself says to put a category that has no taxonomy match under Product Type. Portaim maps the three fields separately, so a category path does not become a tag.

Do I have to set a product category?

No. The field is optional and an empty value passes validation. If you do map a category column, each invalid value is an error, and the export waits until every one is fixed, cleared, or set to empty.

What if my store's taxonomy is older than the category Portaim matched?

On a direct export, Portaim sends the category as a taxonomy ID. If your store rejects it because its taxonomy version does not include that entry yet, Portaim retries with the parent category, then the grandparent, and uses the first one your store accepts. The product is imported either way, with a note telling you which category was used. Stores pick up new taxonomy versions automatically over time.

Can I create my own categories in Shopify?

No. Shopify's Product Category only takes entries from its Standard Product Taxonomy. Your own category tree belongs in Type, Tags and collections. Portaim can fill Type from a supplier column or generate it with AI in the fix step when it is missing, and a WooCommerce export's categories are converted to Type and Tags automatically.

Put your products in real Shopify categories

Upload the supplier file as it is. Portaim maps the category column, matches each value to Shopify's taxonomy and lets you settle the odd one in a click, then exports with the category on the product.