Magento to Shopify Data Migration Guide

A Magento to Shopify data migration moves products, customers, orders, content and URLs from Magento into Shopify, remapped to Shopify's data model. Products and customers can be imported by CSV, but historical orders need a migration app or the API, and passwords cannot move at all. Below, every Magento entity and field is mapped to Shopify, or see our Magento to Shopify Plus migration service for a done for you migration.

How Magento data maps to Shopify

Magento and Shopify store the same business data in very different shapes. Magento keeps product, category and customer data in EAV attributes spread across several MySQL tables (Adobe developer docs). Shopify uses fixed resources (products, variants, collections, customers, orders) extended with metafields and metaobjects.

Three rules shape every migration:

  • Import order matters. Products first, then customers, then historical orders, so orders link to the right products and customers (Shopify Help Center).
  • CSV covers products and customers only. Orders and gift cards move through a migration app or the API (Shopify Help Center). Product and customer CSV files are limited to 15 MB each (products, customers).
  • Code does not move. Themes, extensions and custom modules are rebuilt. This guide covers data only.

Magento product types to Shopify

Magento has seven product types (Adobe docs). Shopify has one product with up to three options and 2,048 variants (Shopify Help Center).

Magento product typeShopify targetMapping notes
SimpleProduct with one default variantSKU, price, weight and stock sit on the single variant.
Simple with custom optionsVariants or line item propertiesDrop down and radio options that change price or stock become variants. Text, file and date options (Adobe docs) become line item properties through the theme or an options app.
ConfigurableProduct with options and variantsThe parent becomes the product; each child simple product becomes a variant with its own SKU, price, stock and image (Adobe docs). Child URLs redirect to the parent.
Configurable over Shopify limitsSplit products or combined listingMore than three option attributes or 2,048 combinations means restructuring. On Plus, split products can be joined in a combined listing of up to 60 products (Shopify Help Center).
BundleBundle through an appShopify requires a bundles app to create bundles (Shopify Help Center). Dynamic price and SKU settings (bundle_price_type, bundle_sku_type) are rebuilt and tested.
GroupedSeparate products plus a collection or bundleEach associated product stays its own product. The group page becomes a collection, a bundle or a section on the main product.
VirtualProduct that does not require shippingServices, warranties and memberships. Subscriptions move to a subscription app.
DownloadableDigital productFiles move to Shopify's free Digital Products app (Shopify Help Center). Download limits are set again there.
Gift card (Adobe Commerce)Gift card productVirtual, physical and combined gift card products become a Shopify gift card product. Issued balances are migrated separately, see below.

Magento product fields to Shopify product fields

Magento attribute codes are from Adobe's product import reference (Adobe docs). Shopify column names are from the product CSV reference (Shopify Help Center).

Magento attributeShopify fieldNotes
nameTitlePer store view names become translations.
url_keyURL handleKeep the URL key as the handle so redirects are one to one. The .html suffix is dropped.
description, short_descriptionDescription, metafieldShort description usually moves to a product metafield shown by the theme.
skuSKU (variant)Keep SKUs unchanged. They are the join key for orders, ERP and inventory.
price, special_price, special_price_from_date, special_price_to_datePrice, Compare at priceAn active special price becomes Price with the old price as Compare at price. Scheduled sales need an app or Flow.
tier_price, group_priceB2B catalogs, volume pricing, discountsQuantity breaks and group prices map to B2B catalogs and volume pricing (Shopify Help Center) or to discounts for retail.
weightWeight value (grams)Convert units to match your Shopify store settings.
qty, is_in_stock, allow_backordersInventory quantity, inventory policyQuantities per source move to Shopify locations. Backorders become continue selling when out of stock.
product_online, visibilityStatus, sales channel publishingDisabled products import as draft. Children set to Not Visible Individually are absorbed into their parent.
meta_title, meta_descriptionSEO title, SEO descriptionShopify allows 70 and 320 characters (Shopify Help Center). meta_keywords has no Shopify field and is dropped.
base_image, additional_images and labelsProduct image URL, Image alt textImages must be public HTTPS URLs, up to 250 per product, with alt text up to 512 characters (Shopify Help Center).
categoriesCollections, Product category, TypeSee the category table below.
related_skus, crosssell_skus, upsell_skusProduct metafields (product list)Rebuilt as product reference metafields or a recommendations app.
tax_class_nameCharge tax, tax overridesTax classes are reviewed with your tax setup, not copied.
country_of_manufacture, custom attributesMetafieldsEach kept attribute gets a metafield definition. See attributes below.

