Latest posts Visit blog

WooCommerce is fast to set up as a WordPress plugin and is where many merchants start. As assortments grow, B2B requirements become more complex or international scaling enters the picture, many of them reach the limits of the platform and consider a move to Shopware 6. Among the 1,000 highest-revenue B2C online shops in Germany, 11.5 percent run Shopware (Shopware). Anyone planning a switch from WooCommerce to Shopware needs to think carefully about the data model, the plugin landscape and - above all - SEO preservation. This guide walks through the five phases, the mapping and the critical levers. For how the entire switch is structured, see our Shopware migration overview.

Why shops switch from WooCommerce to Shopware

WooCommerce is fast to set up as a WordPress plugin and works well for small and mid-sized stores. As complexity grows - more products, multilingual sales channels, B2B features or headless frontends - the maintenance effort grows too: plugin stacks, hosting tuning and individual extensions on top of the WordPress theme. Shopware 6 ships with a Symfony foundation, an API-first architecture and a dedicated data model with sales channels, rule builder and shopping experiences. Both systems have their place - migration is not a verdict but a strategic decision. The market view: among the 1,000 highest-revenue B2C online shops in Germany, 11.5 percent run Shopware (Shopware), and in North America the business grew by 300 percent year over year in the first half of 2025 (Shopware). A well-planned e-commerce migration can therefore build on a platform that is established in its home market and gaining ground internationally.

CriterionWooCommerceShopware 6
ArchitectureWordPress plugin (PHP, theme-driven)Symfony, API-first, sales channels
Top 1,000 stores in GermanyPart of WordPress cluster11.5 % (Shopware)
Data modelWordPress custom post typesDedicated DB, EntityRepository, versions
B2B featuresPlugin-basedCustom-built, rule builder
Headless / APIREST/Store API via pluginsNative Admin and Store API
DACH focusGlobally broadDACH focus, language and law out of the box
Migration is a business project

Experience shows that large IT projects regularly run over budget and deliver less value than predicted. Structured consulting before the technical implementation lowers this risk.

Estimating migration effort and cost realistically

Migration budgets in e-commerce differ widely - the range runs from a manageable mid-market store to a complex enterprise stack, driven above all by catalogue depth, the number of integrations and the amount of custom logic. Project duration likewise tends to run into several months. Cutting corners increases the risk of data errors, weak SEO preparation and a botched cutover. The cutover itself - the moment when live data actually moves - takes only minutes to a few hours when prepared well: a final delta sync pulls the most recent orders and customer changes, then DNS is switched over. A short read-only window instead of a full shop stop keeps downtime low. Downtime is expensive - and the closer it falls to a campaign day, the more it costs.

ItemEffort driverNote
Platform setuplow to moderateShopware install, hosting, base config
Data cleanupdepends on data qualityDuplicates, inconsistencies, images, category tree
Custom API / ETLdepends on the gap between data modelsOrders, reviews, B2B data, migration scripts
Testingfixed block in the project planUAT, load, SEO crawl, taxes, shipping
Composable / API-firstlowers follow-up effortModular architecture lowers risk and effort

Choosing a modular, API-first architecture from day one keeps the migration effort lower, because less custom logic sits in the theme and data flows through defined interfaces instead of plugin hooks. That speaks clearly in favour of Shopware 6 with its native Admin and Store API and a clean separation between backend, storefront and integrations to ERP, PIM or marketplaces.

Data model mapping: where each entity goes

The decisive step in any WooCommerce-to-Shopware migration is mapping data structures. WooCommerce stores almost everything in WordPress custom post types and postmeta tables; Shopware 6 uses dedicated tables with versioning and the EntityRepository pattern. The overview below shows the most important entities and their target structure (Shopware Documentation):

