← All playbooks
Commerce migration

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.

Typical timeline4 to 12 weeks40 to 90 hours active work
Statusneeds review
Source profileWooCommerce product CSV docs reviewed 2026-11-03
Destination profileAdobe Commerce import docs reviewed 2026-11-03
Documentation date
Review window
Evidence3 sources
This route needs review.Use it as a planning baseline, then verify the dated sources and test with representative data before production.
Before you migrate

Should you make this move?

Both platforms have a case. Compare what you gain with what you give up before scheduling the cutover.

Current platform

WooCommerce

Reasons to stay
  • Open WordPress ownership and a huge extension ecosystem allow deep store customization
  • Core catalog, order, customer, and promotion workflows are integrated
Reasons to leave
  • Hosting, extension compatibility, performance, and security remain the owner's responsibility
  • Deep customization usually increases extension, agency, or engineering costs
New platform

Magento

What gets better
  • 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
What gets worse
  • 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
Best of the move

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.

Worst of the move

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
01At a glance

Know the shape of the move.

Transfer outcome11 features audited
Transfer outcome distributionClean transfer: 0, Partial transfer: 3, Manual rebuild: 7, Not transferred: 1.
Clean0
Partial3
Manual7
Lost1
Mapping route9 of 9 fields have a destination path

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.
02What transfers

What survives the move.

“Partial” and “manual” are not footnotes. They are work that must be scheduled and verified.

ItemOutcomeImpactWhat happensMitigation
ProductspartialcriticalWooCommerce 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 behaviormanualcriticalAdd/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 encodingmanualhighAdobe 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 keyspartialcriticalIf 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.
ImagesmanualhighImage 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.
CustomersmanualcriticalAdobe 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.
OrdersmanualcriticalThe 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 productsmanualmediumThey 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 checkoutlostcriticalWooCommerce payment, subscription, and shipping plugins do not run on Magento.Reinstall gateways on Magento and capture a test payment.
WordPress contentpartialmediumTools 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.
PasswordsmanualhighA 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.
03Field and feature mapping

Where each thing goes.

SourceDestinationMethodNotes
WooCommerce product CSVAdobe product importtransformMatch the sample headings. SKU is the key.
Product categorycategories columnmanualIncluding this column rebuilds URL rewrites for every row in the file.
Product imageImage path or URLmanualFiles go under var/import/images on 2.3.2 and later.
Variable productConfigurable producttransformPilot one product with two attributes.
WordPress userCustomers Main FiletransformBuild the CSV from Adobe's sample. Do not import the WXR here.
Customer addressCustomer AddressestransformSeparate entity type in Adobe's importer.
WooCommerce orderMagento ordermanualNot in the product CSV. Use a tested order load.
CouponCart price rulemanualRecreate codes and test a cart.
Permalinkurl_key and a redirectmanualOmit url_key from the file unless you are changing it.
04Before you begin

Make the move recoverable.

Backup procedure

Create the source-of-truth backup

Keep WooCommerce selling and keep every file you transformed.

  1. Export the WooCommerce product CSV and a full WordPress WXR.
  2. Export orders with the store's order tools and hash that file.
  3. Download Adobe's sample CSVs and keep the mapped files next to them.
  4. Snapshot the Magento database before the first Replace or Delete.
  5. 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.

Transformation · WooCommerce product CSV export and Adobe's sample file

Product file

Make a WooCommerce export that Adobe's Check Data will accept.

  1. Export the columns you need from WooCommerce.
  2. Download the product sample from System > Data Transfer > Import.
  3. Rename and fill headings so they match the sample. Drop categories and url_key if you are not changing them.
  4. 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.

Transformation · Adobe customer sample CSV

Customer file

Load accounts without feeding Adobe a WordPress WXR.

  1. Download the Customers and Addresses sample.
  2. Fill it from your user export. Leave password blank unless you have tested that hash.
  3. Check Data, then import on staging.
  4. Reset one password and sign in.

Proof to capture: Save the input, output, command or tool settings, warnings, and final item counts.

05Handle with care

The things most likely to hurt.

These are operating limits. Treat every “Stop if” condition as a blocked migration, not a suggestion.

Pilot

Replace wipes the catalog

criticalpossible likelihood

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.

Pilot

Category column rebuilds every URL

highpossible likelihood

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.

Cutover

Orders never leave WooCommerce