Attributes and attribute sets to options, metafields and metaobjects

An attribute set is the template for a Magento product record, and attributes are grouped inside it (Adobe docs). Shopify has no attribute sets, so each attribute is routed by what it does.

Magento attribute useShopify targetExample
Configurable (super) attribute that changes price or stockProduct option (up to 3)color, size
Descriptive attribute shown on the product pageProduct or variant metafieldmaterial, care instructions, country of manufacture
Layered navigation filter attributeMetafield used as a storefront filterheel height, fit
Repeated structured contentMetaobject referenced from productssize charts, ingredients, technical specifications, brand profiles
Attribute setProduct type, tags or a metafieldUsed to group metafield definitions and drive templates
Store view scoped attribute valuesTranslations per languageGerman and French names and descriptions
Unused or empty attributesNot migratedRemoved during cleanup

Categories to collections

Magento categories form a tree, and a product can sit in many categories. Shopify collections are flat lists, either manual or automated by conditions, with up to 60 conditions per automated collection (Shopify Help Center). The tree itself is rebuilt as navigation menus.

Magento category fieldShopify fieldNotes
Category nameCollection titleTranslated per language.
url_key and url_pathCollection handleNested paths flatten to one handle. Old paths get redirects.
Description and imageCollection description and imageCMS block content shown on the category becomes collection metafields or theme sections.
meta_title, meta_descriptionSEO title, SEO descriptionMoved as they are.
Product assignments and positionsManual collection with manual sort orderOr an automated collection where a tag, type, vendor or metafield rule fits.
Anchor categoriesAutomated collection or parent collectionChildren's products are included through shared tags or metafields.
Category treeNavigation menusMain menu and footer menu rebuilt from the tree.

Customers, addresses and customer groups

Magento customer and address attribute codes are from Adobe's customer import reference (Adobe docs). The customer CSV imports only the default address (Shopify Help Center); the customerCreate API accepts every address, metafields and marketing consent.

Magento fieldShopify fieldNotes
email, firstname, lastnameEmail, First name, Last nameEmail is the unique key. Duplicates across Magento websites are merged.
prefix, middlename, suffix, dob, genderCustomer metafieldsAdobe suggests limiting storage of full birth dates (Adobe docs), so consider dropping dob.
taxvat, vat_idTax exemptions or B2B company tax IDReviewed with your tax setup.
Addresses: street, city, region, postcode, country_id, telephone, companyCustomer addressesAll addresses through the API. Default billing and shipping flags set the default address.
Newsletter subscriptionEmail marketing consentOnly customers who opted in are marked subscribed.
group_id (General, Wholesale, custom)Tags, segments or B2B companiesGroups decide discounts and tax class in Magento (Adobe docs). Retail groups become tags; trade groups become B2B companies.
Company accounts (Adobe Commerce B2B)Companies, locations and contactsWith catalogs and payment terms on Shopify B2B (Shopify Help Center).
created_at, created_in, website_idTags or metafieldsKept for reporting and segmentation.
password_hashNot migratedSee what cannot move.

Orders, statuses and totals

Orders cannot be imported by CSV (Shopify Help Center). We create them with the orderCreate mutation, which is built for importing orders from an external system. By default it bypasses inventory and sends no receipts or shipping confirmations (Shopify developer docs), so imports do not change stock or email customers.

Magento order dataShopify fieldNotes
increment_idname, sourceIdentifierKeep the Magento order number as the order name so customers and support recognize it (OrderCreateOrderInput).
created_atprocessedAtPreserves the original order date for reports.
Items: SKU, name, qty, price, tax, discountlineItemsMatched to variants by SKU. Deleted products import as custom line items.
Shipping method and amountshippingLinesCarrier and service title kept.
Tax amountstaxLinesImported as charged, not recalculated.
Discount amount and coupon codediscountCodeShopify accepts one discount code per order; extra rules go into a note or tag.
Payments and grand totaltransactions, financialStatusTransactions recreate the amounts paid and refunded.
Billing and shipping addressbillingAddress, shippingAddressCopied as they were at order time.
Shipments and trackingfulfillment, fulfillmentStatusTracking numbers move with the fulfillment.
Order comments and status historynote, tags, metafieldsInternal history kept for support.