WooCommerce sourceShopware 6 targetNote
wp-json/wc/v3/productsproduct + visibility via Sync APIVariants via parent_id and option_ids
Product categories (taxonomy)category + product_categoryMap tree into sales channel
wp-json/wc/v3/customerscustomer + customer_addressPassword hashes are not transferable
wp-json/wc/v3/ordersorder + order_line_item + transaction + deliveryState machine mapping required
wp-content/uploads (Media)media + media_folderNew media IDs, redirect old URLs via 301
Comment-type reviewproduct_review (custom importer)Skipped by Migration Assistant
Yoast / Rank Math metaseo_url, product.metaTitle/metaDescriptionMandatory for SEO preservation

Shopware ships with an official Migration Assistant (open source) that transfers master data such as products, customers, orders and categories automatically. Complex data such as B2B tier prices, subscriptions, custom fields or WordPress blogs is typically not handled cleanly and needs an individual ETL script via the Sync API. That is not a flaw - it simply tells you how much individual development is required to steer the migration.

Migrating products and variants

Products are the heart of every shop. WooCommerce knows simple products, variable products (with attributes) and product bundles - Shopware 6 structures them as a parent product with variants via parent_id and configurators with option IDs. The Shopware Sync API (/api/_action/sync) supports bulk imports in batches; it is rate-limited, so large catalogues need throttling logic in the ETL pipeline. A typical mapping for a variable product via the Sync API looks like this:

product-sync.json
{
  "write-products": {
    "entity": "product",
    "action": "upsert",
    "payload": [
      {
        "id": "a1b2c3d4e5f6...",
        "productNumber": "SKU-1001",
        "name": "Organic cotton t-shirt",
        "taxId": "19-percent-tax-id",
        "price": [
          {
            "currencyId": "euro-currency-id",
            "gross": 29.95,
            "net": 25.17,
            "linked": true
          }
        ],
        "stock": 120,
        "manufacturer": { "name": "Manufacturer Ltd." },
        "visibilities": [
          {
            "salesChannelId": "main-sales-channel-id",
            "visibility": 30
          }
        ],
        "children": [
          {
            "productNumber": "SKU-1001-M",
            "options": [{ "id": "size-m-option-id" }],
            "stock": 40
          }
        ]
      }
    ]
  }
}

Order matters: master data first (tax rates, manufacturers, property groups), then products with variants, then media, then relations such as cross-selling and reviews. If you have already worked on WooCommerce performance through caching, those insights directly support catalogue cleanup before migration.

Customers, passwords and re-activation

