Skip to content
DataEase
Try for free

Migrate from Magento to Shopify

DataEase moves a Magento 2 store (Magento Open Source, Adobe Commerce or Mage-OS) to Shopify straight from Magento’s REST API - no extensions, no CSV exports, no spreadsheets. You create an integration in Magento, paste its keys, pick what to move, and DataEase does the rest. It also creates redirects from the old URLs, so links and search rankings keep working after you switch the domain.


MagentoShopifyDetails
Simple, virtual and downloadable productsProductsName, description, status, visibility, first category as product type, images (main image first), SKU, price and special price (as compare-at price), cost, weight, tax class, stock quantity (in your main location), backorders, brand (manufacturer), country of manufacture, SEO title and description.
Configurable productsProducts with variantsConfigurable attributes (Color, Size, …) become options (up to 3), each enabled child product becomes a variant with its own SKU, price, stock and image.
CategoriesCollectionsManual collections with the category’s products, description, image and SEO. Nested categories become separate collections.
CustomersCustomersName, email, phone, all addresses (default shipping address first), newsletter subscription. The customer group is added as a tag, for example magento-group-wholesale.
OrdersOrdersHistorical copy with line items (linked to the migrated variants by SKU), variant options, shipping, discount, tax, payment and refunds. No emails are sent to customers.
Cart price rulesDiscountsRules with a coupon become discount codes, rules without a coupon become automatic discounts: percentage, fixed amount per item or per cart, free shipping, minimum subtotal or quantity, shipping country, product and category conditions, dates and usage limits.
CMS pagesPagesTitle, content, status, SEO.
Old URLsURL redirectsProducts and categories (with the .html suffix from your store settings), CMS pages, the cart, the customer account and search redirect to their Shopify addresses.
  • Images inside descriptions and pages are copied to Shopify → Content → Files, and the links are updated, so nothing breaks when the old store goes offline.
  • Magento template tags are converted: {{media url="…"}} becomes the image address, {{store url="…"}} becomes a link; widgets and CMS blocks are removed.
  • The Magento ID of every record is saved in the magento.id metafield.
  • Disabled products are migrated as drafts. Products that are not visible individually, or not assigned to the store’s website, are migrated but not published to the Online Store.

Not migrated: themes and design, extensions and their data (blogs, reviews, reward points), bundle, grouped and gift card products, customizable options, tier and catalog prices, store views in other languages, payment, shipping and tax settings, customer passwords (customers set a new password in Shopify).


  • Magento 2.3 or newer (Magento Open Source, Adobe Commerce or Mage-OS).
  • A Magento admin user who can create integrations (System → Extensions → Integrations).
  • The store must be reachable from the internet - DataEase cannot connect to localhost or an intranet address. Keep it online until the migration finishes: images are downloaded from it.
  • Your Shopify store should use the same currency as Magento - prices are copied as-is, without conversion.

  1. In Magento admin, open System → Extensions → Integrations and click Add New Integration.
  2. Enter a name, for example DataEase, and your admin password in Your Password.
  3. Open the API tab and set Resource Access to All.
  4. Click Save, then click Activate next to the new integration and Allow.
  5. Magento shows four keys: Consumer Key, Consumer Secret, Access Token and Access Token Secret. Copy all four.

The keys only give access to the API and can be revoked at any time. DataEase only reads data - it never changes anything in Magento.

