Magento → WooCommerce
Move Magento 2 products, customers, and orders into WooCommerce. The official extension talks to the Magento API and does not import passwords. Configurable products and URL maps need a pilot.
Should you make this move?
Both platforms have a case. Compare what you gain with what you give up before scheduling the cutover.
Magento
- Open-source and Adobe Commerce editions give you a deep catalog, multi-store views, and checkout you can change in code
- Core catalog, order, customer, and promotion workflows are integrated
- Hosting, upgrades, and extensions stay with your team, and a CSV export is not a running storefront
- Deep customization usually increases extension, agency, or engineering costs
WooCommerce
- Open WordPress ownership and a huge extension ecosystem allow deep store customization
- Core catalog, order, customer, and promotion workflows are integrated
- Hosting, extension compatibility, performance, and security remain the owner's responsibility
- Deep customization usually increases extension, agency, or engineering costs
WooCommerce: Open WordPress ownership and a huge extension ecosystem allow deep store customization. This removes a major source-side concern: Hosting, upgrades, and extensions stay with your team, and a CSV export is not a running storefront.
What you lose: Open-source and Adobe Commerce editions give you a deep catalog, multi-store views, and checkout you can change in code. What you inherit: Hosting, extension compatibility, performance, and security remain the owner's responsibility.
Jump to a section
Know the shape of the move.
This timeline assumes
- The source is Magento 2. WooCommerce's migration extension says it only works for Magento 2.
- You have a Magento integration token, the store URL, and an admin user for that extension.
- WordPress and WooCommerce are already installed on the destination host.
- The site already documents Magento → Shopify if you want a hosted store instead of WordPress.
What survives the move.
“Partial” and “manual” are not footnotes. They are work that must be scheduled and verified.
| Item | Outcome | Impact | What happens | Mitigation |
|---|---|---|---|---|
| Products | partial | critical | The WooCommerce extension can import all Magento products or a filtered set by title, type, category ID, product ID, or publish date. Types include simple, virtual, configurable, and grouped. You can publish them, save them as drafts, or keep the Magento status. | Run a filtered pilot of each type. Then compare SKU, price, and stock. |
| Product CSV path | partial | high | You can also export a Magento product CSV and use WooCommerce's built-in importer. Woo maps columns by name and lets you correct the ones it misses. | Use this path when you want a file you can diff. Do not mix it with a second live import of the same SKUs. |
| Customers | partial | critical | The extension can import all customers or filter by date, ID, group, name, or email. It can update customers that already exist. | Import customers before orders so order accounts can attach. |
| Passwords | lost | critical | WooCommerce's extension says passwords are not imported, because Magento APIs do not provide password data. | Tell customers to set a new password. Do not promise that old passwords will work. |
| Orders | partial | critical | The extension imports orders and lets you map Magento statuses onto WooCommerce statuses, including pending, processing, complete, closed, canceled, and fraud. | Write the status map down. Check a refunded order and an open order. |
| Configurable products | partial | critical | Magento configurable and grouped products are explicit filters in the extension. WooCommerce variable products use attributes. A blind import can flatten options. | Import one configurable product first and buy each variation. |
| Images and files | partial | high | The product CSV importer brings product fields you map. Media that lives only on the Magento server still has to be reachable, or you upload it yourself. | Open image URLs in the pilot before you shut Magento down. |
| URL rewrites | manual | critical | Neither the extension settings nor the product CSV create a full redirect map from Magento rewrites. | Export rewrites and add 301s for every path you change. Do not send them all to the home page. |
| Price rules and coupons | manual | high | Adobe exports Advanced Pricing as its own entity. Cart rules are not a WooCommerce product column. | Recreate the coupons you still honor and test a cart. |
| Extensions | lost | critical | Magento payment, shipping, and ERP modules do not run inside WordPress. | Replace each one with a WooCommerce plugin or a custom integration, and place a test order. |
| Magento export job | manual | medium | If you use CSV instead of the API extension, Adobe's export is asynchronous and needs cron. The file lands in var/export. | Wait for the file, then hash it. Do not import a partial download. |
Where each thing goes.
| Source | Destination | Method | Notes |
|---|---|---|---|
| Magento product | WooCommerce product | transform | API extension or product CSV. Pilot each product type. |
| Configurable product | Variable product | transform | Check each attribute becomes an option. |
| Customer | WordPress user | transform | Passwords do not come through the Magento API. |
| Customer group | User role or a plugin field | manual | The extension can filter by group ID. It does not document a role map. |
| Order | WooCommerce order | transform | Map statuses in the extension before the full run. |
| Order status | WooCommerce status | transform | Pending, processing, completed, cancelled, and refunded need an explicit row. |
| Advanced pricing | WooCommerce coupons or sale prices | manual | Export the rules. Rebuild the ones you still use. |
| CMS page | WordPress page | manual | Copy or import content separately from the catalog. |
| URL rewrite | Redirect | manual | Add a 301 per changed path. |
Make the move recoverable.
Create the source-of-truth backup
Keep Magento able to sell, plus files you can reimport.
- Export products, customers, addresses, and advanced pricing from Adobe's data transfer screen.
- Hash the CSVs and take a database backup.
- Write down payment, shipping, and tax settings.
- Note the integration token owner for the WooCommerce extension.
- Leave Magento online until the WooCommerce pilot passes.
Proof to capture: You can open every export, and the Magento admin still matches the row counts.
Extension import
Pull Magento 2 products, customers, and orders through WooCommerce's migration extension.
- Install the extension and save the Magento URL, integration token, and admin user.
- Filter a small product set and a few customers. Run that import on staging.
- Map order statuses, then import those orders.
- Check the import status tab. Cancel the run if counts drift.
Proof to capture: Save the input, output, command or tool settings, warnings, and final item counts.
Product CSV fallback
Load a catalog when you want a file you can edit before import.
- Export products from Magento.
- On WooCommerce, start Import and fix any column Woo did not match.
- Run the importer.
- Do not also run the API import for the same SKUs.
Proof to capture: Save the input, output, command or tool settings, warnings, and final item counts.
The things most likely to hurt.
These are operating limits. Treat every “Stop if” condition as a blocked migration, not a suggestion.
Customers cannot sign in
Accounts exist, and the old password does nothing.
- Consequence
- People abandon checkout or open support tickets.
- Mitigation
- Send a password reset note before you close Magento. Test one account.
Stop if: You told customers their passwords would keep working.
Orders have no user
Orders import before the matching customer.
- Consequence
- History is detached from the account.
- Mitigation
- Customers first, then orders.
Stop if: A pilot order has no customer.
Two imports write the same SKU
The API extension and the CSV importer both run.
- Consequence
- Duplicates or overwritten prices.
- Mitigation
- Pick one product path per SKU.
Stop if: A SKU appears twice.
Do the work in this order.
- Days 1 to 3 · inventory
Scope Magento 2
6 to 10 hours active2 to 3 days elapsedOwner picks product types waiting- Confirm the store is Magento 2.
- List product types, order statuses, and connectors.
Depends on: Magento admin and a WordPress admin
Stop / go checkpointInstall the extension?
Go when: You have an integration token and a staging WooCommerce site.
Stop when: The store is Magento 1, which this extension does not claim to support.
- Days 3 to 5 · backup
Export a safety copy
4 to 8 hours active1 to 2 days elapsedCSV export waiting- Export products, customers, and pricing.
- Back up the Magento database.
Depends on: Cron for the CSV export
Stop / go checkpointPilot?
Go when: Exports open and counts match.
Stop when: A file is missing.
- Days 5 to 15 · pilot
Filtered import
12 to 24 hours active1 to 2 weeks elapsedExtension run waiting- Import a filtered product set and a few customers.
- Map statuses and import those orders.
- Reset one password and place an order.
Depends on: Staging site
Stop / go checkpointFull import?
Go when: Variations, a reset login, and an order all look right.
Stop when: Passwords were expected to work, or a variation lost its options.
- Days 15 to 18 · cutover
Freeze and finish
6 to 12 hours active1 to 3 days elapsedFinal import waiting- Stop Magento checkout.
- Import the remaining rows.
- Turn on redirects and the new payments.
Depends on: Passed pilot
Stop / go checkpointWooCommerce sells?
Go when: One new order exists only in WooCommerce.
Stop when: Magento still captures payment.
- Days 18 to 25 · observe
Watch passwords and orders
4 to 8 hours active7 days elapsedCustomer resets waiting- Watch failed logins and payment errors.
- Keep Magento as a read-only archive.
Depends on: DNS or host cutover
Stop / go checkpointClose rollback?
Go when: A week of orders matches what shipping received.
Stop when: Orders duplicate or a top URL 404s.
Cut over with a way back.
Cutover
WooCommerce takes new orders. Magento keeps the pre-freeze history you already imported.
- Close Magento checkout.
- Run the final product, customer, and order import.
- Send password resets.
- Point the domain at WordPress and load the redirect map.
- Place one paid order on WooCommerce.
Proof to capture: The new order is in WooCommerce only. A reset account can sign in. Sample redirects respond.
Rollback
Reopen Magento without dropping WooCommerce orders from the window you were live.
- Stop WooCommerce checkout.
- Point the domain back at Magento.
- Export WooCommerce orders placed after the freeze.
- Decide which of those orders to recreate.
- Test Magento checkout again.
Proof to capture: Magento takes a new payment. Post-cutover WooCommerce orders are exported.
- Customers were told passwords would work
- Orders lack customers
- Duplicate SKUs
- A paid order on both stores
- A top URL 404s
Prove the migration worked.
Every blocking check must pass. Capture the evidence before cleanup begins.
| Pass | ID | Check | Method | Expected result | Evidence |
|---|---|---|---|---|---|
V-01Blocking | Type sample | Open one simple, one virtual, one configurable, and one grouped product. | SKU, price, and options match Magento. | Product compare sheet. | |
V-02Blocking | Count and a reset | Compare customer counts. Reset one password and sign in. | Counts match. The new password works. The old one does not. | Login test. | |
V-03Blocking | Status map | Open a pending, a complete, and a canceled order. | Each status matches the map. The customer is attached. | Order admin. | |
V-04Blocking | Gallery loads | Open ten product images on a machine that is not your office cache. | Images load from WordPress, not a Magento URL you are about to shut off. | Image check. | |
V-05Blocking | New order | Pay for one product with the live gateway. | One WooCommerce order and one capture. | Gateway receipt. | |
V-06Blocking | Changed paths | Request the old product and category URLs from the rewrite export. | 301 to the new URL, not the home page. | Redirect log. | |
V-07 | A live code | Apply one rebuilt coupon. | The cart total matches the rule you recreated. | Cart screenshot. | |
V-08Blocking | Magento is closed | Try checkout on the Magento host. | No new Magento payment. | Checkout attempt. |
Remove the scaffolding safely.
Safe after: A week of WooCommerce orders, password resets in the wild, and redirects still correct.
- Archive the Magento CSVs and the database backup.
- Remove the Magento integration token.
- Disable Magento payment webhooks.
- Keep Magento readable for the order archive.
- Cancel Magento hosting after finance agrees.
- Review coupons and redirects next quarter.
Verify against the primary material.
Platform behavior changes. Check these sources and the review dates above before executing a production migration.
- WooCommerce: migrate Magento to WooCommerceAccessed 2026-11-03
- WooCommerce: product CSV importer and exporterAccessed 2026-11-03
- Adobe Commerce: export dataAccessed 2026-11-03