WooCommerce → Magento
Load WooCommerce products into Magento or Adobe Commerce with a CSV shaped like Adobe's sample file. Orders and customers are a separate export. Check Data before you import, and treat Replace as destructive.
Should you make this move?
Both platforms have a case. Compare what you gain with what you give up before scheduling the cutover.
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
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
Magento: Open-source and Adobe Commerce editions give you a deep catalog, multi-store views, and checkout you can change in code. This removes a major source-side concern: Hosting, extension compatibility, performance, and security remain the owner's responsibility.
What you lose: Open WordPress ownership and a huge extension ecosystem allow deep store customization. What you inherit: Hosting, upgrades, and extensions stay with your team, and a CSV export is not a running storefront.
Jump to a section
Know the shape of the move.
This timeline assumes
- You are moving onto Magento Open Source or Adobe Commerce, with admin access and room under the PHP upload limit.
- WooCommerce stays up until a Magento pilot can take an order.
- You can reshape a WooCommerce product CSV to match Adobe's sample headings.
- The site already documents Magento → WooCommerce if you are weighing the opposite move.
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 | WooCommerce can export the catalog to CSV, including selected columns, types, and categories. Adobe imports products, advanced pricing, and images when the headings match a sample file. SKU is the identity. Add/Update can change every product field except SKU. | Download Adobe's sample, map headings, and run Check Data on a slice first. |
| Import behavior | manual | critical | Add/Update merges into existing rows. Replace clears existing product data and loses references. Delete removes entities and ignores every column except SKU. A file of only invalid rows is rejected. | Use Add/Update on a staging database. Do not use Replace until you mean to wipe products. |
| File size and encoding | manual | high | Adobe says the import limit comes from php.ini and shows it on the Import page. The default it documents is 2 MB. UTF-8 files with a BOM can fail. Special characters need the Fields Enclosure option. | Split files under the limit. Save CSV as UTF-8 without a BOM. |
| Categories and URL keys | partial | critical | If the categories or url_key column is present, Adobe regenerates URL rewrites for every product in the file. That can time out on a large catalog. New categories in the file are created. Add/Update does not remove multi-value fields you simply left off the row. | Omit categories and url_key unless you intend to change them. Put redirects in place for keys you do change. |
| Images | manual | high | Image files must already be on the server or reachable by URL. Since 2.3.2, Images File Directory is appended to var/import/images. | Upload the pilot images first, then Check Data. |
| Customers | manual | critical | Adobe imports Customers Main File, Customer Addresses, and Customers and Addresses as their own entity types. WooCommerce's product CSV does not contain them. WordPress Tools Export includes users in a WXR file, which is not an Adobe customer CSV. | Build a customer CSV from the Adobe sample. Import it after you know the column names. |
| Orders | manual | critical | The product CSV and the WXR export do not load WooCommerce orders into Magento. Order history needs its own extract and a Magento import path you test. | Export orders before you cancel WooCommerce. Reconcile a week of them on staging. |
| Reviews and related products | manual | medium | They are not columns in the WooCommerce product CSV export described by Woo. An agency moving Spectrum Boutique wrote extra code so reviews and a related-products block survived. | Decide if reviews are in scope. If they are, map them in a pilot before launch day. |
| Plugins and checkout | lost | critical | WooCommerce payment, subscription, and shipping plugins do not run on Magento. | Reinstall gateways on Magento and capture a test payment. |
| WordPress content | partial | medium | Tools Export writes posts, pages, comments, custom fields, categories, tags, custom taxonomies, users, and menus to WXR. That file is for WordPress import, not Adobe's product importer. | Rebuild the pages you still need, or transform the WXR in a separate pass. |
| Passwords | manual | high | A WXR user list is not a Magento password import. Plan a reset unless you have tested a hash your Magento version accepts. | Reset a pilot account before you email the whole list. |
Where each thing goes.
| Source | Destination | Method | Notes |
|---|---|---|---|
| WooCommerce product CSV | Adobe product import | transform | Match the sample headings. SKU is the key. |
| Product category | categories column | manual | Including this column rebuilds URL rewrites for every row in the file. |
| Product image | Image path or URL | manual | Files go under var/import/images on 2.3.2 and later. |
| Variable product | Configurable product | transform | Pilot one product with two attributes. |
| WordPress user | Customers Main File | transform | Build the CSV from Adobe's sample. Do not import the WXR here. |
| Customer address | Customer Addresses | transform | Separate entity type in Adobe's importer. |
| WooCommerce order | Magento order | manual | Not in the product CSV. Use a tested order load. |
| Coupon | Cart price rule | manual | Recreate codes and test a cart. |
| Permalink | url_key and a redirect | manual | Omit url_key from the file unless you are changing it. |
Make the move recoverable.
Create the source-of-truth backup
Keep WooCommerce selling and keep every file you transformed.
- Export the WooCommerce product CSV and a full WordPress WXR.
- Export orders with the store's order tools and hash that file.
- Download Adobe's sample CSVs and keep the mapped files next to them.
- Snapshot the Magento database before the first Replace or Delete.
- Leave WooCommerce on its host through the rollback window.
Proof to capture: Product, customer, and order files each have a count and a hash. Magento has a snapshot from before import.
Product file
Make a WooCommerce export that Adobe's Check Data will accept.
- Export the columns you need from WooCommerce.
- Download the product sample from System > Data Transfer > Import.
- Rename and fill headings so they match the sample. Drop categories and url_key if you are not changing them.
- Click Check Data. Import only after the validation message is clean.
Proof to capture: Save the input, output, command or tool settings, warnings, and final item counts.
Customer file
Load accounts without feeding Adobe a WordPress WXR.
- Download the Customers and Addresses sample.
- Fill it from your user export. Leave password blank unless you have tested that hash.
- Check Data, then import on staging.
- Reset one password and sign in.
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.
Replace wipes the catalog
Import Behavior is set to Replace.
- Consequence
- Adobe clears existing product data and the references that pointed at it.
- Mitigation
- Use Add/Update until you have a snapshot and a reason to wipe.
Stop if: Replace is selected on a database you have not snapshotted.
Category column rebuilds every URL
categories or url_key is in a large file by habit.
- Consequence
- Adobe regenerates rewrites for every product and the import can time out.
- Mitigation
- Omit those columns unless the pilot is about changing them.
Stop if: Check Data or the import hangs on a file that did not need new categories.
Orders never leave WooCommerce
The product import succeeded, so the team cancels WordPress.
- Consequence
- Order history is gone with the old database.
- Mitigation
- Export orders and prove a sample on Magento first.
Stop if: You cannot open last month's orders on Magento.
Do the work in this order.
- Days 1 to 4 · inventory
List what CSV cannot carry
6 to 12 hours active2 to 4 days elapsedOwner scope waiting- Separate products, customers, orders, reviews, and plugins.
- Read the PHP upload limit on the Magento server.
Depends on: WooCommerce admin and Magento admin
Stop / go checkpointMap files?
Go when: Orders have an owner even though they are outside the product CSV.
Stop when: Nobody can export orders.
- Days 4 to 7 · backup
Export WooCommerce
5 to 10 hours active2 to 3 days elapsedCSV and WXR downloads waiting- Export products, WXR, and orders.
- Snapshot Magento.
Depends on: Inventory
Stop / go checkpointBuild the Adobe file?
Go when: Hashes and counts exist.
Stop when: The order export is empty.
- Days 7 to 25 · pilot
Check Data on a slice
16 to 40 hours active2 to 4 weeks elapsedTheme and gateway work waiting- Map a small product file and run Check Data.
- Import customers on staging.
- Load a week of orders and one payment.
Depends on: Snapshot
Stop / go checkpointFull catalog?
Go when: Check Data is clean and a configurable product can be bought.
Stop when: Replace was required to make the file load, or images 404.
- Days 25 to 30 · cutover
Final file and DNS
8 to 16 hours active2 to 4 days elapsedImport and DNS waiting- Freeze WooCommerce.
- Import the final Add/Update file.
- Switch the domain.
Depends on: Passed pilot
Stop / go checkpointMagento sells?
Go when: The new order is only in Magento.
Stop when: Check Data fails on the final file.
- Days 30 to 40 · observe
Watch rewrites and orders
4 to 8 hours active7 days elapsedSearch and support waiting- Sample old URLs.
- Compare order counts with WooCommerce's frozen export.
Depends on: DNS
Stop / go checkpointClose rollback?
Go when: A week of orders and the top URLs behave.
Stop when: You need the pre-import Magento snapshot.
Cut over with a way back.
Cutover
Magento has the catalog and the order history you promised, and WooCommerce is not taking new payment.
- Stop WooCommerce checkout.
- Export the final product and order delta.
- Run Check Data, then Add/Update.
- Switch DNS and test one payment.
- Keep the WooCommerce database online.
Proof to capture: Check Data passed on the final file. One new Magento order exists. WooCommerce checkout is off.
Rollback
Return the domain to WooCommerce and drop a bad Magento import using the snapshot.
- Stop Magento checkout.
- Point DNS back at WooCommerce.
- Restore the Magento snapshot if Replace or a bad categories file ran.
- Export any Magento orders from the live window.
- Smoke-test WooCommerce checkout.
Proof to capture: WooCommerce takes payment. Magento is either restored or clearly marked unused.
- Check Data failed and someone imported anyway
- Replace ran on the production catalog
- URL rewrites timed out or 404
- Orders are missing
- Images point at files you did not upload
Prove the migration worked.
Every blocking check must pass. Capture the evidence before cleanup begins.
| Pass | ID | Check | Method | Expected result | Evidence |
|---|---|---|---|---|---|
V-01Blocking | Check Data | Run Check Data on the final product file. | Adobe reports the file as valid. | Validation message. | |
V-02Blocking | No duplicates | Count SKUs in Magento and in the CSV. | One row per SKU you meant to update. Add/Update did not create twins. | SKU count. | |
V-03Blocking | Rewrite scope | Confirm whether categories and url_key were in the file. | They were omitted, or the redirect list covers every key you changed. | Column list and redirect sample. | |
V-04Blocking | Import directory | Open ten products. | Images load from the Magento path you uploaded. | Storefront check. | |
V-05Blocking | Sample accounts | Sign in with a reset pilot account and open another five profiles. | Email and addresses match the customer file. | Account test. | |
V-06Blocking | History sample | Compare 20 order numbers to the WooCommerce export. | Totals and emails match. | Order sheet. | |
V-07Blocking | New capture | Place an order on Magento. | One capture on the new gateway. | Receipt. | |
V-08Blocking | Snapshot exists | Confirm the pre-import Magento snapshot restores on a spare database. | A restore test has been done, not just a file saved. | Restore log. |
Remove the scaffolding safely.
Safe after: A week of Magento orders and a restore test you hope not to need.
- Archive the WooCommerce CSV, WXR, and order export.
- Store the Magento import history file. Adobe keeps it under var/import_history.
- Revoke temporary Magento admin users.
- Keep WooCommerce read-only until finance accepts order history.
- Cancel WordPress hosting after that.
- Review URL rewrites after the first search-console week.
Verify against the primary material.
Platform behavior changes. Check these sources and the review dates above before executing a production migration.
- WooCommerce: product CSV importer and exporterAccessed 2026-11-03
- Adobe Commerce: import dataAccessed 2026-11-03
- WordPress: Tools Export screenAccessed 2026-11-03