Magento order statuses in Shopify: our recommended mapping

Magento has internal order states and visible order statuses, such as pending, processing, complete, closed, canceled, holded, payment_review and fraud (Adobe docs). Shopify splits status into a financial status (8 values) and a fulfillment status (unfulfilled by default, or fulfilled, partial or restocked). Below is our recommended mapping. It is the approach our team uses on Magento projects, not a platform rule, and we confirm it with you during the audit.

Magento statusShopify financial statusShopify fulfillment status
pending, pending_paymentPENDINGUnfulfilled
processing (invoiced, not shipped)PAIDUnfulfilled, or PARTIAL if some items shipped
completePAIDFULFILLED
closed (credit memo issued)REFUNDED or PARTIALLY_REFUNDEDFULFILLED, or RESTOCKED if items came back before shipping
canceledVOIDED, or REFUNDED if money was takenRESTOCKED where items were reserved; order closed
holded, payment_review, fraudAUTHORIZED or PENDINGUnfulfilled, with the Magento status kept as a tag

Historical orders are records, not live work. We migrate open orders at cutover only after agreeing who fulfills them.

Reviews, CMS pages, blocks and blog posts

Content moves as content, but Magento widgets and layout updates are rebuilt as theme sections.

Magento contentShopify targetNotes
Product reviews and ratingsYour chosen reviews appNickname, rating, title, text, date and product SKU. Magento only shows approved reviews (Adobe docs), so only approved reviews are published.
CMS pagesPagesTitle, content, URL key (as handle), meta title and meta description.
CMS blocks and widgetsTheme sections, metaobjectsBlocks are modular content placed with widgets or layout XML (Adobe docs). They become editable sections, with repeated content in metaobjects.
Blog extension postsBlog articlesTitle, body, author, date, tags, featured image and SEO fields. Each post gets a redirect.
Images inside contentShopify FilesUploaded again and links rewritten so nothing points at the old media server.

URL rewrites, SEO fields and images

Magento stores every friendly URL in its URL rewrite tables, including automatic 301s for changed URL keys (Adobe docs), often with an .html suffix and optional category paths in product URLs (Adobe docs). Shopify uses fixed prefixes such as /products/ and /collections/, so every URL changes and needs a redirect.

Magento sourceShopify targetNotes
url_rewrite rows for products/products/handle redirectsInclude every category path variant, for example /gear/bags/item.html.
url_rewrite rows for categories/collections/handle redirectsNested category paths map to the matching collection.
url_rewrite rows for CMS pages/pages/handle redirectsThe homepage CMS page maps to the root.
Custom rewrites and existing 301sRedirects to the final URLChains are collapsed so each old URL takes one hop.
Store view URLs (store code or domain)Market subfolders or domainsFor example /de/ maps to the German market subfolder (Shopify Markets).
meta_title, meta_descriptionSEO title, SEO descriptionMoved for products, categories, pages and posts.
Image labelsImage alt textMissing labels are filled during cleanup.

Shopify allows up to 100,000 redirects, or 20,000,000 on Plus. Redirects only fire from URLs that return a 404, URLs with query strings such as layered navigation filters might not redirect as expected, and paths starting with /apps, /cart, /orders, /services or /shop cannot be redirected (Shopify Help Center).

Websites, store views and gift cards

Magento runs websites, stores and store views from one installation, often with one store view per language (Adobe docs).

MagentoShopifyNotes
Store views for languagesLanguages and translations in MarketsMarkets set language, currency, catalogs, domains and theme per market (Shopify Help Center).
Websites per country or currencyMarkets in one storePrices by market through catalogs.
Websites per brand or separate operationExpansion storesShopify Plus supports 9 expansion stores (Shopify Help Center).
Gift card accounts and balances (Adobe Commerce)Gift cards via app or GiftCard APIGift cards cannot be imported by CSV; they move with an app or the GiftCard API (Shopify Help Center). Shopify gift cards cannot be edited or deleted after import, so balances are migrated at cutover (Shopify Help Center).

What cannot move from Magento to Shopify

