SEO & data

Shopify data migration: products, customers and orders

Every Shopify migration is, underneath, a data migration. Products, customers and orders have to leave one system and arrive in another complete, correctly linked and better structured than before. This guide covers how that works on Shopify: what moves, in what order, with which tools, within which limits, and how to prove it arrived intact.

16 min readUpdated October 2026350+ Shopify stores500K+ products migrated20+ years
Shopify PartnersGoogle PartnerMeta Business PartnerKlaviyo K:Partners

The short answer

A Shopify data migration moves three core sets of data, products, customers and orders, plus the content and settings around them. Shopify’s own guidance is to import them in that order: products first, then customers, then historical orders, so each order can be linked to the right customer and the right products.

Moving the data is the mechanical part. The skilled part is deciding how it should be structured on Shopify, working within Shopify’s limits, keeping consent and history intact, and proving at the end that what arrived matches what left. A migration that copies data as it is will work. A migration that restructures it will work better for years.

I’ve migrated over 500,000 products across more than 350 Shopify stores in 20 years. This guide sets out how I approach product, customer and order migration, and the checks that make sure nothing is lost.

3 stepsProducts, then customers, then orders
2,048Variants per product on Shopify
0Passwords that can move between platforms
500K+Products I’ve migrated over 20 years

Want to know how clean your data is? I’ll check it in the free audit.

Book a free audit

What data moves

DataMoves to Shopify?Usual route
Products, variants, prices, stockYesCSV import, Matrixify or a migration tool
Product imagesYesImported by URL with each product
Attributes and specificationsYes, restructuredOptions, metafields or metaobjects
CategoriesYesCollections, plus navigation menus
Customers and addressesYesCustomer CSV import or a migration tool
Marketing consentYesImported with each customer record
PasswordsNoCustomers sign in with a one-time email code
Historical ordersYesMigration tool or the Shopify API
ReviewsUsuallyExported and imported via the review app
Discount codes and gift cardsUsuallyRecreated or imported, depending on type
Pages and blog postsYesMigration tool or rebuilt in the theme
URL redirectsYesRedirect CSV import
Based on Shopify Help Center documentation, accessed 24 October 2026.

The import order, and why it matters

Shopify’s help centre puts it plainly: import products first, then customers, then historical orders. The reason is linking. An imported order refers to the products on its lines and to the customer who placed it. If those records already exist in Shopify, the order connects to them, and your team can open a customer and see their full history. If they don’t, the order still imports, but as an island.

Around those three, I add two more steps. Before products, collections and metafield definitions are set up, so products land in a structure that already exists. After orders, redirects are imported, because the redirect map depends on the final Shopify URLs of every product and collection.

  1. StructureMetafield definitions, metaobjects and collections created.
  2. ProductsWith variants, images, stock and metafields.
  3. CustomersWith addresses, tags and marketing consent.
  4. OrdersHistorical orders, linked to customers and products.
  5. Content and redirectsPages, blog posts and the full redirect map.

Product migration

A Shopify product has a title, description, vendor, product type, tags, images, SEO title and description, and up to three options that create variants. Each variant carries its own price, compare-at price, SKU, barcode, weight and stock. Shopify supports up to 2,048 variants per product, and there’s no limit on the number of products on any plan.

Most product migrations stumble on the same few things:

  • More than three options. A product with four or more option dimensions needs restructuring, usually by splitting one dimension into linked products or moving it into a metafield.
  • High variant counts. Shopify supports 2,048 variants, but some themes, apps and channels still handle only 100. Check every app in the plan against your largest products.
  • Inconsistent option names and values. “Colour”, “Color” and “Finish” meaning the same thing; “Black” and “black” as separate values. These are normalised before import, so filters work.
  • Image order and alt text. The first image becomes the main image; alt text should move with each image.
  • Stock across locations. If you hold stock in several places, inventory is imported per location.
  • Handles. The URL handle of each product is chosen deliberately, because it becomes the new URL and the target of the redirect.

For very large catalogues, Shopify notes that stores with 500,000 or more variants can add at most 10,000 new variants a day through apps or CSV, with Shopify Plus exempt. That’s rarely an issue, but it matters for planning on the largest stores.

Attributes, metafields and metaobjects

