Codewerk.
Get a quote
Home/Blog/Shopware 5 to 6: what a run of real migrations actually taught us

Shopware 5 to 6: what a run of real migrations actually taught us

Not a checklist — a retrospective. The estimates we got wrong, the plugin inventory that turns out to be the whole project, and the six-figure job that produces no new revenue on launch day.

Photo: free stock photography (Unsplash licence) — see imprint

The estimate is always wrong in the same direction

We have now taken a decent number of shops from Shopware 5 to Shopware 6, and the pattern is embarrassingly consistent: the data migration lands roughly where we quoted it, and everything around the data takes two to three times longer than anyone wanted to hear. Products, categories, customers and orders move across with the migration tooling and a few days of cleanup. Then the project meets the fifty small things that made the old shop actually work, and those are not in any tool.

In most of them the underestimate was not technical incompetence. It was that nobody — not the client, not us — had a complete list of what the old shop did. A shop that has been live for six years has accumulated behaviour the way a house accumulates cables: a discount rule someone added for one trade fair, an export that finance quietly depends on every month, a redirect table from a relaunch two owners ago. You cannot quote what you have not inventoried, and the inventory is the part everybody wants to skip because it produces nothing visible.

The plugin inventory is not a step in the project. It is the project.

Every migration we have done was, underneath the label, a plugin problem wearing a data-migration costume. A typical SW5 shop runs somewhere between twenty and sixty plugins. Some have a SW6 successor with the same name and different behaviour. Some have a successor from a different vendor. Some are simply gone, because the developer looked at the rewrite cost and decided not to. And a few are yours — bespoke work from years ago whose author has left the building.

The lesson we learned the hard way is to do this inventory before the offer, not after the kickoff, and to force a decision per plugin: replace, rebuild, buy, or drop. Drop is a real option and the cheapest one, and it is the option nobody offers the client. In most projects a meaningful share of plugins were being paid for and not used — installed for a campaign in 2018, never removed, still in the backup, still in the estimate. Killing them is the highest-return hour in the whole migration.

  • Replace — a real SW6 equivalent exists and the behaviour is close enough.
  • Rebuild — the function is business-critical and nothing on the market fits.
  • Drop — nobody has used it in two years and nobody will miss it.
  • Defer — useful, not needed on day one, cheaper once the shop is stable.

Nobody budgets for the template, and the template is a rewrite

Clients hear 'migration' and picture the same shop on newer foundations. Then they see that the SW5 theme does not come along in any form. Smarty templates do not become Twig by being copied. The old theme's structure, its blocks, its dozen small overrides accumulated across years — all of that is a rewrite, and it is a rewrite that produces, on a good day, a shop that looks exactly like the one you already had.

This is where we now argue hardest, and where we lose money by being honest. If you are rewriting the front end anyway, rebuilding a pixel copy of a six-year-old theme is the single worst use of that budget. Take the standard SW6 theme, accept that some things will look different, and spend the difference on the checkout and the product page. The clients who insisted on the pixel copy got the pixel copy, on time, and got no benefit from it whatsoever.

The launch day produces no new revenue, and that surprises people

This is the hardest conversation and we have got better at having it early. A migration is a five- or six-figure project whose deliverable, on the morning it goes live, is the same business you had the night before. Same products, same customers, same margin. If anything, revenue dips for a few weeks while rankings settle, staff relearn the admin, and the first crop of bugs surfaces. The value is real but it is deferred: you are buying the ability to change things in year two through five.

Which is why a profitable, stable SW5 shop with no pending change requests does not have to move this year. We say that out loud in sales meetings and it costs us projects. But the migrations that went badly were almost all the ones where nobody could name a business reason beyond the version number — and a project without a business reason has nothing to arbitrate scope against when the plugin surprises arrive in week seven.

What we changed in how we run these

Three things. We now run the data migration once in week one, not in month four — badly, into a throwaway environment, purely to find out what breaks. It always breaks somewhere unglamorous: a custom field with no SW6 counterpart, an attribute table someone wrote by hand, orders with a payment method that no longer exists. Finding that in week one is cheap. Finding it two weeks before go-live is a schedule.

Second: we insist on a written URL map before anything else, because the SEO damage from a botched migration outlives every other mistake in the project. Third: we plan for four weeks of stabilisation after go-live and put it in the offer as a line item, because it happens whether it is in the offer or not. The only question is whether it happens as planned work or as an argument.

Project partWhat clients expectWhat we keep seeing
Product & customer dataThe risky partRoughly as quoted — tooling handles the bulk
PluginsA line itemThe largest single cost, and the schedule risk
Theme / storefrontComes along with itA full rewrite; Smarty does not become Twig
URLs & redirectsA detail for laterThe mistake with the longest half-life
After go-liveDone is doneFour weeks of stabilisation, budgeted or not
Key takeaways
  • The plugin inventory belongs before the offer — it is what you are actually buying.
  • A migration delivers the business you already had; the payoff is in years two to five.
  • Rebuilding a pixel copy of an old theme is the worst use of a migration budget.
  • If nobody can name a business reason beyond the version number, wait.

Frequently asked questions

For a mid-sized shop, plan in months rather than weeks — and the spread is driven almost entirely by plugins and custom code, not by catalogue size. A shop with ten standard plugins and a stock theme is a different animal from one with forty plugins and six years of bespoke logic. Anyone quoting a firm duration before inventorying your plugins is guessing.

For now, yes — and for a stable, profitable shop with no pending change requests, that is a defensible decision this year. What you are trading away is future optionality: the pool of developers, plugins and integrations for SW5 shrinks every quarter, and each year you wait the migration gets slightly more expensive rather than less. Decide it as a business question, not a technical one.

No. SW6 is a different architecture, so nothing carries over unchanged. Each plugin needs a decision: a SW6 successor from the same vendor, a competing product, a rebuild, or deletion. In most shops a meaningful share turns out to be unused and can simply be dropped — which is the cheapest win in the project and the one nobody volunteers.

Expect a dip for a few weeks even when it is done properly, and expect a lasting one when the URL map is an afterthought. The URL structure changes between SW5 and SW6, so every old address needs a deliberate destination. Write that map before the first line of code and check it against your actual top-traffic pages, not against a theory of your catalogue.

Usually not. The old theme cannot be carried over, so a pixel copy is a full rewrite whose best possible outcome is the shop you already have. Unless the design is a genuine competitive asset, start from the standard theme and spend the saved budget where it converts: product page, checkout, search. Customers notice a slow checkout; they do not notice a changed button radius.

We do this for a living — Shopware, Node.js, React, ERP integration and automation for B2B.

Talk to an engineer

// Keep reading

Related articles

Shopware 8 min

Shopware 6 plugins: when to buy, when to build

Store plugins promise a lot and deliver about 70% of it. Here is the decision framework we use with clients before spending a cent on either option.

02 Jul 2026 Codewerk Team