WooCommerce to Shopify: Migrating a Catalogue Without Retyping It

Published 24 October 2026 by WeCalculator

A WooCommerce to Shopify migration often stalls at the same thought: someone will have to retype every product. Titles, descriptions, prices, variants, SKUs, image after image — for a catalogue of any size, that is days of copying, and every retyped field is a chance for a price or SKU to go wrong. It does not have to work that way. The product data already exists in your WooCommerce store, and with a CSV-based approach it can travel across in a structured form instead.

A quick rights note before anything moves

Only migrate products you own or have the right to sell. For most readers of this guide that condition is easy to meet, because the WooCommerce store and the new Shopify store belong to the same business. If any listings in the catalogue use a supplier's descriptions or photos, check that your permission to use them covers the new store as well before those products are included in the move.

How the catalogue-based approach works

Instead of retyping, you extract the products from your existing store's pages — a single product URL for a test, or a collection or category URL for a whole range — and build a CSV in Shopify's own import format. Then the file is reviewed, tested with a small import, and brought into Shopify at Shopify Admin → Products → Import.

The detailed routine is covered in the extractor guide. For an architectural comparison of native exports versus storefront extraction across multiple platforms, see our guide on how to export products to Shopify from WordPress, WooCommerce and other platforms. This article focuses on what comes across cleanly, what needs tidying by hand, and where the honest limits are.

What transfers cleanly

The core of each product travels well. Titles and descriptions come across as the text your customers already read. Variants come across as variants, with their own prices, rather than being flattened into one listing or split into separate products.

Prices travel with the products, including sale pricing: the selling price lands in the price field and the original price is carried by the compare-at price column, so a sale still looks like a sale. SKUs come across too, so your stock records and labels still match after the move. Images are carried by their image addresses, so photography arrives attached to the right products instead of needing to be uploaded one by one.

A worked example: six variants, one product

WooCommerce calls them variable products, and they are where retyping hurts most. Take one variable product with 3 sizes × 2 colours = 6 variants — for example, a shirt in small, medium, and large, each in two colours.

In the Shopify CSV that is 6 variant rows under a single handle, not 6 separate products. The first row carries the product title and main details, and each of the six rows carries its own size, colour, price, and SKU where they differ. Shopify reads the shared handle, builds one product page, and gives the customer size and colour choices on that page — exactly the structure the WooCommerce product had.

If you see six separate products after an import instead, the rows did not share one handle correctly, and that is a file problem to fix and re-test, not a reason to edit six listings by hand.

What needs manual cleanup

Some parts of a catalogue do not map automatically onto Shopify's organisation. Plan a little hand work here.

Titles may need attention. Duplicate or near-identical titles, which WooCommerce tolerated because products sat in different categories, can confuse customers when they land side by side in Shopify. Renaming the genuine clashes in the CSV is far easier before import than after.

Categories need mapping to Shopify collections by hand. WooCommerce categories and Shopify collections are similar ideas with different mechanics, and the sensible grouping for your new store is a decision, not a data field. Decide your collections first, then assign products deliberately.

Old product URLs need redirects to the new Shopify URLs. Your WooCommerce product addresses will not match your Shopify addresses, and any links from search engines, emails, or other sites pointing at the old addresses will break without redirects. Make a list pairing each important old URL with its new one and set the redirects up as part of the launch, not as an afterthought.

Tags also need a look. They rarely line up one-to-one between the two platforms, so expect to tidy them after the move.

Honest limits of automated extraction

No tool reads every store perfectly. Some stores block automated tools, and some hide product data behind scripts, so prices or variants may not be visible to an extractor at all. Themes that load options dynamically can also produce incomplete variant lists.

When that happens, a per-product error is better than invented data. A tool that says a product could not be extracted is telling you that product needs manual handling. A tool that quietly guessed a price would create wrong listings you might not notice until a customer does. Extract in small batches and compare a sample against the live pages.

A sensible order of work

Migrate one category first, as a pilot. Review its CSV, run a two-product test import, then the rest of that category, and check the live Shopify pages against the old ones. Then repeat category by category. Keep the WooCommerce store running until the Shopify catalogue is checked, and only set up the final redirects once you trust the new listings.

Frequently asked questions

Will my sale prices survive the move?

Yes, when they are extracted properly. The selling price goes into the price field and the original price into the compare-at column, so the product still displays as a sale in Shopify.

Do I need to re-upload all my product images?

Generally no. Images are carried by their image addresses in the CSV, and Shopify fetches them during import. Always open a few imported products to confirm the images arrived correctly.

They will not work on Shopify by themselves, because the URL structure differs. Set up redirects from the important old product URLs to the new Shopify URLs as part of your launch.

Move your first category the structured way

Retyping is optional. Extract one category from your WooCommerce store with the Shopify Product Extractor, review the CSV, and test the import with two products. Once that first category lands cleanly, the rest of the catalogue is the same routine repeated.