Older platforms often hold product information as attributes: dozens or hundreds of fields such as material, size guide, dimensions, power, compatibility or care instructions. On Shopify, that information has three possible homes:

  • Options, for the choices a buyer makes that change the variant, such as size or colour.
  • Metafields, for structured information attached to a product or variant, such as material or wattage. Metafields can power collection filters and specification tables.
  • Metaobjects, for reusable structured content shared across many products, such as a brand profile, a size chart or a care guide.

Shopify’s developer documentation sets limits that rarely bite but are worth knowing: up to 256 metafield definitions per resource type for the merchant, most metafield values up to 64KB, lists up to 128 items, and 128 metaobject definitions per store on standard plans (256 on Plus), each with up to 40 fields.

A practical example: a homewares retailer might hold “width”, “Width (cm)” and “W” as three separate attributes, filled in differently by different people over the years. On Shopify they become one number metafield with a unit, filled in consistently, which can then drive a width filter on every relevant collection. The same thinking applies to a fashion retailer’s fabric fields or a hi-fi retailer’s power ratings.

This is the step that turns a data migration into an upgrade. Each old attribute is classified as something buyers choose, filter, compare or ignore, and only the useful ones come across, cleanly.

Getting data out of the old platform

Every platform exports differently, and the export decides how much work follows. A few examples, from each platform’s own documentation:

  • WooCommerce has a built-in product CSV exporter, but full customer and order exports need an extension or a migration tool.
  • ShopWired exports products, customers and orders to CSV from its admin.
  • EKM exports products and orders to spreadsheets; the customer route is checked store by store.
  • Magento and Adobe Commerce data is usually read directly by a migration tool or a script, because the native exports don’t cover everything a migration needs.
  • Proprietary platforms vary most. Some offer full exports; others need a request to the provider, which is worth making early.

Platform-specific detail is in my guides to Magento to Shopify migration and moving a UK ecommerce platform to Shopify.

Cleaning the data before import

Clean data imports cleanly. These are the fixes I make before anything goes into Shopify:

  • Duplicate customers merged, usually the same email address registered more than once.
  • Option names and values normalised, so filters and variant pickers behave consistently.
  • Missing SKUs and barcodes filled where stock systems, feeds or marketplaces depend on them.
  • Descriptions tidied: old inline styling, broken HTML and platform-specific codes removed so text displays properly in the new theme.
  • Image links checked, so every image can be fetched during import, with the main image first.
  • Discontinued and test products removed, with their URLs added to the redirect map instead.
  • Special characters checked, so accented names, currency symbols and apostrophes survive the move.

Customer migration

Customer records carry names, email addresses, phone numbers, addresses, tags, notes and marketing consent. Shopify’s customer CSV import is limited to files of 15MB, so large customer bases are imported in batches or through a migration tool.

Three things need particular care:

  • Marketing consent. Only customers who agreed to receive marketing should arrive as subscribed. Consent status moves with each record; it’s never assumed.
  • Passwords. Shopify says you can’t migrate customer passwords from another store. Passwords are stored in a form that can’t be transferred, which is a security feature, not a gap.
  • Signing in. Shopify’s current customer accounts sign customers in with a one-time code sent to their email, or through Shop or social sign-in, so nobody needs to set a new password. Since February 2026, legacy password-based accounts aren’t available to new stores.

Customer tags are worth planning too. Tags such as “trade”, “VIP” or “wholesale” drive discounts, email segments and pricing on Shopify, so old customer groups are mapped to a short, consistent set of tags rather than copied as they were.

Trade customers may also need companies, locations and price catalogues set up in Shopify’s B2B features, which since April 2026 are available on all plans, with limits below Plus.

Order migration

Historical orders matter for customer service, reporting and repeat customers. Shopify’s admin doesn’t import orders directly; its guidance is to use a migration app or the API. Before import, new-order notifications for staff are switched off, or the team receives an email for every historical order.

  • Imported as history. Orders arrive as completed records, so they don’t trigger fulfilment, payment capture or customer emails.
  • Line items, taxes, shipping and discounts carried over so totals match the original.
  • Refunds and cancellations reflected, so reporting isn’t inflated.
  • Order numbers. Some tools can preserve original order numbers, usually as an option. Decide early whether you need them, for example for customer service references.
  • How far back. Importing every order since the store began isn’t always necessary. Many retailers bring two or three years and keep a full archive export.