criticallikely likelihood

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.

06Precise timeline

Do the work in this order.

Estimate forA WooCommerce catalog you can export as CSV, plus customers and orders you will map by hand or with a script
Total elapsed4 to 12 weeks
Active work40 to 90 hours
BufferStaylime's Spectrum Boutique project ran about seven months including a new theme. The customer and product data move itself took them two weeks, then a catalog mistake forced a restore.
01
Days 1 to 4List what CSV cannot carry2 to 4 days
02
Days 4 to 7Export WooCommerce2 to 3 days
03
Days 7 to 25Check Data on a slice2 to 4 weeks
04
Days 25 to 30Final file and DNS2 to 4 days
05
Days 30 to 40Watch rewrites and orders7 days
  1. 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 checkpoint

    Map files?

    Go when: Orders have an owner even though they are outside the product CSV.

    Stop when: Nobody can export orders.

  2. 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 checkpoint

    Build the Adobe file?

    Go when: Hashes and counts exist.

    Stop when: The order export is empty.

  3. 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 checkpoint

    Full 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.

  4. 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 checkpoint

    Magento sells?

    Go when: The new order is only in Magento.

    Stop when: Check Data fails on the final file.

  5. 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 checkpoint

    Close rollback?

    Go when: A week of orders and the top URLs behave.

    Stop when: You need the pre-import Magento snapshot.

07The point of change

Cut over with a way back.

Go live

Cutover

Magento has the catalog and the order history you promised, and WooCommerce is not taking new payment.

Recommended window: A morning when you can restore the Magento snapshot if Check Data was wrong.

  1. Stop WooCommerce checkout.
  2. Export the final product and order delta.
  3. Run Check Data, then Add/Update.
  4. Switch DNS and test one payment.
  5. Keep the WooCommerce database online.

Proof to capture: Check Data passed on the final file. One new Magento order exists. WooCommerce checkout is off.

Return to safety

Rollback

Return the domain to WooCommerce and drop a bad Magento import using the snapshot.

Deadline: Before you delete the WooCommerce database or the Magento snapshot.

  1. Stop Magento checkout.
  2. Point DNS back at WooCommerce.
  3. Restore the Magento snapshot if Replace or a bad categories file ran.
  4. Export any Magento orders from the live window.
  5. Smoke-test WooCommerce checkout.

Proof to capture: WooCommerce takes payment. Magento is either restored or clearly marked unused.

Rollback immediately when
  • 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
08Verification report

Prove the migration worked.

Every blocking check must pass. Capture the evidence before cleanup begins.

0%
Interactive report preview0 / 8 checks passed
PassIDCheckMethodExpected resultEvidence
V-01BlockingCheck DataRun Check Data on the final product file.Adobe reports the file as valid.Validation message.
V-02BlockingNo duplicatesCount SKUs in Magento and in the CSV.One row per SKU you meant to update. Add/Update did not create twins.SKU count.
V-03BlockingRewrite scopeConfirm 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-04BlockingImport directoryOpen ten products.Images load from the Magento path you uploaded.Storefront check.
V-05BlockingSample accountsSign in with a reset pilot account and open another five profiles.Email and addresses match the customer file.Account test.
V-06BlockingHistory sampleCompare 20 order numbers to the WooCommerce export.Totals and emails match.Order sheet.
V-07BlockingNew capturePlace an order on Magento.One capture on the new gateway.Receipt.
V-08BlockingSnapshot existsConfirm the pre-import Magento snapshot restores on a spare database.A restore test has been done, not just a file saved.Restore log.
09Post-migration cleanup

Remove the scaffolding safely.

Safe after: A week of Magento orders and a restore test you hope not to need.

  1. Archive the WooCommerce CSV, WXR, and order export.
  2. Store the Magento import history file. Adobe keeps it under var/import_history.
  3. Revoke temporary Magento admin users.
  4. Keep WooCommerce read-only until finance accepts order history.
  5. Cancel WordPress hosting after that.
  6. Review URL rewrites after the first search-console week.
Sources and evidence

Verify against the primary material.

Platform behavior changes. Check these sources and the review dates above before executing a production migration.

  1. WooCommerce: product CSV importer and exporterAccessed 2026-11-03
  2. Adobe Commerce: import dataAccessed 2026-11-03
  3. WordPress: Tools Export screenAccessed 2026-11-03