You have a store that already sells: years of indexed content, a catalogue you built carefully, and an order history your support team leans on every day. The useful question is not whether Shopify can hold that catalogue. It can. It is what breaks in transit, and when you find out.
What you call "the migration" is several projects running on different clocks
The data fails on import day, loudly, in a report. The URLs fail slowly, weeks later, inside Search Console. The checkout and tracking layer fails silently, and you find out when you close the month.
The data fails on import day, and that helps
Shopify sets an order worth following: products first, then customers, then historical orders, so each order can connect to its product and its customer. Reverse it and you get orphaned orders and customer records with no purchase history.
The CSV import limits are concrete: fifteen megabytes per file, UTF-8 encoding, and case-sensitive column headers, so one mistyped header stops the import. Changing Option1, Option2 or Option3 values deletes existing variant IDs and creates new ones, which breaks anything downstream that depends on them. Option cleanup happens before you import, not after.
Count your option axes early. The variant limit rose to 2,048 for all merchants in October 2025, but a product still takes three options, and Shopify documents the way around it: a third-party app, or line item properties captured from the theme. Deciding which axis becomes an option, which becomes a metafield and which becomes a separate product is modelling work, not import work.
In customers, two things do not travel: passwords, which are encrypted outside Shopify, and profiles with a duplicate email or phone number, which are skipped so that only the last one lands. Historical orders go in through the API: the orderCreate mutation takes processedAt to date an order in the past — createdAt cannot be set at all — and accepts one discount code per order. Before you run it, switch off staff new-order notifications under Settings > Notifications, or every historical order emails the whole team.
Some things are not migratable data at all, but rebuild work. Shopify states that reviews cannot be exported from WooCommerce and have to be re-imported with a third-party app. Worth knowing before you pick one: Shopify does run first-party reviews — Shop product reviews — and since June 2025 it can also display reviews collected by Judge.me, Loox, Okendo, Stamped.io and Yotpo, if you switch that on in Shop settings. But the eligibility rules exclude reviews uploaded from a CSV, which is exactly how migrated reviews arrive. Coupons, WordPress blog comments and product attributes turned into metafields do not travel either.
Every product also needs a standard taxonomy category, which unlocks category metafields, works as a condition in collections and filters, and sets the rate a product is taxed at when you use Shopify Tax.
The URLs fail slowly: you can only redirect from a URL that is already broken
The mechanism sits in the redirect documentation itself: a redirect works only on a broken URL, one that returns an error. If the path still loads a valid page, the redirect does nothing, and nothing tells you. You also cannot redirect from reserved paths such as /apps, /cart, /orders or /services, nor from fixed Shopify paths such as /products and /collections.
Online Store URL patterns are fixed: /products/handle, /collections/handle and /blogs/blog-handle/article-handle. WooCommerce's default permalink is singular, /product/slug/, so in practice every product URL changes. The ceiling is one hundred thousand redirects on standard plans and twenty million on Plus, imported by CSV under Content > Menus > URL redirects, or with urlRedirectImportCreate.
Shopify's SEO migration guide recommends crawling the old site before you touch anything — once it is switched off you cannot crawl it — then mapping every old URL to its destination and submitting the new sitemap. On impact it publishes two separate things. Its central expectation is that most migrations see declines of 10% or less, with traffic recovering in one to six months. Separately, it gives a worst-case formula for revenue: the share of traffic that comes from SEO, times the share of that traffic which is non-branded, times a factor of 15% to 30%. In Shopify's worked example, a site at 20% organic traffic and 70% non-branded lands on an estimated 2.1% to 4.2% revenue decline. The 15% to 30% is a multiplier inside that formula, not the traffic drop to plan for.
The checkout and tracking layer is the one that changed most
This part of the platform was rebuilt over the last few years, so check the dates before you reuse any procedure. Shopify Scripts stopped executing on 30 June this year; the replacement is Shopify Functions or an app. Additional scripts and checkout.liquid were sunset on the Thank you and Order status pages on 28 August 2025, for every store. Script tags run on a separate clock: they stopped working on the Order status page on 28 August 2025 for Plus and 26 August 2026 for everyone else, while storefront script tags cannot be created or updated from 1 October 2026 and stop being injected on 1 March 2027.
In terms of your actual inventory: every pixel and every checkout tweak your store loads today gets rebuilt as a custom pixel, an app embed block or a Shopify Function. Verify it with a real test order before the DNS cutover: a pixel that does not fire says nothing, and the gap shows up when you close the month.
One detail hits migration tooling directly. The new collection model, in force from API version 2026-07, replaces the single ruleSet with multiple sources, exclusions and sub-collections. Collections using those features are filtered out of query results on older API versions: a tool written against an older version can skip whole collections without reporting an error.
If you sell subscriptions, payment tokens can be migrated on any plan with help from your subscription app's developer; card numbers only on Plus and Enterprise, through Shopify Professional Services.
In Latin America, the gateway and the tax setup belong in the business case
Shopify Payments is available in exactly one country in the region: Mexico. Selling from Colombia, Chile, Peru or Argentina, you keep your local gateway and also pay Shopify's third-party provider fee: 2% on Basic, 1% on Grow, 0.6% on Advanced and 0.2% on Plus. That is a permanent line in the P&L, not a launch cost. On tax, Shopify Tax covers the United States, Canada, the European Union and the United Kingdom, so merchants in the region work with manually configured rates.
DNS gets prepared well ahead
Per the manual connection guide, the A record points to Shopify's IPv4 address, 23.227.38.65 — the final number can vary by region — and the www CNAME to shops.myshopify.com. The TLS certificate can take up to 48 hours to issue, and DNSSEC or a misconfigured CAA record will block it outright, so that clock decides when you can repoint the domain.
Where to start
Without committing to anything: crawl your current site and keep the export, count the option axes your most complex product actually uses, list the scripts your checkout loads, and find out which app your reviews live in. With that in hand, choosing a method gets concrete. Shopify ranks the options from least to most complex: manual copy-paste, CSV, a migration app, hiring a Shopify Partner, or building a custom solution on the API. A small, clean catalogue fits in CSV; one with historical orders and live subscriptions does not, because CSV does not carry orders. Shopify's own Store Migration app is free, but it moves products and customers, not orders, and does not connect Magento or Adobe Commerce.
At Workrol we run these migrations out of Panama. If you want a second read of your inventory, write to info@workrol.com.
Common questions
Do you lose SEO rankings when you migrate to Shopify?
Shopify publishes two separate figures and they are easy to conflate. Its central expectation is that most migrations see declines of 10% or less, with organic traffic recovering in one to six months depending on site size. Separately, it offers a formula for estimating the worst case on revenue: the share of traffic that comes from SEO, times the share of that traffic which is non-branded, times a factor of 15% to 30%. That factor is a multiplier inside the formula, not an expected traffic drop. The guide leans on a redirect map built from a crawl of the old site while it is still live.
Can I keep my current URLs when I move to Shopify?
No. Online Store URL patterns are fixed: /products/handle, /collections/handle and /blogs/blog-handle/article-handle. On top of that, a Shopify redirect only works on a URL that is already broken: if the path still loads a valid page, the redirect does nothing. You also cannot redirect from reserved paths such as /apps, /cart, /carts, /orders, /services or /shop, nor from fixed paths such as /products, /collections and /collections/all.
Do customer passwords migrate to Shopify?
No. Shopify states that passwords cannot be migrated by CSV because they are encrypted outside the platform, and that after importing you need to invite customers to create a new one. It is worth checking which account type you will use as well: Shopify's current customer accounts sign in with a one-time code sent by email rather than a password.
Can historical orders be imported into Shopify?
Yes, but only after products and customers have been imported, in that order, so each order connects to its product and its customer. The GraphQL Admin API's orderCreate mutation accepts a processedAt field that backdates the order, though createdAt cannot be set, and it takes one discount code per order. Before importing, switch off staff new-order notifications, because every imported order triggers an email, and switch them back on afterwards.