Shopify data migration: brown cardboard boxes on a white metal warehouse rack
Good data is invisible to customers. They just find what they’re looking for.

Reviews, discounts and other data

  • Reviews are exported from the old review system and imported into the new Shopify review app, matched to products by SKU or handle.
  • Discount codes that are still in use are recreated, with their rules checked against how Shopify discounts work.
  • Gift cards with outstanding balances are recreated so customers can still spend them. Check the details with whoever handles your gift card liabilities.
  • Pages and blog posts move with their images and SEO fields.
  • Redirects are imported as a CSV once every new URL is known. My Shopify migration SEO guide covers how the map is built.

Data migration tools

ToolWhat it doesPricing model (Oct 2026)
Shopify CSV importProducts and customers, built into the adminFree
Shopify Store Migration appProducts and customers from supported platforms such as WooCommerce, Wix, Etsy and SquareFree
MatrixifySpreadsheet import and export of almost everything, including orders, metafields, redirects and blog postsFree plan, then $20, $50 or $200 a month, with per-file limits
Cart2CartAutomated transfer between platformsBy volume of data, minimum $29, with paid options such as redirects
LitExtensionAutomated transfer, or a done-for-you serviceBy number of entities, from $59
Shopify Admin APICustom scripts for anything, including ordersDeveloper time; rate limits apply by plan
Sources: Shopify Help Center and blog; Matrixify App Store listing; Cart2Cart and LitExtension pricing pages; accessed 24 October 2026.

On most migrations I use more than one: a migration tool or script for the bulk transfer, a spreadsheet tool for corrections and metafields, and the API for anything unusual. What matters is that the same mapping rules apply whichever route a record takes.

The tool matters less than the mapping behind it. Every tool moves data as it’s given. Deciding what the data should look like on Shopify is the part that needs experience.

Proving the data arrived

A data migration isn’t finished when the import completes. It’s finished when the numbers reconcile. These are the checks I run:

  1. CountsProducts, variants, customers and orders in Shopify match the source export, with any deliberate exclusions listed.
  2. TotalsOrder revenue by month matches the old platform’s reports.
  3. SamplesA random sample of products, customers and orders compared field by field with the original.
  4. Top sellersThe best-selling products checked by hand: options, prices, images, stock and descriptions.
  5. LinksOrders linked to customers; customers showing their history.
  6. ConsentSubscriber counts match the opted-in list in the old system.

Large catalogues and limits

For stores with tens of thousands of products or hundreds of thousands of orders, the import itself takes planning. Shopify limits how quickly apps and scripts can write data through its Admin API: its developer documentation lists GraphQL restore rates of 100 points a second on standard plans, 200 on Advanced and 1,000 on Plus. Spreadsheet tools such as Matrixify apply per-file limits by plan. In practice that means large imports run in batches, in a planned order, with time built in for checks between them.

None of this is a barrier. It’s a reason to start the main import early in the project, so the final launch-day sync only has to bring across a few days of new data.

The final sync

The old store keeps trading while the new one is built, so customers and orders keep arriving after the main import. On launch day, a delta migration brings across everything created since then. Shopify’s own Plus launch checklist recommends planning for it. A short content freeze on the old store, with no new products or price changes after an agreed time, keeps the delta small and predictable.

Which system owns the data?

Before importing anything, decide where each kind of data will live after launch. If an ERP, EPOS or product information system holds your products and stock, it usually stays the master, and Shopify receives updates from it. If Shopify becomes the master, other systems read from it instead.

Getting this wrong causes one of the most frustrating post-launch problems: a connector that syncs every night and quietly overwrites the cleaned-up titles, descriptions or metafields from the migration with the old data from the source system. The fix is to agree, field by field, which system is allowed to write what, and to test the connector against the migrated catalogue before launch rather than after.

Common data migration mistakes

Importing orders before customers. Orders arrive without links to the people who placed them.

Leaving notifications on. Staff receive an email for every historical order imported.

Importing everyone as a subscriber. Consent must move as it was recorded, never assumed.

Copying every attribute. Years of unused fields become clutter on the new store.

Skipping reconciliation. Without counts and totals, nobody can say the migration is complete.

