Shopify migration services
Replatform to Shopify without losing the traffic you already earned
Magento, WooCommerce, BigCommerce, Wix, Squarespace and custom builds, moved onto Shopify with the redirect map finished before the theme is. We work out of Toronto with DTC and B2B merchants across Canada and the US.
What we migrate from
What follows describes what each move involves technically: what exports cleanly, what has to be rebuilt rather than converted, and where the URLs change.
Magento and Adobe Commerce
Magento lets you design your own URL paths, usually nested category folders with a .html suffix. Shopify does not. Products always sit under /products/ and collections under /collections/, and those prefixes cannot be removed, so every Magento URL that earns traffic needs a mapped 301. The other reshaping job is the catalogue: Magento configurable products can carry as many attributes as you like, while Shopify caps a product at three options (spread across up to 2,048 variants since October 2025). Products with four or more axes have to be split, combined, or rebuilt with metafields.
Magento and Adobe Commerce: the full guideWooCommerce and WordPress
The store data is the easy half. The hard half is the WordPress site wrapped around it: /product-category/ archives, custom post types, page builder markup, and plugin logic with no Shopify equivalent. Blog content moves under /blogs/, which changes every article URL, so on content-heavy Woo sites the editorial redirect map is often longer than the product one. Anything a plugin was doing at checkout has to be rebuilt as a Shopify app, a Function, or dropped on purpose.
WooCommerce and WordPress: the full guideBigCommerce
The closest structural match on this list. Catalogue exports come out clean and the gaps are narrow: option sets and modifiers do not map one to one onto Shopify variants, and BigCommerce category URLs nest where Shopify collections stay flat. Stencil templates get rebuilt in Liquid rather than converted, which is a rewrite, not a port. Budget accordingly.
BigCommerce: the full guideWix
Wix is a closed system, so the export is the constraint rather than the theme. The built-in product export leaves digital products behind entirely and skips listings above 100 variants, which means part of the catalogue has to come out through the API or by hand. Nothing in a Wix template transfers, so the design is rebuilt. For most Wix merchants that is the point of moving.
Squarespace
Squarespace exports up to 10,000 products to CSV, but only physical and service products, and only three variant options each. Digital products do not come out. The upside is that Squarespace URLs tend to be shallow and readable, so the redirect map is small and quick to verify, and most of the project is design, checkout and app work rather than data archaeology.
Salesforce Commerce Cloud
Nothing lifts and shifts. SFRA cartridges, price books and the integration layer around them all get rebuilt, and B2B behaviour that lived in custom code moves onto Shopify company profiles, catalogues and payment terms, which are Plus features. This is the longest migration type on the list and the one where discovery earns its keep, because an SFCC build of any age contains pricing and entitlement rules nobody currently at the company wrote.
Custom and headless builds
A bespoke stack has no export button, so extraction starts at the database or an internal API. That is usually good news. The data is yours in full, including order and customer history that hosted platforms hand over in reduced form. The work moves to reconciling data models: whatever the old build called a bundle, a subscription or a price rule has to become something Shopify actually has, or an app, or a Function.
How a migration runs
- 01
Discovery and data audit
We crawl the current store, pull the full catalogue export, and read the theme and integration code before quoting a number. The goal is to surface everything without a Shopify equivalent while it is still a scoping decision instead of a launch-week emergency. Subscriptions, bundles, tiered B2B pricing and tax edge cases are where projects go wrong, and they are all visible in week one if somebody looks.
DeliverableScope document naming every entity to migrate, every integration, and every known gap with the decision made on it.
- 02
URL map and redirect plan
Every URL with traffic, backlinks or internal links gets a destination before anything is built. Shopify has rules here that catch teams out late: a redirect can only be created from a URL that returns 404, reserved paths such as /cart, /orders and /collections/all cannot be redirected at all, and the redirect ceiling is 100,000 on standard plans against 20 million on Plus. The map is built against those constraints rather than patched afterwards.
DeliverableRedirect CSV checked against Search Console and backlink data, formatted for bulk import into Online Store > Navigation > URL Redirects.
- 03
Data extraction and transformation
Products, variants, images, collections, customers, order history, blog content and metafields come across in staged batches, each one reconciled by row count. Transformation is where the judgement sits. Attribute sets become options or metafields, category trees become collections plus tags, and anything that cannot survive the move gets flagged in writing rather than quietly dropped.
DeliverableStaged import files plus a reconciliation sheet: rows out of the old system, rows into Shopify, and every deliberate exclusion named.
- 04
Theme build on a development store
Build happens on a password-protected development store while the current site keeps trading. Templates are written in Liquid with sections, blocks and metafields so your team can edit merchandising without a developer afterwards. If you are keeping the existing design, we rebuild it rather than screenshot it, because a converted theme carries the old platform assumptions into the new one.
DeliverableDevelopment store with the full template set, populated with real migrated data.
- 05
Apps, checkout logic and integrations
Every app on the old store has to earn a place on the new one, and the audit is where the list gets shorter: two apps doing the same job, an app installed for a campaign that ended, an app doing what a metafield and a section can do natively on Shopify. Checkout is the part that has changed most: checkout.liquid is retired, and Shopify Scripts stopped executing on 30 June 2026, so discount, shipping and payment logic now lives in Shopify Functions and, on Plus, checkout UI extensions. If your current store still runs Scripts or additional scripts, that logic is a rewrite and needs its own line in the estimate.
DeliverableIntegration matrix: app kept, app replaced, app cut, and the named Function or extension that replaces each piece of custom checkout logic.
- 06
QA on staging
Test orders through every payment method in test mode, tax and shipping rates against real destination addresses, notification emails, ERP and 3PL handoffs, then accessibility and Core Web Vitals on the templates that carry traffic. We also crawl the development store and diff it against the crawl of the old site, which is how missing redirects get caught before customers find them.
DeliverableQA checklist signed off across orders, taxes, shipping, emails, integrations and accessibility, with the crawl diff attached.
- 07
Cutover
DNS change, redirect import, robots.txt.liquid in place, sitemap submitted, analytics and pixels verified against live traffic rather than assumed. Cutover runs at a low-traffic hour with the old store kept up and reachable, so rollback is a DNS change and not a rebuild.
DeliverableLaunch runbook with a rollback path and a named owner for every step.
- 08
The first thirty days
A migration is not finished at launch, it is finished when the crawl settles. We watch 404 logs, Search Console coverage and rankings for the URLs that mattered before the move, and fix redirect misses as they surface. Customer account activation emails go out 24 to 48 hours after cutover rather than on launch day, so support is not answering password questions during the busiest hours of the project.
DeliverableDay 30 report: 404 log, index coverage, and ranking movement measured against the pre-migration baseline captured in step 1.
What is in scope, and what is not
Included
Full URL inventory and redirect map
Built from a crawl of the live site plus Search Console and backlink data, not from the sitemap alone. The long tail is where migrations lose traffic, so the long tail gets mapped.
Catalogue, customer and order history migration
Products, variants, images, collections, customers, blog content and historical orders, reconciled by row count at every stage.
Theme built in Liquid
Sections, blocks and metafields set up so merchandising changes do not need a developer. Responsive down to 375px, keyboard accessible, tested against Core Web Vitals.
How we buildCheckout logic rebuilt on current Shopify APIs
Discount, shipping and payment customisations move to Shopify Functions, with checkout UI extensions where the store is on Plus. Legacy Scripts and additional scripts are replaced, not carried over, because they no longer run.
Integration rebuild for an agreed list
Payment gateway, ERP, 3PL, email platform, reviews, analytics. The list is fixed in the scope document at step 1, and anything added later is quoted separately rather than absorbed silently.
Technical SEO carried across
Titles, meta descriptions, structured data, canonical handling, robots.txt.liquid, sitemap submission, and internal links pointed at clean /products/ URLs rather than collection-scoped duplicates.
Site structure workQA, cutover and rollback plan
Test orders on real payment methods, a crawl diff against the old site, and a launch runbook where every step has an owner and a way back.
Thirty days of post-launch monitoring
Redirect misses, crawl errors and ranking movement tracked and fixed, with a written report once the crawl settles. Post-launch support runs on the three-month term included with every EVDEV project.
Not included
Customer passwords
No platform can hand these over. Passwords are stored as one-way hashes, so they cannot be read or transferred by anyone, including the vendor you are leaving. Customers set a new password through an account activation email.
Refunding or editing pre-migration orders inside Shopify
Imported orders arrive as historical records, not live transactions. A refund against an order paid on your old gateway still has to be issued there, which is why we ask you to keep read access to the old admin through your returns and tax window.
Rewriting the catalogue copy
We migrate the content you have and fix the technical layer around it. Rewriting product and category copy at scale is real work with a real budget, and it belongs in an SEO engagement rather than hidden inside a migration line item.
SEO servicesShopify plan fees and third-party app licences
Billed to you by Shopify and the app vendors at their published rates. We do not resell them or mark them up, and we will tell you when a paid app is doing something a metafield and twenty lines of Liquid can do for free.
Rescuing rankings that were already falling
If organic traffic has been declining for six months before the replatform, the migration will not reverse it and the migration will get blamed for it. We baseline before cutover so the two problems stay separate, and we will say so during discovery.
Integrations outside the agreed list
A new ERP, a warehouse system nobody mentioned, or a marketplace connector discovered in week six all get quoted as change orders. Fixed scope only means something if additions are visible.
Ongoing growth work after the support term
Conversion testing, content and technical SEO beyond the three months of post-launch support included with every project are a separate retainer. Plenty of merchants launch and stop there, which is a waste of a clean platform.
What we found across 5,410 stores
Questions merchants ask before signing
- How long does a Shopify migration take?
- Catalogue size matters less than people expect. What sets the timeline is how much custom logic sits in the old checkout, how clean the product data is, how many systems talk to the store, and how fast your team reviews staging. A Squarespace store with 200 products and no ERP is a different project from an SFCC build with price books and a warehouse integration. Anyone who quotes you a launch date before seeing the data export and the integration list is guessing.Migration checklist
- What happens to my SEO and rankings?
- Rankings follow URLs when the 301s are complete and in place on day one. Expect a dip anyway, because Google has to recrawl the whole site and a large catalogue takes weeks to work through. The cases that turn into real damage almost always share one cause: somebody mapped the top 200 URLs and let the long tail 404. Export Search Console and analytics for the months before cutover so you hold a baseline of your own, because without one you cannot tell a normal recrawl dip from a redirect that never fired.Site structure and internal linking
- Why do Shopify products have two URLs, and does it matter?
- The same product is reachable at /products/handle and at /collections/name/products/handle. Both resolve, both render, and only the first should be linked. If the theme uses the collection-scoped version throughout, your own internal links argue against your canonical tags, and Google has to decide which one you meant. We link to clean product URLs from the first template rather than fixing it after launch.
- Will I lose any data?
- Products, variants, images, collections, customers, blog posts and order history all move, and we reconcile row counts at each stage so nothing goes missing quietly. Two things genuinely do not survive. Customer passwords cannot be migrated by anyone, so customers reset through an activation email. Imported orders come in as records, which means refunds and edits against pre-migration orders stay on the old system. Everything else is a question of effort, not possibility.
- What happens to my apps and integrations?
- We audit every installed app and sort it into kept, replaced, or cut. Reviews usually migrate through the vendor import tools. Subscriptions rarely do, because billing tokens sit with the payment gateway. Loyalty balances need an export from the vendor before you cancel, not after. Checkout customisations are the sharp edge: checkout.liquid is retired and Shopify Scripts stopped running on 30 June 2026, so any rule still living there is a rewrite into Shopify Functions.
- Can you work alongside our in-house team?
- Yes, and it is often the cheaper way to run it. The usual split is that we own the platform work (data, Liquid, Functions, redirects, cutover) while your team owns content, merchandising and approvals, since they are faster at all three. We also embed into an existing dev team for the parts they do not want to learn on a live deadline. What we will not do is run a migration where nobody on your side can decide within a day.Hire Shopify developers
- What does a Shopify migration cost?
- Price tracks scope, not SKU count. The variables that move an estimate are custom checkout logic, the number of live integrations, the state of the product data, and whether the design is being rebuilt or reproduced. Platform fees are separate and public: Shopify Plus is listed at CA$3,400 per month on a three-year term or CA$3,650 on a one-year term, accurate as of 12 August 2026, with a variable fee for higher-volume merchants that Shopify negotiates directly.Migration cost breakdown
Migration mapping
Migrating a custom-built store to Shopify: where each kind of data goes
Moving a custom-built store to Shopify is mostly a mapping exercise: every entity in your current database needs a home in Shopify’s fixed data model before anything is imported. Products, customers and orders map directly. Custom attributes become metafields or metaobjects, complex pricing logic becomes Shopify discounts or Functions, and every indexed old URL needs a redirect. Customer passwords cannot be carried over, and subscriptions need a plan agreed with the subscription app before launch.
| Your data | In Shopify | How it moves | Watch out for |
|---|---|---|---|
| Products and variants | Products with variants | CSV or API import. | Three option dimensions per product; extra dimensions become separate products or metafields. |
| Custom attributes and specs | Metafields; metaobjects for shared entities (materials, designers) | Define the metafields first, then import. | Decide which ones need to be filterable on the storefront. |
| Category tree | Collections plus navigation menus | Manual or rule-based (smart) collections. | Shopify has no nested collections; hierarchy lives in menus and handles. |
| Customers | Customers | CSV or API import. | Passwords cannot be migrated; plan an account invite or use passwordless customer accounts. |
| Order history | Orders marked as historical | API or a migration app. | Turn off customer notifications during import. |
| Price rules and promotions | Discounts; Shopify Functions for custom logic | Rebuilt, not imported. | Tiered and stacked rules usually need a Function. |
| Bundles and kits | Shopify Bundles app or a Cart Transform Function | Rebuilt. | Inventory behaviour differs between the two approaches. |
| Subscriptions | Selling plans through a subscription app | Contracts migrated by the subscription app. | Saved payment details only move where your payment provider supports it — confirm first. |
| CMS pages and blog | Pages, blog articles or metaobjects | Import or rebuild. | Structured content (FAQs, specs) fits metaobjects better than pages. |
| URLs | URL redirects | Redirect CSV import. | Map every indexed old URL — this is where migrations lose rankings. |
Moving off a custom platform? Book a free migration call