Moving from WooCommerce to Shopify usually means CSV exports, spreadsheet surgery and a long list of broken links afterwards. We built a WordPress migration into Store transfers to replace all of that with one form. Here is a real run on our test store, with the numbers.
The feature shipped in the WordPress / WooCommerce migration release; setup steps are in the WooCommerce to Shopify migration guide.
The store
Acme Outdoor is our demo WooCommerce shop (WordPress 7.1, WooCommerce 11.1) that we use to test migrations. It is small, but it has the things that usually break:
- 6 products: simple and variable, a product on sale, one out of stock, one draft, one that allows backorders;
- 8 variations: a rain jacket in 2 colors × 3 sizes with its own prices, sale prices, stock and images, and a T-shirt with a custom (non-global) attribute;
- 4 categories, one of them nested (Clothing → Jackets);
- 3 customers with different billing and shipping addresses;
- 4 orders in different statuses - completed, processing with a coupon, pending (guest checkout) and cancelled with a handling fee;
- 4 coupons: percentage with an expiry date and usage limit, fixed cart with a minimum spend, fixed product, free shipping;
- 5 blog posts (one draft) with featured images, images inside the text, Gutenberg blocks and shortcodes, and 7 pages, including a child page.
The migration
- In WordPress: Users → Profile → Application Passwords, create a password named
DataEase. - In Shopify: DataEase → Store transfers → From WordPress / WooCommerce. Enter the site address, username and the password, click Check connection. DataEase found WooCommerce and showed the counts for every data type.
- Keep everything selected and click Start migration.
It took 82 seconds. Every data type finished without errors:
| Data | Migrated | Errors |
|---|---|---|
| Products | 6 (12 variants) | 0 |
| Collections | 4 | 0 |
| Customers | 3 | 0 |
| Orders | 4 | 0 |
| Discount codes | 4 | 0 |
| Blog posts | 5 | 0 |
| Pages | 7 | 0 |
| Redirects | 19 | 0 |
What we checked afterwards
Prices and stock. The red jacket on sale for 149.00 (regular 179.00) became a Shopify variant priced 149.00 with a compare-at price of 179.00. Stock landed in the main location: 12 jackets of each color in size M, 42 mugs, 0 beanies. The tent that allows backorders keeps selling when out of stock.
Order totals match to the cent. All four orders have the same totals as in WooCommerce - 188.75, 239.00 (with the wpit-10off coupon), 87.00 and 16.90 (with the handling fee). Line items are linked to the migrated variants by SKU, and each order is attached to its customer. No emails went out.
Customers stay clean. Each customer has exactly the addresses they had in WooCommerce, with the shipping address as the default - migrating their orders did not add duplicate addresses.
The blog keeps its history. Posts kept their original publish dates (March 2025, November 2025), authors, featured images and categories as tags. Images inside the posts were copied to Shopify Files - the articles no longer depend on the old server. The draft post stayed a draft.
Old links still work. /product/storm-rain-jacket/ redirects to /products/storm-rain-jacket, /product-category/clothing/jackets/ to /collections/jackets, and /shop/ to /collections/all.
Running it a second time
A week of new orders can arrive between a test migration and the domain switch, so we ran the same migration again. Products, collections, customers, posts and pages were updated in place, while the 4 orders, 4 coupons and 19 redirects that already existed were skipped with a note - no duplicates.
What still needs a human
A migration moves data, not design or settings. After it, we still had to pick a theme, set up payments, shipping and taxes, add the pages to the menu, and connect the domain. Product reviews and post comments are not migrated.
Try it yourself: follow the WordPress / WooCommerce migration guide. Moving between two Shopify stores instead? That is Store transfers.