Some Magento data has no technical path to Shopify. Plan for these early.

ItemWhyWhat to do instead
Customer passwordsMagento stores one way hashes (Argon2ID13 or SHA256, with legacy MD5) (Adobe docs), and Shopify cannot import passwords (Shopify Help Center).With Shopify customer accounts, customers sign in with a one time 6 digit code sent to their email, so no password is needed (Shopify Help Center).
Saved payment cardsCard tokens belong to your payment provider.Ask your gateway about a token migration, or customers add cards again.
Abandoned carts and wishlistsLive session data tied to Magento.Wishlists can move to a wishlist app; carts are not migrated.
Cart and catalog price rulesRule logic, not data.Rebuilt as Shopify discounts, automatic discounts or discount Functions.
Theme, extensions and custom modulesPHP, layout XML and LESS code.Rebuilt as a Shopify theme, apps and Functions.
meta_keywordsNo Shopify field.Dropped.

How to clean Magento data before migrating

  1. Freeze the scope. Decide how many years of orders and which customers (for example, active in the last few years) to migrate.
  2. Remove dead catalog data. Disabled products with no sales, orphaned child products, empty categories and unused attributes.
  3. Fix SKUs. Every variant needs a unique SKU; duplicates and blanks break order matching.
  4. Restructure big configurables. Anything over three options or 2,048 variants gets a plan before export (Shopify Help Center).
  5. Normalize customers. Merge duplicate emails across websites, validate country and region codes, and confirm marketing consent.
  6. Collect URLs. Export the url_rewrite table per store view, crawl the site and pull indexed URLs from Search Console.
  7. Fill SEO gaps. Missing meta titles, meta descriptions and image labels are cheaper to fix in the source export.

Validation checks after each test migration

Run these checks on every test import and again after the final delta migration at cutover.

16 checks

Counts

Catalog

Customers and orders

URLs and SEO

Magento to Shopify data migration FAQ

Can I import Magento orders into Shopify?

Yes, but not by CSV. Historical orders move through a migration app or the API (Shopify Help Center). The orderCreate mutation keeps order numbers, dates, line items, taxes, shipping and payment status, and on trial or development stores it is limited to five new orders per minute (Shopify developer docs).

Can Magento customer passwords be migrated to Shopify?

No. Magento stores passwords as one way hashes (Adobe docs) and Shopify cannot import passwords (Shopify Help Center). With Shopify customer accounts, customers sign in with a one time code sent by email (Shopify Help Center).

How do Magento configurable products import into Shopify?

The configurable parent becomes one Shopify product and each child simple product becomes a variant with its own SKU, price, stock and image. Shopify allows three options and 2,048 variants per product (Shopify Help Center), so larger configurables are split or joined in a combined listing on Plus.

Where do Magento custom attributes go in Shopify?

Attributes that change price or stock become product options. Descriptive and filter attributes become metafields, and repeated structured data such as size charts or specifications becomes metaobjects.

How do I keep SEO when migrating Magento URLs?

Export the url_rewrite table, keep URL keys as Shopify handles and 301 redirect every indexed URL to its new address. Shopify Plus holds up to 20,000,000 redirects, and redirects only fire from URLs that return a 404 (Shopify Help Center).

Do Magento customer groups exist in Shopify?

Not as such. Magento groups control discounts and tax class (Adobe docs). In Shopify, retail groups become customer tags and segments for discounts, and wholesale groups become B2B companies with their own catalogs and payment terms (Shopify Help Center).

Can Magento gift card balances move to Shopify?

Yes, with a migration app or the GiftCard API, not by CSV (Shopify Help Center). Imported gift cards cannot be edited or deleted, so we migrate balances at cutover after Magento stops taking orders (Shopify Help Center).

How long does a Magento data migration take?

It depends on catalog structure, order history and the number of store views more than on raw record counts. We run at least one full test migration and a final delta migration of new orders, customers and stock at cutover, so Magento keeps selling until launch day.

Plan your Magento data migration

A clean Magento to Shopify migration comes down to three things: a field by field map agreed before any import, products and customers loaded before orders, and a redirect for every indexed URL. Ecomzier has built 1,100+ Shopify stores and runs this mapping on every Magento project. See our Magento to Shopify Plus migration service, or book a free consultation to review your data.