Shopware migration
Migrating from Shopware to Shopify without losing rankings
Migration & replatforming · Updated
In short
A Shopware to Shopify migration keeps its rankings when every old URL points to exactly one new destination with a 301, when the product data model is decided rather than rebuilt, and when the cutover lands in a low-traffic window. Most of the effort sits not in the import but where Shopware allows more freedom than Shopify.
This guide covers the redirect concept, data model differences, sequencing and cutover for a move from Shopware 5 or 6 to Shopify; theme development, payment selection and legal topics stay out of scope.
Contents
- What actually changes when you move from Shopware to Shopify?
- Which URL patterns do you have to map during the move?
- How do you build a redirect concept that holds rankings?
- Where does the product data model differ from Shopware?
- How do you carry over customer groups and volume pricing?
- How do you handle multiple languages and countries?
- What does not translate one to one on Shopify
- In what order do you work through the migration?
- What do you watch at cutover and in the days after?
What actually changes when you move from Shopware to Shopify?
Shopware runs on your own infrastructure: your server, your database, direct access to every template line and every plugin. Shopify is hosted and does not give you that access. The move therefore does not simply swap one storefront for another, it shifts the line between what you configure and what you write yourself.
The catalog itself almost always travels well. Products, prices, images, categories and customer accounts can be exported and read back in. The hard parts are the places where Shopware gained logic through plugins or custom templates: configurators, pricing rules, B2B approvals, extra fields inside the ordering flow.
Three things drive visibility: every indexed address keeping a destination, the destination genuinely answering the same question, and the new page being served cleanly. Shopify handles the technical side, but it imposes a fixed path scheme that you cannot rename at will.
Which URL patterns do you have to map during the move?
Shopware has two layers of addresses: the technical routes and the SEO URLs layered on top. In Shopware 5 products run technically through a detail path with an article ID, in Shopware 6 through a detail path with a product ID. Both systems also generate readable addresses that are flat or carry a category path, depending on configuration.
Shopify files every product under a product prefix and every category under a collection prefix. Those prefixes are fixed. A flat Shopware address without a prefix cannot be reproduced in Shopify, so it inevitably becomes a new address. That is exactly why the redirect list is part of this migration rather than cleanup afterwards.
Collect addresses from several sources, not just the sitemap: Search Console, server logs, your analytics tool and the SEO URL table in the Shopware database. Only the combination reveals which old technical routes are still being called and which addresses from earlier rebuilds still carry external links.
| Content type | Pattern in Shopware | Destination in Shopify | Status |
|---|---|---|---|
| Product, technical route | detail path with article or product ID | product page under the product prefix | 301 |
| Product, SEO URL | flat path or path including the category | product page under the product prefix | 301 |
| Category | listing or navigation route with ID | collection under the collection prefix | 301 |
| Editorial page | custom path from the shop pages module | page under the pages prefix | 301 |
| Blog post | blog path with post ID or title | article inside the Shopify blog | 301 |
| Discontinued product | old product address | closest product or matching collection | 301 |
| Filter and sorting view | parameters on the category address | collection without parameters | 301 or 404 |
How do you build a redirect concept that holds rankings?
A workable concept answers one question per old address: which new page serves the same intent. Where no such page exists, the next best answer is the matching collection, not the homepage. Bulk redirects to the homepage are treated as a soft error by search engines and pass no signals along.
Redirects are set as permanent, meaning status code 301. Chains and loops are the most common failure: if an old address points to an intermediate address first and only then to the final destination, you waste crawl budget and risk the chain breaking during a later rebuild. Resolve every chain before the cutover.
Shopify keeps redirects as a list of paths that you can import from a file. Two limits are worth knowing early: addresses that differ only by query parameters cannot be separated reliably that way, and the list applies to the domain pointing at Shopify. Old subdomains need their own rule in front of it.
Order of work for the redirect list
- Merge every indexed and linked address from sitemap, logs, Search Console and analytics
- Group by content type: product, category, page, blog, file, parameter view
- Define one rule per group, then maintain only the exceptions individually
- Validate destinations against the finished Shopify catalog so nothing points nowhere
- Resolve chains so each old address reaches its final destination in one hop
- Test the list on the staging domain and release it only afterwards for the cutover
Where does the product data model differ from Shopware?
Shopware separates filterable properties, custom fields for everything else, and variants that can be built from any number of characteristics. Shopify has options, variants and metafields. Mapping between them is therefore not a translation but a series of decisions about what becomes a variant and what stays information on the product.
The hardest limit is the option dimensions: Shopify allows at most three per product. An assortment with color, size, material and finish will not fit without restructuring. The usual answer is to turn the weakest characteristic into separate products and link them in the theme. That is a decision with consequences for navigation and reporting.
Properties move into Shopify as metafields with a clean definition. They only become filterable once they are also set up as filters. Use the migration as a chance to review the stock: in grown Shopware catalogs, many properties are used exactly once and carry neither a filter nor a display.
| Element in Shopware | Equivalent in Shopify | Decision you have to make |
|---|---|---|
| Properties and filter values | metafields plus configured filters | Which property filters, which only informs |
| Variants across many characteristics | at most three option dimensions | Which characteristic becomes its own product |
| Variant configurator | app or custom builder inside the theme | Whether the configurator survives the move |
| Customer groups | company profiles and catalogs in B2B | Whether the store has to run on Plus |
| Volume pricing tiers | quantity rules inside a catalog | Which tiers stay and which are dropped |
| Custom and free text fields | metafields with a fixed definition | Which fields are maintained editorially |
| Subshops and languages | markets, languages and domains | Which domain and path structure applies |
How do you carry over customer groups and volume pricing?
In Shopware, prices often hang off customer groups, and tiers sit as rules on the product. Shopify solves this differently: prices for specific buyers come from catalogs assigned to a company profile. That is cleaner to maintain, but it is a different model — a customer group is no longer a field on the customer, it is an assignment.
These B2B features belong to Shopify Plus. Anyone running a handful of customer groups on stock Shopware today faces a real decision: move up the plan, model the pricing logic through an app, or deliberately keep the B2B business outside the storefront. All three are defensible, but they cost different things.
Work out early how many price variations are genuinely in use. Grown Shopware installations often still carry groups nobody has touched for years. A migration is the best moment to shorten that list, because every group you carry across later has to be maintained and tested as its own catalog.
How do you handle multiple languages and countries?
Shopware works with sales channels and subshops that can each have their own language, currency and sometimes their own catalog. Shopify bundles this into markets: a market defines which countries, currencies and languages belong together, and the theme decides how language and region appear in the address.
The practical difference sits in the catalog. If your Shopware subshops carry different assortments, you have to decide whether to model that through market catalogs in Shopify or through separate stores. Separate stores give more freedom and cost more upkeep; one store with markets keeps the data together but demands discipline around visibility.
For visibility, what matters is that language versions reference each other cleanly and that the redirect list differs per language path. A German product page must not point to the English version just because that destination was found there first. Check this mapping per language, not once for the main catalog.
What does not translate one to one on Shopify
The checkout belongs to Shopify. You can extend it, but you cannot build it freely, and the deeper extension options require Plus. If you added steps, fields or approvals to the ordering flow in Shopware, review each of those additions before migrating and ask whether it is still needed or merely a habit.
The address structure is fixed as well. Product and collection prefixes cannot be removed, and a fully free path hierarchy across several category levels is not part of the Shopify standard. None of that harms visibility as long as the redirects are right, but it is something you should know beforehand and decide once.
The honest way to handle these limits is to name them before the project rather than rebuild around them later. Each case has three answers: solve it differently within the standard, rebuild it through an app or custom extension, or drop the process. The third answer is right more often than it sounds at kickoff.
Points where a decision becomes due
- Variants with more than three characteristic dimensions
- Configurators and product builders from Shopware plugins
- Customer group prices and tiers outside the B2B module
- Custom steps or required fields in the ordering flow
- Flat addresses without a product or collection prefix
- Subshops with clearly different assortments
In what order do you work through the migration?
The sequence follows a simple rule: decide first, then import, then build. Import the catalog before the option model is settled and you will import twice. Build the theme before the catalog exists and you build against sample data, only to find late that filters and listings look different against real stock.
Redirect work runs alongside catalog work, not after it. As soon as the product handles in Shopify are fixed, you can populate the list and validate it against the destination pages automatically. That leaves only the import of a finished list on cutover day instead of hunting for destinations under time pressure.
Order of work
- Inventory: catalog size, customer groups, plugins, live addresses
- Decide the data model: options, metafields, catalogs, markets
- Import the catalog and freeze the handles
- Build theme and templates against the real catalog
- Connect integrations: ERP, payment, shipping, tracking
- Populate the redirect list, resolve chains, validate destinations
- Dry run with real orders on the staging domain
- Cutover and post-launch monitoring
What do you watch at cutover and in the days after?
The cutover is the moment the domain points at Shopify. Put it in a low-traffic window with no campaign running, and make sure the redirect list is already loaded before the domain is switched. One hour without redirects produces exactly the error pages you were trying to avoid.
Right after the switch, a handful of checks matter: reachability on the primary and redirecting domains, a correctly served sitemap, a working test order, correct data handover to tracking and ERP. After that comes a phase of watching rather than intervening — search engines need time to absorb the new address scheme.
In the weeks that follow, the most useful report is the list of error pages. Every old address showing up there is a gap in the redirect list and can be filled in. Positions fluctuating for a while after an address change is normal; a destination page that stays empty is not.
Post-launch monitoring
- Review error pages from server logs and Search Console daily
- Track indexing status of the new addresses and the sitemap
- Re-measure redirect chains created by later changes
- Compare revenue and conversion per landing page against the prior period
- Check order and inventory handover to the ERP over several days
FAQ
Frequently asked questions
Will I lose my rankings when migrating from Shopware to Shopify?
An address change almost always brings a phase where positions fluctuate, because search engines have to reassign the new URLs first. Lasting losses do not come from the move itself but from missing or wrong redirects, from destination pages with thinner content, and from bulk redirects to the homepage. Handle those three cleanly and you usually come through without permanent damage.
Can I keep my Shopware URLs on Shopify?
Partly. Editorial pages and blog paths can often stay close to the original, product and category addresses cannot: Shopify files products under a product prefix and categories under a collection prefix, and those prefixes cannot be switched off. Flat Shopware addresses without a prefix therefore become new addresses and need a permanent redirect.
What do I do with products that no longer exist after the migration?
Redirect them to the closest product where a genuine successor exists, otherwise to the matching collection. A redirect to the homepage is the worst option, because it answers nothing for users or search engines. Products that are only temporarily unavailable are better left in place as a sold-out page than removed altogether.
What happens to customer groups and volume pricing from Shopware?
Shopify models buyer-specific prices through catalogs assigned to a company profile rather than through a group field on the customer. Quantity tiers then live inside the respective catalog. These B2B features belong to Shopify Plus. If you would rather not use them, an app-based solution or moving the B2B business outside the storefront remain the alternatives.
How many variants and options does Shopify support?
Shopify allows at most three option dimensions per product. Assortments with four or more characteristics therefore need a decision: one characteristic becomes standalone products linked to each other in the theme, or it moves into a metafield without its own variant. Make that call before the import, because it determines the handles and therefore the redirect destinations.
When is the best time for the cutover?
In a low-traffic window with no campaign running and with the team available in the hours afterwards. Redirect list, sitemap and tracking should all be in place before the domain is switched. Avoid periods that also involve an assortment change, a price round or an ERP update: when two things wobble at once, finding the cause gets far more expensive.
Official documentation
Primary sources for the technical statements in this guide.
Keep reading
Related guides
One more thing
NICCOS supports moves from Shopware to Shopify from the data model decision through to post-launch monitoring. The redirect concept is built alongside the catalog, not on cutover day.
What we do