If you’re moving to Shopify from OSCommerce, Magento, WooCommerce, or another platform with native multi-level categories, you’re about to discover that Shopify doesn’t have categories. It has collections (flat) and menus (hierarchical, but only 3 deep by default). Preserving your category structure and keeping URLs clean takes a specific order of operations.
Why this is hard
OSCommerce and Magento treat each category as its own thing, with a parent and children. Shopify treats a collection as a flat tag-or-rule-based bucket, with hierarchy expressed separately through menus. That mismatch is what makes migration painful.
Step 1 - flatten your category tree on paper
Before you import anything, lay out the full path of every category. Example:
Fasteners > Screws > Machine screws > Stainless steel
Each of those four nodes becomes a Shopify collection. Don’t try to encode hierarchy in collection handles (fasteners-screws-machine-screws-stainless-steel) - keep handles short (stainless-steel-machine-screws) and express hierarchy through the menu only.
Step 2 - batch-import products with category-path tags
This is the step most stores actually do. Batch product import is well-understood; batch collection creation is rarer. Getting the tags right here is what makes the next step painless.
Shopify provides a standard product CSV template you fill in with your old store’s products and upload through Products > Import in the Shopify admin. The columns are documented on Shopify’s help page for using CSV files.
The column that does the heavy lifting downstream is Tags. For each product, set one tag per node in its category path. A product in Fasteners > Screws > Machine screws > Stainless steel gets four tags:
fastenersscrewsmachine-screwsstainless-steel
The file must be UTF-8 and under 15 MB; split into batches if your catalogue is larger. If you’re already running a migration tool such as Cart2Cart or LitExtension, it produces a comparable import for you, but check that it’s setting one tag per category node before you trust the output.
Step 3 - turn tags into collections
With every product tagged from Step 2, smart collections do the work of building the leaves. In Shopify admin, Products > Collections > Create collection > Smart collection, add a single rule *Product tag is equal to
For very large taxonomies (hundreds of leaves), paid tools such as Matrixify create the collections in bulk from a second CSV, so you don’t click through the admin for each one. Either way the rule is the same: one smart collection per tag.
Step 4 - build the menu structure
Once collections exist, recreate the hierarchy in Online Store > Navigation. If your tree is deeper than 3 levels, follow the legacy-nesting guide for the deeper levels.
This short screencast walks through how products, collections and menu items relate in Shopify - the relationship that drives the breadcrumb depth you’ll see at the end:
Step 5 - install Breadcrumbs Uncomplicated
At this point you have the structure, but Shopify themes don’t expose hierarchical breadcrumbs out of the box. Install Breadcrumbs Uncomplicated, add the Category Breadcrumbs block to your Default collection (and optionally Default product) template in the Shopify Theme Editor, then run Refresh Categories so the app reads your menu structure. The trail then appears on every collection and product page.
Step 6 - set up redirects for old URLs
Crucial for SEO. Your old URLs (/category/fasteners/screws/machine-screws/) need to redirect to the new ones (/collections/machine-screws/). Use Shopify’s URL Redirects feature, with a Matrixify import for bulk.
Common gotchas
- Duplicate names: OSCommerce lets you have
Fasteners > ScrewsandHardware > Screws. Shopify hates duplicate collection names - see the multi-collection post. - Long handles: don’t translate the full path into the handle; keep handles short.
- Smart-collection limits: each store has a cap on smart-collection rules; check the current limit before relying on rules for thousands of products.
- Auto-import promises: migration tools claim to preserve categories perfectly. They mostly do, but always plan for a manual cleanup phase afterwards.
Summary
The migration order that works: design the tree on paper, batch-import products with category-path tags, let smart collections turn those tags into the leaves of your taxonomy, recreate the hierarchy in the navigation menu, install the breadcrumb app, set up redirects. Allow a day of manual cleanup at the end - even with the best tools, no migration is fully automatic.
For a step-by-step walkthrough of setting up Categories Uncomplicated on a freshly-migrated store, the 20-minute end-to-end screencast covers everything from collections to menus to the breadcrumb embed: