Migrating away from Shopware to a custom Solidus store
Shopware 6 is a capable, modern platform, so the business that leaves it is usually chasing full ownership rather than fleeing a weak tool. In this guide I set out, specifically for Shopware, what you own and what sits behind a paid tier, how the Import/Export feature and the Admin API actually hand your data over, and where the real lock ins are. The deep questions, customer accounts, products and URLs, saved cards and subscriptions, each link to their own guide rather than being repeated. I build the custom store on Solidus and run the move, and the result belongs to you.
What Shopware is, and who outgrows it
Shopware 6 is a modern, capable commerce platform, and I want to say that plainly before I say anything else. It is an open commerce platform built on the Symfony framework with a Vue administration, and its core is released under the permissive MIT licence.1 It is strong across Germany, Austria and Switzerland, its ecosystem understands German legal requirements, and most agencies in the region know it well. If you run a conventional catalogue on Shopware and it is doing its job, this article is not an argument to leave. A simple or modestly sized shop is very often right to stay.
The business I write for is the one that has outgrown it. Usually that owner is not fleeing a weak platform. They are chasing something specific: full ownership of the whole stack, an escape from a commercial edition licence tier or the running cost of the extension store, or the wish to build on Ruby on Rails so the shop is an application they control end to end rather than a product following someone else's roadmap. This is the honest guide to that move, from Shopware to a custom store I build on Solidus, the open source Rails commerce framework. I build the store and run the migration, and the result belongs to you.
For the concepts that are the same whoever you leave, how customer records move, what happens to products and URLs, why saved cards and subscriptions are the hard part, I link the deep guides rather than repeat them. Start with the pillar, what moves and what does not. This article is about Shopware specifically: its editions, its export and its traps.
What you own, and what sits behind a paid tier
Shopware's structure is the first thing to understand, because it is where most of the pressure to move comes from. There is one open source core and a ladder of paid plans above it.2
The Community Edition is free, listed at zero, and its core is open source under the MIT licence.21 Above it sit three commercial plans: Rise, listed from €600 a month excluding VAT, Evolve from €2,400 a month excluding VAT, and Beyond at a custom price.2 The paid plans add features such as returns management, advanced product search, B2B components like quotes and approval workflows, and customer specific pricing, and Shopware states that the pricing is based on your gross merchandise value and further individual factors.2 So the printed figures are a floor, not a quote.
There is one condition on the free edition that owners often meet without planning for it. Under Shopware's Fair Usage Policy, a business whose linked shops generate more than €1 million of gross merchandise value over the preceding 365 days must subscribe to Rise, Evolve or Beyond to keep access to the Shopware Account and the Shopware Store.23 The policy is clear that it does not touch the open source licence: the Community Edition stays fully open source under MIT, and you keep full access to the source code and can carry on running the software independently.3 What a shop above the line loses without a paid plan is the account and the extension store, not the code. That is a fair distinction, and it is worth reading carefully rather than through either vendor's summary or a rival's.
Then there is the deployment choice, which decides how much of the stack is actually yours. Shopware runs self hosted, on Shopware's platform as a service, or as fully managed software as a service.2 The managed cloud is quick to start and Shopware handles updates and infrastructure, but it is, in Shopware's own words, more standardised and offers less flexibility for in depth customisation, while the platform as a service model is aimed at merchants who need individual customisations and their own server infrastructure.4 The practical line that matters for a move is custom code: plugins, which are PHP modifications of the core, run on the self hosted and platform as a service models, not on the managed cloud. If you are on the managed cloud and your growth now needs bespoke logic, you have already met the ceiling that pushes shops towards owning the application outright.
The export and API reality
This is where Shopware is genuinely good, and I will not pretend otherwise. A move off a self hosted Shopware starts from a strong position, because you have real access to your own data.
The built in Import/Export feature in the admin handles the bulk of a catalogue move. It works in CSV, with the files in UTF-8 and separated by semicolons, and it ships standard profiles you can duplicate and adapt.5 The object types it covers are broad: products, variant configuration, categories, customers, orders, media, properties, cross selling, advanced prices, newsletter recipients, promotions and promotion codes.5 A profile maps each column in the CSV to a field in the database, which is exactly the mapping exercise any migration is underneath.5
Two limits are worth knowing before you lean on it. The import adds information, it does not remove it, so it is a loading tool and not a two way sync.5 And the import and export history in the admin shows only the last 30 days of activity, so it is a working tool, not an audit trail.5 Neither is a flaw. They are simply the shape of the feature, and a migration plans around them.
For anything the CSV feature does not reach, Shopware exposes two HTTP APIs.6 The Admin API, under the /api path, offers CRUD operations for every entity in the system, products, orders, customers, media and configuration among them, authenticated with OAuth client credentials, and it is built for backend integration and data synchronisation.67 The Store API, under /store-api, is the customer facing surface, built so that headless frontends such as single page apps or native apps can consume the shop over JSON.68 There is also a Sync API for bulk writes.6 For a migration the Admin API is the one that matters, because it lets me read out the long tail the CSV profiles do not model cleanly, and verify counts against the source as I go.
On a self hosted Community Edition you also have direct database access, which is the strongest export position of all: nothing is withheld from you, because you hold the database. The managed cloud is the weaker case, where you work through the admin and the APIs rather than the database, so if you are on the cloud, confirm your export route early. Passwords are the one thing that does not travel through any of this as a reusable secret, for the same reason on every platform. I cover why, and what to do about it, in the customer accounts guide. The short version is that customers set a new password once, as a planned step, not a surprise.
The Shopware specific traps
A good export does not mean a clean exit. The traps are in the parts the CSV never touches.
Payments live in handlers and gateways, not in your database. Shopware processes card and local payment methods through payment handlers that talk to a gateway, and the saved cards and tokens behind recurring or one click payments belong to that gateway, not to the shop. Those do not come out in a CSV and they are not yours to copy. Whether they can move at all depends on the gateway, and it is the single hardest question in the whole migration. I set out the honest options, from reconnecting the same gateway to planning for re entry, in the payment tokens guide. Flag this on day one, not in the final week.
Subscriptions are a plugin or a commercial feature. Shopware does not carry recurring billing in the free core, and it comes from an extension or sits inside the paid feature set. That means the subscription contracts, their billing dates, their saved mandates and their next charge all live in a specific plugin's tables or a gateway, in a shape unique to that plugin. There is no general export for them. Moving live subscriptions without interrupting a single charge is the most delicate work in any migration, and I treat it as its own project inside the move. The subscriptions guide walks through it.
SEO URLs and the redirect map. Shopware builds its own SEO URLs, and a growing shop has years of links and rankings attached to them. Lose that map at cutover and you lose traffic that looks, on the dashboard, like the new shop performing worse. Every old URL that earned a visit or a link needs a permanent redirect to its new home. That is a spreadsheet with a named owner, and it is the best money you will spend on the project. The mechanics are in the products and catalogue guide, which covers the redirect work because product and category URLs are the bulk of it.
Plugins hold business logic you forgot you depend on. The ecosystem is Shopware's strength and also its lock in. Over a few years a shop accumulates plugins for pricing rules, legal texts, feeds, a point of sale link, an ERP connector, and the exact behaviour of the checkout. None of that is in the catalogue CSV. Each plugin is a small supplier you depend on, and some of them encode rules nobody has written down anywhere else. Before any move I inventory them and decide, for each, whether the behaviour is rebuilt as application code, replaced by a service, or dropped because it is no longer earning its keep.
What the move onto Solidus actually looks like
The honest shape of the move is this: the catalogue and customers come across with mapping work, the orders come across as readable history, and the payments, subscriptions, storefront and integrations are rebuilt. The table is the quickest way to see where each thing sits.
| Data or feature | On Shopware | The plan on Solidus |
|---|---|---|
| Products, variants, categories, prices, media | Export cleanly as CSV via Import/Export profiles, or the Admin API[^7] | Map to the Solidus catalogue, see the products guide |
| Customer accounts and addresses | Export as CSV, minus the passwords[^7] | Import, then a one time password reset, and see the customers guide |
| Order and purchase history | Available as an export object type[^7] | Load as read only history for support and the customer account |
| Saved cards and payment tokens | Held by the gateway, not in your database | Reconnect the same gateway where possible, else plan re entry, see the tokens guide |
| Subscriptions and recurring billing | In a plugin or the commercial feature set, no general export | Rebuild in Solidus with the gateway's cooperation, see the subscriptions guide |
| SEO URLs | Shopware's own URL structure | A full redirect map, one row per old URL |
| Storefront, plugins, integrations | Shopware theme, plugins, app logic | Rebuilt as a Rails application you own outright |
Solidus is where I land this. It is an open source commerce framework on Ruby on Rails, licensed under the three clause BSD licence, and it ships with a REST API, so the shop you own can also feed a mobile app or a second storefront without an upgrade tier.9 The honest cost is that there is no theme store and no marketplace of hundreds of plugins, so year one costs more than staying put, and you need a developer who knows Rails. What you get for that is an application with no licence fee, no plan tier that gates your own checkout, and no €1 million line to cross. The checkout, the pricing rules, the subscription logic: each is ordinary application code with tests, not a plugin and a quote. I keep the five year money honest in the total cost of ownership article, and I compare the platforms side by side, Shopware included, in the platform comparison. For the DACH payment methods a German or Austrian shop cannot do without, invoice after delivery, SEPA, EPS, there is a dedicated guide.
A worked example
Take an invented business: Pennine Supply (pennine.example), a Leeds trade and retail shop for workwear and site equipment, turning over about £2.4 million a year online. It has run Shopware 6 Community Edition, self hosted, for four years. Three things have converged. Its turnover is now over the €1 million equivalent, so the Fair Usage Policy means a paid plan to keep the Shopware Account and Store, which it has been quoted well into four figures a month.23 Its trade side wants per customer price lists and monthly invoices that the current plugin stack handles awkwardly. And the owner wants the shop to share code with an internal stock tool, which a platform roadmap will never prioritise. None of this is Shopware being poor. It is a shop that has outgrown a rented ceiling and wants to own the building.
Here is how I would run it. In discovery I inventory every plugin and decide its fate, agree who owns the data on the shop's side, and settle the payment question first: Pennine uses one gateway for cards and a separate invoice provider, and the plan is to reconnect the same gateway to the new shop so saved cards stay put, which I confirm in writing before anything else. The catalogue, variants, customers and three years of order history come out through the Import/Export profiles and the Admin API, and I rerun the import scripts against a copy of the live data until the counts match the Shopware admin exactly.57 The storefront, the trade price lists and the invoice logic are built as Solidus application code with executable tests. The redirect map, around three thousand rows, is built from search analytics and checked by a named person at Pennine. Subscriptions do not apply here, which is why the honest first question saved weeks: the one place they might have hidden was a recurring reorder plugin, and it turned out to be a saved basket, not a billing contract.
Cutover is a Tuesday morning in the shop's quietest month. The old Shopware stays exactly as it is for 30 days as the fallback, and only then does Pennine stop paying for it. The result is a Rails application Pennine owns, with no licence tier above it and no account access to lose at the next turnover milestone.
When you should stay on Shopware
I would tell several shops to stay, and I would rather say so now than after you have spent money.
Stay if you are comfortably under the €1 million line, your catalogue is conventional, and the Community Edition plus a handful of plugins does what you need. You are getting a capable platform for no licence fee, and a custom build would be a cost without a matching return.2 Stay if your team is productive in the Shopware admin and the only complaint is the subscription you would owe above the fair usage line, and that subscription is bearable. Stay, for now, if you are weeks away from your peak season; a migration belongs in the quiet months and never before the rush.
Move when the shop is where you compete and the platform has become the thing in your way: when a paid plan tier is buying you features you do not use to unlock the one you need, when the plugin stack is holding business logic you would rather own and test, or when you want the Rails engineering model so the shop is one application among your own. That is a real reason, and it is the one I build for.
If you want a second opinion on your own numbers, bring them to a free workshop, and the first two weeks of work are on me. I will tell you honestly whether leaving Shopware pays off for you, and if it does not, I will say so.
Footnotes
-
Shopware, shopware/shopware repository on GitHub: open commerce platform on Symfony and Vue, core under the MIT licence, accessed 14 November 2026, https://github.com/shopware/shopware ↩ ↩2
-
Shopware, Pricing: editions (Community Edition, Rise, Evolve, Beyond), listed monthly prices excluding VAT, deployment models (SaaS, PaaS, self hosted), and the Fair Usage Policy FAQ, accessed 14 November 2026, https://www.shopware.com/en/pricing/ ↩ ↩2 ↩3 ↩4 ↩5 ↩6 ↩7 ↩8
-
Shopware, Fair Usage Policy: key facts for Community Edition merchants (the €1 million GMV condition over the preceding 365 days, and that the policy does not affect the open source MIT licence), March 2025, https://www.shopware.com/en/news/fair-usage-policy-community-edition/ ↩ ↩2 ↩3
-
Shopware, Shopware in the cloud: SaaS as more standardised with less flexibility for in depth customisation, PaaS for merchants needing individual customisations and their own infrastructure, accessed 14 November 2026, https://docs.shopware.com/en/shopware-6-en/in-the-cloud ↩
-
Shopware, Import/Export documentation: CSV in UTF-8 with semicolons, profiles and mappings, the object types covered, that the import adds but does not remove, and a 30 day activity history, accessed 14 November 2026, https://docs.shopware.com/en/shopware-en/settings/importexport ↩ ↩2 ↩3 ↩4 ↩5 ↩6
-
Shopware developer documentation, Integrations API overview: the Admin API, the Store API and the Sync API, accessed 14 November 2026, https://developer.shopware.com/docs/guides/integrations-api ↩ ↩2 ↩3 ↩4
-
Shopware developer documentation, Admin API concept: CRUD operations for every entity, for backend integration and synchronisation, accessed 14 November 2026, https://developer.shopware.com/docs/concepts/api/admin-api ↩ ↩2
-
Shopware developer documentation, Store API concept: the customer facing surface for headless frontends, accessed 14 November 2026, https://developer.shopware.com/docs/concepts/api/store-api ↩
-
Solidus, solidusio/solidus repository on GitHub: an open source Ruby on Rails commerce framework under the BSD 3 clause licence, shipping a REST API, accessed 14 November 2026, https://github.com/solidusio/solidus ↩