Before you start: take inventory of what you have
The first step is a complete list of everything that lives in your WooCommerce store today. Not just products: also pages, blog posts, coupons, reviews, customers, orders and, above all, the plugins that add features. Every active plugin is a question you will have to answer on Shopify: is it covered by a native feature, an app or custom development?
Also export the list of URLs that receive traffic. You can pull it from Google Search Console (the pages report), from your analytics tool and from the WordPress sitemap. That list becomes the basis of your redirect map, and it is the most neglected part of any migration.
- Simple and variable products, with their attributes
- Product categories and tags
- Custom fields (ACF or other plugins)
- Customers, orders, coupons and reviews
- Pages, blog posts and their current URLs
- Active plugins and what each one does
WooCommerce categories to Shopify collections
WooCommerce uses hierarchical categories: a category can have subcategories and a product can sit in several of them. Shopify has no collection hierarchy; collections are flat, and the tree structure is built with the navigation menu. Every category or subcategory you want to keep becomes a collection, and the menu recreates the parent and child structure.
Shopify has two types of collection. Manual collections contain the products you pick one by one. Automated collections fill themselves based on conditions such as a tag, product type, vendor or a metafield value. If you assign consistent tags based on your WooCommerce categories during the import, you can create automated collections that maintain themselves as you add new products.
Attributes and variable products to variants
A WooCommerce variable product becomes a product with variants in Shopify. The attributes that generate variations, such as size or color, become product options, and each variation becomes a variant with its own SKU, price, inventory, weight and image.
Check two things before importing. First, Shopify limits the number of options and variants per product, so review the current limits in the Shopify documentation if you have products with many combinations. Second, attributes that only display information in WooCommerce without generating variations (material, composition, country of origin) should not become options: their natural home is metafields.
Custom fields to metafields and metaobjects
If you use ACF or a similar plugin to store extra data on your products, the Shopify equivalent is metafields. You define each metafield in Settings > Custom data, choose its type (text, number, file, product reference, list, etc.) and fill it in on each product, collection, customer or order.
For structured information that repeats across several products, such as a size chart, an ingredient sheet or a manufacturer with a logo and description, use metaobjects. You create the entry once and reference it from every product that needs it. That way you avoid copying the same content a hundred times, and the theme can display it consistently.
Plugins: what replaces them on Shopify
Many WooCommerce plugins exist to cover features Shopify already includes out of the box: payment gateway, shipping rates, discount management, sitemap, basic structured data in the theme or an optimized checkout. Before you look for an equivalent app, check whether the feature is already in the admin.
For anything that is not native, the Shopify App Store covers most cases: reviews, loyalty, subscriptions, advanced filters or integrations with ERP and logistics systems. Anything very specific to your business can be built into the theme with custom code or as a custom app. The fewer apps you install, the lighter and easier to maintain your store will be.
Customers, passwords and orders
Customers are imported with their name, email, phone number, addresses and tags. What you cannot import are passwords: Shopify does not accept passwords from another platform. With Shopify's current customer accounts that is not a problem, because your customers sign in with their email and a one-time code. Even so, plan an email explaining the change so nobody is surprised when their old password no longer applies.
Respect marketing consent as well: only import as subscribed the customers who actually agreed to receive communications. Order history is not imported with the standard Shopify admin CSV; to bring it over you need migration apps or the API. Decide whether you need the full history in Shopify or whether keeping an export for reference and accounting is enough.
SEO: URLs, redirects and content
In WooCommerce the default URLs look like /product/name/ and /product-category/name/. In Shopify the prefixes are fixed: /products/, /collections/, /pages/ and /blogs/. That means practically all your URLs will change, and every old URL with traffic or backlinks needs a 301 redirect to its new equivalent.
Beyond redirects, migrate the SEO titles and meta descriptions of products, collections and pages, keep your image alt text and move blog posts over with their full content. After launch, submit the Shopify sitemap (/sitemap.xml) in Search Console and watch the indexing reports over the following weeks.
Frequently asked questions
Can I import my WooCommerce customers' passwords?
No. Shopify does not allow importing passwords from another platform. Customers are imported with their data, and each one reactivates their account by creating a new password from an invitation.
Will I lose my product reviews when I migrate?
They do not have to be lost. Reviews are not a native feature of the Shopify admin, but most review apps let you import them from a file exported from WooCommerce.
Can I keep my WordPress blog?
Yes. Shopify has native blogs, and posts can be migrated with their content, images and metadata. The URLs will move to /blogs/blog-name/, so they need redirects too.
Do I have to shut down WooCommerce on the same day?
The usual approach is to build and test Shopify in parallel and switch the domain once everything is validated. Keep WordPress available internally for a few weeks in case you need to look something up.