Forgetting the delta. Orders placed during the build go missing at launch.

Personal data and consent

Customer data is personal data, and moving it is processing it. In practice that means moving only what you need, keeping consent status accurate, removing test and duplicate records, and updating your privacy policy to name Shopify and any new apps that handle customer data. If you’re unsure about your obligations, take advice; this isn’t legal advice. The migration is also a good moment to delete data you no longer have a reason to keep.

Who does the data work

Small, clean catalogues can be migrated in-house with Shopify’s CSV import or the Store Migration app. Established stores, with years of attributes, tens of thousands of customers and a long order history, usually benefit from someone who has done it many times.

In my Shopify migration package, the data work is the core of the project: audit, restructuring, import in the right order, reconciliation, and the final sync on launch day. The package starts from $19,997 USD, or £14,997 + VAT for UK clients, with flexible plans depending on the deposit paid, and runs over four weeks from signed brief to a live store. I’m UK-based and work remotely with retailers all over the world. Outside the UK, the package starts from $19,997 with no VAT, quoted in US dollars after the free store audit. Lipton’s Audio & Video’s move, with more than 2,800 products rebuilt as structured data, is set out in the Lipton’s Shopify migration case study. For the full service, see my Shopify migration service, and for every step, my Shopify migration checklist.

When you need less than this

  • A small, simple catalogue with few variants and no attributes can go straight in through Shopify’s CSV import.
  • A platform the Store Migration app supports, with few customers and no need for order history, may need nothing more.
  • A new store with no history only needs a clean product import.

Get your data checked, and a fixed price for the move.

Book a free audit

Shopify data migration: FAQ

Moving your store’s data, mainly products, customers and orders, plus content, reviews, discounts and redirects, from another platform into Shopify, restructured to fit how Shopify works.
Shopify recommends products first, then customers, then historical orders, so each order links to the right customer and products. I set up the data structure before products and import redirects last.
No. Shopify says passwords can’t be migrated from another store. Customers sign in with a one-time code sent to their email, so they don’t need a new password.
Yes, through a migration app or the Shopify API. Orders are imported as historical records, with staff notifications switched off, so nothing is fulfilled or emailed again.
Up to 2,048 variants across up to three options. Some themes and apps still support only 100, so check before you rely on high variant counts.
They become options, metafields or metaobjects depending on how buyers use them. Attributes nobody uses are left behind.
Some migration tools can preserve original order numbers, usually as an option. Decide early if your customer service relies on them.
Yes. Consent status is imported with each customer record, and only customers who opted in arrive as subscribed.
It depends on the platform and data. Shopify’s CSV import and Store Migration app suit small stores; Matrixify, Cart2Cart, LitExtension or custom scripts handle larger and more complex migrations.
Reconcile counts and order totals against the source, check a random sample field by field, check your best sellers by hand, and confirm orders link to customers.
A final import on launch day of the customers and orders created since the main migration, so nothing placed during the build is lost.
Data migration is the core of my Shopify migration package, which starts from $19,997 USD, or £14,997 + VAT for UK clients, with flexible plans depending on the deposit paid.

Sources

Import order, historical orders and notifications: Shopify Help Center, “Migrating to Shopify”, accessed 24 October 2026. Product, option, variant and media limits, and the 10,000 new variants a day rule: Shopify Help Center, accessed 24 October 2026; variant limit from the Shopify changelog, 15 October 2025. Metafield and metaobject limits: shopify.dev, accessed 24 October 2026. Customer CSV limit and passwords: Shopify Help Center, importing customers, accessed 24 October 2026. Customer accounts and legacy deprecation: Shopify Help Center and shopify.dev changelog, 26 February 2026. B2B on non-Plus plans: Shopify changelog, 2 April 2026. Delta migration: Shopify Help Center, Shopify Plus launch checklist, accessed 24 October 2026. Store Migration app: Shopify blog, 21 July 2026. Tool pricing: Matrixify App Store listing, Cart2Cart and LitExtension pricing pages, accessed 24 October 2026. KA Consultancy prices and proof points as published on the Shopify migration services page.

Free store audit

Find out how your data would move.

A free review of your products, customers, orders and integrations, with the risks named and a fixed price for the move if you want one.