Prefer to give less access? You can select resources instead of All: stores, catalog (products, categories and inventory), customers and customer groups, sales orders, cart price rules and CMS pages. If something is missing, DataEase shows which Magento resource to add.

  1. In Shopify, open DataEase → Store transfers.
  2. Choose the From Magento tab.
  3. Enter your store address (for example https://myshop.com) and the four integration keys.
  4. Click Check connection.

DataEase shows the store name, the store view it reads from and how many records of each type the store has.

  1. Tick the data you want to move - everything found in the store is selected by default.
  2. Click Start migration.

The migration runs in the background - you can close the page. The Transfers list shows which data is being migrated right now, and you can Cancel at any moment.

When the migration finishes, the list shows how many records were migrated for each type, with warnings and errors and their reasons - for example Orders: 1250 ⚠3. Typical warnings are cart price rules with conditions Shopify does not support, or records that were already migrated earlier.


  1. Review products, collections and prices in Shopify admin.
  2. Set up payments, shipping and taxes - they are not migrated.
  3. Choose and customize a theme, then add the migrated pages and collections to the navigation menu.
  4. Connect your domain to Shopify. Old links like /joust-duffle-bag.html now redirect to /products/joust-duffle-bag.
  5. Delete the integration in Magento (System → Extensions → Integrations). DataEase deletes the keys from its own database as soon as the migration finishes.

You can run the migration again at any time - for example, right before switching the domain to pick up new orders. Existing records are updated, not duplicated:

  • products, collections, customers and pages are matched by handle or email and updated;
  • orders that were migrated before, existing discount codes, automatic discounts with the same name and existing redirects are skipped (you will see a warning with their number);
  • images already copied to Shopify Files are reused.

  • Handle: the product’s URL key, so product addresses stay recognizable.
  • Status: Enabled → Active; Disabled → Draft.
  • Prices: an active special price becomes the Shopify price, and the regular price becomes the compare-at price. Special price dates are respected at the moment of migration.
  • Stock: quantities go to your main location. Products with backorders allowed keep selling when out of stock.
  • Options: a configurable product’s attributes become options in the same order, values in the order of the attribute options. Shopify supports up to 3 options and 2048 variants per product; products with more options are skipped with a warning. Disabled child products are not migrated.
  • Tax: products with the None tax class are not taxable.
  • The short description is saved in the magento.short_description metafield.
Magento stateShopify payment statusFulfillment
Pending (new), On holdPending (or Paid, if invoiced)Unfulfilled
ProcessingPaid (or Partially paid)Unfulfilled, or Fulfilled when everything is shipped
CompletePaidFulfilled
ClosedRefunded (or Partially refunded)-
CanceledVoided-

The payment status is calculated from the amounts Magento recorded as paid and refunded. Orders with Pending payment or Payment review are not migrated. Every migrated order gets the magento tag and a magento-<status> tag (for example magento-complete), and keeps its Magento number (#000000145).

MagentoShopify
Rule with a specific couponDiscount code
Rule without a couponAutomatic discount
Percent of product price discountPercentage off
Fixed amount discountFixed amount off each eligible item
Fixed amount discount for whole cartFixed amount off the order
Free shipping (discount amount 0)Free shipping discount
Condition Subtotal equals or greater thanMinimum purchase amount
Condition Total items quantityMinimum quantity of items
Condition Shipping country (free shipping)Shipping to selected countries
Action condition SKU or CategorySpecific products or collections
Uses per coupon / Uses per customer = 1Usage limit / Limit to one use per customer
Discard subsequent rulesDoes not combine with other discounts

DataEase never makes a discount wider than it was in Magento. Rules limited to some customer groups, rules with conditions Shopify cannot express (payment method, cart attributes, combined conditions) and Buy X get Y rules are skipped with a warning - recreate them manually. Inactive rules and auto-generated coupon codes are not migrated.


MessageWhat to do
Magento rejected the integration keysCheck all four keys and make sure the integration is Active. If you re-authorized it, copy the new access token and secret.
The consumer isn’t authorized to access …Edit the integration, set Resource Access to All (or add the resource from the message) and save.
Magento REST API endpoint … was not foundCheck the store address - use the storefront address, not the admin URL.
returned a non-JSON responseA firewall, maintenance mode or a cache blocks the REST API. Allow /rest/ requests while you migrate.
must be reachable from the internetUse the public address of the store, not localhost or an internal IP.
Image … was not copiedThe image URL was not reachable. The page keeps the old link - upload the image in Content → Files manually.

Do customers get emails? No. Customers and orders are created without notifications or invitations.

Is my Magento store changed? No. DataEase only reads from it.

Are the integration keys stored? Only while the migration runs, encrypted. They are deleted when the migration finishes, fails or is cancelled.

I have several websites or store views. Which one is migrated? The default store view of the default website: its names, descriptions, prices and URLs.

Moving from WordPress or between two Shopify stores instead? See Migrate from WordPress / WooCommerce and Store transfers.