Customer data is sensitive and tightly bound to GDPR requirements. Addresses, orders, customer groups and wish lists can be transferred - password hashes typically cannot. WooCommerce uses PHP-Pass hashes (with WordPress's MD5 compatibility mode), Shopware 6 uses bcrypt with its own salt layout. Re-hashing in plain text is not legally permissible. The consequence: existing customers must reset their password once after the cutover.

Plan the re-activation email early

Existing customers should be informed before the cutover and guided through a password reset with a unique token via a re-activation email after go-live. Tracking activation rates, follow-up reminder mails and a clearly visible 'forgot password' flow on the new storefront typically reduce drop-off in the first two weeks significantly.

Orders and the state machine

Orders are the most complex part of the migration because they connect multiple entities: line items, transactions, deliveries and status values. WooCommerce knows statuses such as processing, on-hold, completed and refunded; Shopware 6 uses its own state machine with separate states for order, payment and delivery. Every source state must be mapped to the right target combination so reporting, dunning and the DATEV integration stay consistent. Orders that arrive shortly before or during the cutover should be caught by a read-only window or an order back-sync, so neither customers nor accounting need to maintain two systems in parallel. A clean state mapping is also the foundation for future real-time inventory sync across marketplaces.

Preserving SEO: 301 redirects are mandatory

The single most important SEO lever in any migration is a complete 301 redirect map. Without clean redirects the established addresses run into the void: instead of the old product and category pages, search engines find error pages, the accumulated link equity decays and organic traffic drops. Experience shows this is the most expensive single mistake of a migration, because it only becomes visible in the numbers weeks later. Conversely, a complete mapping of old to new addresses largely preserves the ranking of established pages. Every SEO-driven migration must include the following:

  • Complete URL map WooCommerce /produkt/{slug}/ to Shopware seo_url
  • Pagination, filters, sorting mapped (e.g. ?paged=2, ?orderby=...)
  • Images and media redirected from /wp-content/uploads/... to new media URLs
  • Feeds and sitemaps updated (Google Merchant, RSS, sitemap.xml)
  • Yoast/Rank Math meta carried into seo_url and product.metaTitle/metaDescription
  • Avoid redirect chains - more than three hops cost crawl budget and link equity
  • Search Console comparison before and after migration, 404 log analysis

Technically the 301 map can be implemented with Nginx or Apache. For large maps (well above 10,000 entries) Nginx with a separate map file is preferable, since Apache .htaccess files lose noticeable performance with many RewriteRules:

nginx-redirects.conf
# /etc/nginx/conf.d/redirects.map
map $request_uri $wc_redirect {
    default "";
    /produkt/bio-baumwoll-tshirt/ /organic-cotton-tshirt/;
    /produkt-kategorie/herren/ /men/;
    /produkt-kategorie/herren/page/2/ /men/?p=2;
    /shop/ /;
    /warenkorb/ /checkout/cart;
    /kasse/ /checkout/confirm;
    ~^/wp-content/uploads/(.+)$ /media/$1;
}

server {
    listen 443 ssl http2;
    server_name www.shop.example.com;

    if ($wc_redirect != "") {
        return 301 $wc_redirect;
    }

    # Shopware 6 reverse proxy / fastcgi
    # ...
}

Before go-live, a full SEO crawl of the old site should be compared against the new site to close gaps - more details are in our SEO audit guide for online shops. Combined with the right JSON-LD schemas the visibility in the SERP snippet stays consistent.

Plugin mapping: replacing functionality

WooCommerce owes its reach to a huge plugin ecosystem. During migration the database is not the only thing that moves - every used function needs an equivalent in Shopware 6. The following mapping covers typical functional areas (this is not a plugin recommendation list, but a technical overview):

Subscriptions

WooCommerce Subscriptions models recurring orders via custom post meta. In Shopware 6 the native subscriptions feature or a custom-developed solution takes over. Topics like subscription commerce should be approached from the data model angle.

Multilingual

WPML or Polylang are replaced in Shopware 6 by the sales-channel concept and the language entity. Languages, domains and storefronts are cleanly separated - including translatable SEO URLs.

SEO

Yoast SEO and Rank Math provide data that is imported into Shopware 6 via seo_url and product fields. For editorial content, shopping experiences or a connected headless CMS stack can take over.

Payment

Stripe, Klarna or PayPal plugins are replaced by Shopware 6 payment apps. Configuration happens centrally in the admin UI and the data model cleanly separates transaction from order.

A clean plugin inventory belongs in the very first migration phase: which plugins are productive, which are dead, which carry business logic? The inventory drives custom development effort - often the most painful part of a migration, but also the biggest opportunity to build a cleaner architecture.

Cutover strategy: minimising downtime

The cutover is the most delicate moment of the migration. A well-thought-out cutover strategy reduces risk and revenue loss. The following sequence has proven itself:

  1. Pre-cutover sync - final delta sync of orders, customers and stocks into staging.
  2. Switch frontend to read-only - WooCommerce shop stops accepting new orders, customers see a maintenance and migration notice.
  3. Final data snapshot - export complete order data, customers, reviews, custom fields and media.
  4. Final import into Shopware 6 - via Sync API in the correct order (master data, products, customers, orders, reviews).
  5. DNS switch - reduce TTL to 5-15 minutes in advance, then point to the new storefront.
  6. Activate 301 map - load the Nginx map, all old URLs redirect immediately.
  7. Live smoke tests - checkout, login, payment, shipping labels, ERP sync, customer account, search.
  8. Re-activation email - send to all existing customers with a token for password reset.
  9. Order back-sync - carry remaining WooCommerce orders into Shopware where needed.
  10. Intensified monitoring - Search Console, server logs, 404s, conversion, response times.

With professional cutover choreography the actual 'hard' downtime can typically be reduced to 1 to 4 hours, and with more decoupled architectures even close to zero. Preparation is key: without a clean plan and a tested 301 map the risk of a failed relaunch increases significantly.

Post-launch monitoring

Go-live does not end the migration - it kicks off a critical phase. The first 4 to 8 weeks decide whether visibility, conversion and performance hold up. Search Console and server logs deliver early signals about 404s, crawl errors or lost rankings; a switch to server-side tracking should happen early so conversion data stays gap-free.

Performance also deserves special attention: a migration is the perfect occasion to bring PHP performance up to date and to push Lighthouse scores - useful templates are documented in our piece on Lighthouse 100 for Shopware. KPIs such as conversion rate, average order value, time to first byte and bounce rate should be compared daily against the WooCommerce baseline. Only that comparison shows whether the migration delivers the intended effect - and where to adjust.

5-phase roadmap at a glance

A WooCommerce-to-Shopware migration can be structured in five clear phases. How long the roadmap actually runs depends on catalogue depth, integrations and internationalisation - for a mid-sized store, several months are realistic.

  1. Phase 1: Preparation (4-6 weeks) - platform audit, plugin inventory, catalogue analysis, data model mapping, full 301 redirect map, hosting concept, stakeholder workshops.
  2. Phase 2: Data migration (2-4 weeks) - staging setup, ETL scripts, Shopware Migration Assistant for master data, custom importers for B2B prices, reviews and subscriptions.
  3. Phase 3: Testing (3-4 weeks) - functional tests, UAT with business teams, load tests, checkout flows, taxes and shipping, SEO crawl comparison between old and new site.
  4. Phase 4: Cutover (24-72 hours) - read-only window, final snapshot, DNS switch, 301 map activation, order back-sync, live smoke tests, re-activation email.
  5. Phase 5: Post-launch (4-8 weeks) - monitoring of Search Console, logs and conversion, performance tuning, frontend iterations, reporting against WooCommerce baseline.
Sources and studies

This article draws on figures published by Shopware and on experience from our own migration projects. The time frames mentioned are guide values and may vary depending on the project.

Using the migration as a platform reset

A migration from WooCommerce to Shopware 6 is more than a technical move - it is the chance to upgrade data model, performance, SEO and business logic at once. Going through the five phases cleanly, documenting the mapping consistently and treating the 301 map as a first-class citizen makes it possible to switch without ranking losses and to build a future-proof platform for the years ahead. If you are planning a migration or already in the middle of one, XICTRON supports you as a WooCommerce agency and Shopware agency - from data analysis to post-launch monitoring, with a clear focus on data model, performance and SEO preservation.

The timeline depends heavily on catalogue depth, plugin stack, integrations and internationalisation; for a mid-sized store, several months are realistic. Solid consulting at the start typically delivers the most reliable estimate.

Master data such as products, categories, customers and orders can typically be transferred cleanly via the Shopware Migration Assistant. More complex data such as B2B tier prices, subscriptions, reviews or WordPress blog articles usually require an individual ETL script. Password hashes generally cannot be transferred for technical and data protection reasons.

Experience shows that the most important measure is a complete 301 redirect map for all old addresses - including pagination, filters, images and feeds. Without it, established addresses land on error pages and organic traffic drops. A complete SEO audit before and after the cutover delivers the necessary data.

Password hashes from WooCommerce typically cannot be carried over to Shopware 6 because different hashing methods are used. Existing customers are usually guided through a re-activation email with a token for password reset. Addresses, order history and customer groups generally remain fully preserved.

Smaller shops typically benefit in particular from the scalability and the DACH focus of Shopware - language, tax logic and legal requirements are geared to the home market out of the box. Whether the effort pays off economically usually depends on planned growth, internationalisation and desired B2B features. Individual consulting helps to evaluate the business case for the specific shop.

Shopware 6 typically places higher demands on PHP version, caching and database tuning than a WooCommerce setup. It is generally a good idea to align hosting with the new stack already in the preparation phase - including HTTP/2, Brotli compression and a suitable PHP OPcache configuration.