Migrating from Magento to Shopify Plus is a big move; the same goes for migrating from Salesforce or migrating from BigCommerce, but if the stack you’re coming from is Magento, the work is more about smart prep than heroics.
Magento’s EAV and customization culture mean you’ll need to flatten attributes, clean media, preserve SEO from the url_rewrite table, and rely on Shopify’s bulk GraphQL for scale.
Keep things tight: do an audit first, map the data, arrange the redirects, rebuild the checkout rules with Checkout Extensibility, and test it with a clear rollback plan.
1) Pre‑Migration Audit
Magento stores often hide logic in modules and the database, so accurate mapping depends on understanding version, schema, and extensions up front.
Magento focus points:
- Magento version and DB structure: Confirm 1.x vs 2.x because schemas and exports differ a lot due to the EAV model and table layout, which changes mapping and extraction steps.
- Custom attributes: Magento’s EAV schema usually carries many non‑core attributes; plan joins against EAV tables to extract what becomes Shopify options, tags, or metafields later.
- Media hygiene: Magento stores product media under /pub/media/catalog/product; identify broken or missing files and clean before export to keep imports fast and clean on Shopify.
- Extensions and customizations: List checkout, payment, SEO, ERP, and search modules; anything that mutates pricing, checkout, or URL behavior will likely need to be rebuilt with Shopify Functions and Checkout Extensibility.
- Tools to speed the audit:
- n98‑magerun2 to report attributes, cache, and data summaries (standard Magento 2 practice).
- Screaming Frog to crawl URLs, capture titles/meta, and build the redirect map that pairs old request_path to new handles.
What to include in the audit document:
- Different product kinds (basic, customisable, and bundle) and how alternatives are presented.
- Use attributes based on product type (which affects options vs metafields).
- URL rewrite coverage for products, categories, CMS pages (request_path → target_path).
- Media totals and missing/broken rates.
- All connections that deal with customer data, orders, inventory, shipping, and taxes.
2) Data Model Mapping (Magento → Shopify Plus)
Before Shopify, Magento's EAV needs to be flattened. Decide early which fields are first‑class options vs metafields to avoid rework.
Products and variants:
- Configurable products become one Shopify product with variants; rebuild options from Magento’s super attribute mappings so each legacy SKU maps 1:1 to a variant in Shopify.
- Attributes like color/size should become Shopify options when they define variant choices, and everything else (tech specs, compliance, bundle composition) goes to product metafields for structured retrieval.
- Bundles: Shopify doesn’t have a native bundle type; convert to a normal product, store component SKUs in a metafield, then enforce logic with an app or Shopify Functions at cart/checkout.
SEO:
- Preserve URL keys based on Magento’s url_rewrite mechanics: request_path (public URL) maps to target_path (internal), which is the backbone for exact‑match 301s and handle planning.
- Carry meta titles, descriptions, and canonical tags into Shopify’s SEO fields or metafields for parity.
Customers:
- Export core profile data from customer_entity and addresses from customer_address_entity, then map to Shopify customer records and address objects.
- Passwords won’t import; Magento uses salted hashes and Shopify won’t accept them, so plan a launch‑day password reset campaign to keep accounts secure.
Orders:
- Import old orders, map Magento's increment_id to a Shopify order metafield like source_order_id for support and reconciliation, and keep the payload's created_at, status, and all line items.
3) Migration Tools & APIs
Choose the option that best suits the size and complexity of the catalog.
Smaller catalogs:
CSV files can be used to exchange orders, products, versions, customers, and other information using tools like Matrixify or Cart2Cart. They are very simple and easy to set up.
Enterprise catalogs:
Make an ETL that gets data from Magento SQL or REST, changes it to the Shopify schema, and then loads it over the Shopify GraphQL Admin API using bulk operations to make it bigger.
Bulk operations:
Use bulkOperationRunMutation to import millions of records asynchronously with a JSONL payload; it runs server‑side and doesn’t consume standard per‑request rate limits.
Limits and sequencing:
Only one bulk operation of each type can run at a time per shop, and a bulk import must finish within 24 hours, reduce input size or split jobs if needed.
Use currentBulkOperation to track progress or subscribe to the bulk_operations/finish webhook for a clean handoff between jobs.
Some processes cannot be bulked; plan separate flows for these, and keep an eye on Shopify's daily variant generation limits after the initial allowance when seeding at scale.
Media and files:
- Reserve upload targets with stagedUploadsCreate, then POST the form with parameters before the file, and finally attach to products/files with the appropriate mutations; Shopify enforces a 20MB per‑file guidance on staged uploads.
- When moving a lot of product images, stage first, upload, then link in productUpdate/productUpdateMedia for reliable attachment at volume.
Rate limits and efficiency:
- GraphQL uses a cost‑based budget that replenishes continuously; prefer bulk for large writes, keep non‑bulk mutations lean, and include clientMutationId to make retries idempotent.
4) SEO & Redirect Strategy
Keep organic traffic steady by preserving URLs and mapping every change.
- Extract request_path → target_path from Magento’s url_rewrite table; this is your master redirect source and the most accurate reflection of public URLs in use.
- Import exact-match 301s via CSV into Shopify's URL Redirects section to ensure that old URLs correctly refer to the new structure.
- After you've successfully launched, verify old URLs so that you know the 301s are working, and keep an eye out for 404s in Search Console. Fill up any gaps with incremental redirect uploads until the logs are clear.
Migrating from Magento (Adobe Commerce) to Shopify Plus requires careful planning to preserve data integrity, SEO, and customer experience. Working with a trusted Shopify Plus development company helps streamline the process, ensuring a seamless transition that supports long-term growth.
5) Checkout & Custom Logic
Rebuild Magento’s checkout customizations using Shopify’s upgrade‑safe stack.
- Use Checkout Extensibility with Shopify Functions to add fields, validations, promotions, and business rules to your store without changing the checkout process. This will make it easier for you in the future when you need to update.
- Instead of creating your own shipping and payment modules, use Shopify's supported gateways and carrier integrations. For edge circumstances, use private applications or custom integrations with GraphQL and webhooks.
- Store structured logic inputs in metafields or metaobjects so storefront and functions can read them predictably at runtime.
6) Testing & Go‑Live
Test like it’s production, then launch during a quiet window with a clean fallback.
Test matrix:
- Configurable → variant mapping: SKUs, options, pricing, inventory, and media match legacy expectations on a product‑by‑product basis.
- Tax and shipping: The totals are the same as Magento's for representative carts in all regions, methods, and classes.
- Integrations: Orders, inventory, and status updates flow to ERP and back cleanly; confirm webhooks and batch jobs.
- SEO: Old URLs should 301 successfully, canonicals should be defined, and no major 404 errors should be encountered during validation crawls.
Go‑live and rollback:
- If something goes wrong during the cutover, keep the Magento site live on a subdomain so you can switch back to DNS. For the first 48 hours, keep a tight eye on logs and metrics.
Budgets:
- For budgeting and approvals, plan on Shopify Plus pricing is about $2,300/month on a 3‑year term or $2,500/month on a 1‑year term, with variable fees if your revenue is higher or the setup is complex.
Practical tips that save time
Sort out attributes early. Before you start moving data, decide which fields will be regular product options and which will be metafields. Lock this choice into your mapping sheet so you don’t have to redo work later.
Before you upload your media, make sure it's clean. Check for broken picture links and delete any files in /pub/media/catalog/product that you don't need. This helps the import process go smoothly and stops uploads from failing.
For big jobs, use bulk imports. First, stage your media, then construct products and variants, add metafields, attach the media, publish the goods, and only go on after the job is done.
Know what you can handle. If you have a lot of data, split it up into smaller files so that each bulk upload may be done in less than 24 hours. Plan your batches so that they fit inside the daily restrictions for making variants.
What “done right” looks like
Products and variants are clean: Old configurable products from Magento are now single Shopify products with the right options, every SKU matches up, and images are properly linked after upload.
Customer data is ready: All profiles and addresses are brought in, and on launch day, an email will be sent to reset passwords because they can't be moved over from Magento.
Orders are complete: Past orders are fully migrated with their original order numbers, dates, and statuses, so your reports and support history stay accurate.
SEO is safe: All of the previous Magento URLs go to the proper pages on Shopify, there are no broken links, and search rankings remain the same.
The checkout process is working fine: Shopify's Checkout Extensibility and Functions were used to recreate any extra fields, rules, or promotions so that future updates won't damage anything.
Launch is smooth: The store goes live when traffic is low, the old site stays on a subdomain just in case, and you’re actively watching for issues so they can be fixed fast.
Handling very large catalogs
- Bulk all the things: Use bulkOperationRunMutation for productCreate/productUpdate/productVariantsBulk* and metafieldsSet with JSONL payloads staged via stagedUploadsCreate to move fast within Shopify’s constraints.
- Sequence cleanly: Only one bulk op of each type at a time, and each job must complete within 24 hours. Break files down by category, brand, or ID ranges to stay inside limits and make retries simpler.
- Be mindful of caps: After the initial allowance, stores can be subject to daily variant‑creation thresholds in apps or API flows; schedule creation batches accordingly and lean on bulk updates for the rest.
Following this flow keeps migrating from Salesforce to Shopify Plus grounded and predictable, even when Magento’s EAV and custom modules make things look messy at first. Plan the mapping, extract cleanly, use Shopify’s bulk GraphQL and staged uploads for speed, preserve SEO with exact 301s from url_rewrite, and rebuild checkout with Functions so it stays upgrade‑safe over time.
Faster, Sell Smarter: Live with Shopify on Aug 29
Legacy platforms can’t keep up with today’s speed, personalization, and scalability demands.
On August 29, join us live with Shopify to discuss:
- The forces driving fast B2B digital transformation
- How modern platforms boost agility and efficiency
- Real examples of B2B growth with future‑ready tech
Speakers:
Rahul Maheshwari – CEO, Reveation Labs
Hayward Peirce – Solutions Engineer, Shopify
Details:
LinkedIn Live | August 29, 2025 | 1 PM EST, Register here.
A practical conversation with insights you can apply to your B2B growth strategy immediately
FAQs
1. How do I convert Magento's customizable products to Shopify Plus?
Rebuild them as one Shopify product with variants. Map each old SKU to a variant, keep options like size or color as Shopify options, and put extra details in product metafields.
2. How do I keep my SEO when switching from Magento?
Magento allows you to export your previous URLs and where they point. Add them to Shopify as 301 redirects. Put them on Shopify as 301 redirects. After the launch, do a crawl and look in Google Search Console for any pages that are missing.
3. When should I use bulk GraphQL instead of CSV?
Use bulk GraphQL for big catalogs or when you want repeatable, reliable imports. Upload a JSONL file, run the bulk operation, and wait for it to finish before starting the next job.
4. Can Reveation Labs help with all of this?
Yes. We can set up the data, import it, handle redirection, change the checkout, and keep an eye on the site when it goes live to fix any problems fast.





