How to Move WooCommerce Products, Customers and Orders to Shopify

When a store owner says "I am worried about the migration", they almost always mean the data. Will every product come across? What about the variants? Will customers be able to log in? Will my order history survive? This article answers those one at a time. It is part of our complete WordPress to Shopify migration guide.

The idea: export, clean, import, count

Every data move follows the same four steps. You export from WooCommerce, clean the file, import into Shopify, then count the results against the original. The counting is what turns "it looks fine" into "it is fine".

Product, customer and order counts matching between a WooCommerce store and a Shopify store
Example data only: counts on both sides lining up once the import is finished.

Products and variants

WooCommerce can export products to a CSV file. Shopify can import a CSV in its own format, so the real work is mapping one set of columns to the other.

What to check before importing

  • SKUs: make sure they are unique. Duplicates cause products to merge or fail.
  • Variants: WooCommerce stores attributes such as size and colour differently from Shopify options. Each product needs its options laid out clearly, and Shopify limits how many options and variants a product can have, so check the current limits on very large catalogues.
  • Images: Shopify fetches images from a public URL during import, so the old site must stay online until the import has finished.
  • Descriptions: shortcodes and page-builder blocks leave stray text behind. Strip them before importing.
  • Categories: WooCommerce categories become Shopify collections, which you can set up as manual or automatic.

Import ten products first. Open each one, check the variants and the images, then run the rest.

How the main fields map

The column names differ, but most product data has a direct home in Shopify. This is the mapping we start from on every store:

WooCommerceShopifyWatch out for
Product nameTitleVery long names get cut off in some themes
SlugHandleKeep it identical so redirects stay simple
DescriptionBody (HTML)Strip shortcodes and builder markup
Attributes used for variationsOption names and valuesSame order on every product
Variation SKU, price, stockVariant SKU, price, inventoryOne row per variant
Sale pricePrice, with the old price as compare-at priceScheduled sales need recreating
CategoriesCollectionsDecide manual or automatic first
TagsTagsClean up near-duplicates
WeightVariant weightShipping rates depend on it

A worked example: one shirt, nine variants

Say you sell a shirt in three sizes and three colours. In WooCommerce that is one variable product with two attributes and nine variations. In the Shopify import file it becomes nine rows that share the same handle. The first row carries the title, description and images, and every row carries its own size, colour, SKU, price and stock. If one variation in WooCommerce had a typo such as "Meduim", Shopify treats it as a fourth size, which is why the clean-up step matters more than the import itself.

Preparing the export so the import goes smoothly

A few minutes of preparation in WooCommerce saves hours in Shopify:

  • Remove drafts and test products you never want to see again.
  • Fix attribute names so every product uses the same spelling for sizes and colours.
  • Check images are the originals, not tiny thumbnails, so product pages look sharp.
  • Note your product URLs before anything changes. You need that list to build redirects later.
  • Freeze big edits for the last few days before the switch, or keep a log of changes so they can be carried across.

Product SEO titles and meta descriptions from your SEO plugin can come across too. They live in separate fields in the export, and Shopify has matching fields for each product, so pages that already rank keep their search snippet.

Customers

Customer records import from a CSV too: name, email, address, phone, and whether they agreed to marketing emails. Two rules matter here.

  • Passwords do not transfer. They cannot be moved between platforms. Customers get an email invitation to activate their new account and choose a password.
  • Marketing consent must be respected. Only mark customers as subscribed if they agreed to it before. Do not change that during the move.

Orders and order history

Past orders are not required for the store to work, but they make your reports, customer histories and returns much easier to deal with. Orders are usually moved through an import app or a script, because Shopify does not take a simple order CSV the way it does for products.

Imported orders appear as historical records. They do not charge cards, send shipping emails or reduce stock again, which is exactly what you want from a record of something that already happened.

Reviews, coupons and other data

  • Reviews: exported from your review plugin and imported into a Shopify reviews app that supports it.
  • Discount codes: recreate active ones in Shopify. Expired codes are not worth carrying across.
  • Gift cards and store credit: need a decision on how to honour them, so raise this early.
  • Subscriptions: these depend on the plugin and the payment gateway, and often need their own plan.

Check the numbers before you switch

Once the import is done, compare the two stores side by side:

  • Total product count, then a sample of ten products opened by hand.
  • Total customer count and a sample of ten records.
  • Order count and total order value for a chosen month.
  • Stock levels on your five top-selling lines.

If a number is off, find out why before moving on. A small mismatch now is a lot cheaper than finding out from a customer later. When the data is right, the next job is the URLs, which we cover in WooCommerce to Shopify SEO and redirects.

Doing it yourself or having it done

For a small catalogue, the CSV route is manageable if you are patient and tidy. For hundreds of products, customised variants or years of order history, it is safer to hand the job over. Our WordPress to Shopify migration service handles the data move along with the theme and redirects, and a custom Shopify theme is available if you want the design rebuilt from scratch.

Frequently asked questions

Will all my product variants come across?

Yes, once they are mapped to Shopify options. Very large variant sets should be checked against Shopify's current limits before import.

Do customers need to re-register?

They keep their customer record, but they must set a new password through an emailed invitation, because passwords cannot be transferred.

Are old orders required?

No, but importing them keeps your history and reports intact. They are saved as records and do not trigger charges or emails.

How long does the import take?

The import itself can run in minutes to hours. Most of the time goes into cleaning the data beforehand and checking it afterwards.

What if something fails halfway?

Imports can be re-run in batches. That is why a ten-product test comes first, so errors show up while the cost of fixing them is small.

Can I keep my product URLs the same?

Partly. The product handle can match your old WooCommerce slug, but Shopify always puts products under /products/, so the full address changes. A 301 redirect from each old URL to its new one keeps customers and search engines landing on the right page, and it is part of every migration we run.