Whether an extension is built as an app or a plugin determines your shop's update safety, hosting model, and maintenance effort - long before the first line of code. Shopware deliberately offers two extension systems: the app system, which communicates via API and webhooks and runs in isolation, and the classic plugin, which works directly inside the core as a Symfony bundle. More than 100,000 (Shopware) merchants worldwide run on Shopware, and this architecture question matters for every one of them. This guide shows which system is the right choice when, and how we as a Shopware agency develop the right extension strategy.

Two Extension Systems, One Strategic Decision

According to the 2025 EHI study, Shopware is the most widely used shop system in Germany for the fourth consecutive year, leading with 11.5% (Shopware/EHI) of the top 1,000 online shops - that is 115 (Shopware/EHI) of the country's highest-revenue shops. Their combined net revenue reached 80.4 billion euros (EHI/eCommerceDB) in 2024. Anyone building on this platform faces a fundamental early decision: app or plugin.

Both systems solve the same task - extending the shop with functionality - in fundamentally different ways. The app system keeps the logic outside the shop and talks to it through interfaces. The plugin becomes part of the shop and accesses its services directly. The choice determines whether your extension runs in the cloud, how update-safe it is, and how much maintenance it causes over the years. It is an e-commerce architecture decision, not a matter of taste.

In many projects this decision is made in passing - by habit, by what the team already knows, or by the first suitable extension in the store. That backfires later: a plugin that should have been an app blocks the move to the cloud; an app that would need to intervene deeply in checkout hits the limits of its sandbox. Sound architecture consulting replaces gut feeling with a reasoned assignment of each function to the right system - which is exactly what this guide is about.

Cloud or self-hosted?

Shopware Cloud and self-hosted use different extension systems. Cloud shops cannot install classic plugins and are limited to the app system (Shopware Documentation). Choosing a hosting model also defines the available extension world - which is why the architecture question belongs at the start of every project.

The App System: API, Webhooks and Isolation

The app system moves an extension's business logic to an external system. Shopware communicates with the app exclusively via HTTP requests (Shopware Developer Documentation): events flow through webhooks, data through the API. The app system is deliberately decoupled from the core (Shopware Developer Documentation) - developers only need to understand the interface between Shopware and their app, not the internal structures, and are free to choose their programming language and framework.

manifest.xml

The central interface between the app and Shopware (Shopware Developer Documentation). It declares permissions, webhooks, and configuration - without touching the core and without compiled code in the shop.

Webhooks and API

Shopware notifies the app of events via webhook; the app queries data through the REST Admin API. This server-to-server communication is the heart of the app model.

App scripts

Since Shopware 6.4.8.0 (Shopware Developer Documentation), apps run their own Twig scripts in a sandboxed environment - for example to modify the cart, entirely without PHP in the core.

Isolation

Apps run decoupled from the shop (Shopware Developer Documentation). A bug in the app does not take down the core, and a Shopware update does not break the app as long as the interface stays stable.

In practice, an app registers on first activation through a signed handshake and then receives time-limited API credentials. For bulk data exchange - thousands of products or orders, for example - the Sync API bundles multiple write operations into a single call. This keeps communication efficient even with large data volumes, without the app ever needing direct access to the shop's database (Shopware Developer Documentation).

The decisive advantage: through this decoupling, an app is automatically compatible with multi-tenant cloud systems (Shopware Developer Documentation) and runs equally in self-hosted setups - the same extension, two hosting models. Specialized functions are covered too: app-based payment methods have existed since Shopware 6.4.1.0 (Shopware Developer Documentation), custom rule builder conditions since Shopware 6.4.12.0 (Shopware Developer Documentation). For many integration scenarios, no plugin is needed at all.

App-first for integrations

When an extension mainly moves data or talks to an external service, the app system is usually the future-proof choice: cloud-ready, update-stable, and reusable across multiple shops.

The Plugin System: Symfony Bundles with Core Access

A plugin is a thin abstraction layer on top of Symfony's bundle system (Shopware Developer Documentation) and thereby becomes part of the application. It can intervene deeply in Shopware processes and modules: register its own services via dependency injection, read and write data through the Data Abstraction Layer (DAL), subscribe to events, and modify storefront templates. This proximity to the core is the real strength of the plugin model.

  • Custom entities: New data models via the DAL, including migrations and repository access
  • Process logic: Cart processors and collectors for custom price, discount, and cart rules in checkout
  • Event subscribers: Reacting to internal events without a network detour, directly in the Shopware process
  • Storefront and admin: Overriding Twig templates and adding custom administration modules and components
  • Scheduled tasks: Recurring jobs via the message queue inside the shop
  • Service decoration: Extending or deliberately overriding existing Symfony services

This depth has a price: plugins run only in self-hosted installations and require server-side PHP access. Current versions require PHP 8.2 or 8.3 (Shopware Documentation) - Shopware 6.7 adds support for PHP 8.4 since its release in May 2025 (Shopware). The operator is responsible for server, updates, and compatibility, which calls for reliable hosting and a clean update strategy.

Technically, every plugin ships a base class that controls the lifecycle: install, activate, deactivate, uninstall, and update can each be handled deliberately - for example to migrate database schemas cleanly during an update. Custom services are registered and existing ones decorated through the Symfony service container. This control over the entire lifecycle is one reason complex domain logic is often still implemented as a plugin.

Tight coupling to the core version

Because a plugin becomes part of the application, it is tied to the Shopware version. Major core updates may require adjustments. The gain in capability is thus bought with greater responsibility for maintenance and compatibility - an aspect that must be considered in the architecture decision.

App or Plugin: The Direct Comparison

The following comparison summarizes the key differences. It does not replace a case-by-case assessment, but it makes the fundamentally different nature of the two systems visible.

CriterionApp systemPlugin
Execution locationexternal server, decoupledinside the Shopware core
Communicationwebhooks and HTTP APIservices, events, DAL
Programming languagefreely selectablePHP / Symfony
Hosting modelcloud and self-hostedself-hosted only
Isolationsandboxed, no DB accessfull system access
Update behaviorstable via the manifesttied to core version
Logic in the coreapp scripts (Twig, sandboxed)unlimited in PHP
Typical useintegrations, data syncdeep process and UI logic

A pattern emerges from the table: the app system optimizes for decoupling, operational flexibility, and low risk, while the plugin optimizes for depth and control. Neither column is categorically better - what matters is which properties your specific use case needs.

When the App System Is the Right Choice

The app system plays to its strengths wherever an extension does not need to intervene deeply in the order process, but rather moves data, talks to external services, or should work across many shops. For synchronizing products, orders, and customers with an ERP system such as SAP Business One, the API-based approach is the obvious choice - scalable and reusable across environments.

  • Your shop runs in a cloud environment without server and file access
  • You sync data with an external system that provides the actual logic
  • The extension should be reusable across multiple shops and tenants
  • An external service handles payment, shipping, or tax calculation
  • Update safety and low maintenance effort are top priorities
  • The team prefers to work in a language other than PHP

Anyone planning toward cloud operation should design new extensions as apps anyway - that keeps the choice of hosting model open without having to rebuild the extensions.

When a Plugin Is Indispensable

As soon as an extension has to run logic directly at the heart of the shop, there is hardly a way around a plugin. Custom price and discount rules in checkout, custom data models, or deep modifications to storefront templates require the direct access that only a Symfony bundle running in the core provides.

  • Custom cart calculation as well as discount or price logic directly in checkout
  • Custom database entities via the Data Abstraction Layer with full read and write access
  • Deep modifications to storefront templates and administration components
  • Event subscribers and scheduled tasks inside the Shopware process
  • Performance-critical logic that must run without network latency to an external service
  • Existing Symfony services that need to be extended or overridden
A rule of thumb from practice

The closer a requirement sits to the order and price process, and the more it must decide in real time inside the shop, the more likely a plugin is right. The more it talks to external systems or needs to be cloud-ready, the more likely an app (project experience). The cleanest dividing line follows one question: does the logic have to run in the core - or only talk to it?

Maintenance, Updates and Total Cost of Ownership

The choice between app and plugin is not only a technical but also an economic decision. Over an extension's lifecycle, most costs rarely arise during initial development, but during maintenance, updates, and compatibility testing. This is exactly where the two systems differ significantly - and exactly where a deliberate architecture decision pays off over the years.

A plugin is tied to the core version: at every major Shopware step, the code must be reviewed and often adjusted. An app stays more independent of the core thanks to its stable interface and usually survives updates without intervention, as long as the API contracts do not change. Anyone planning operating costs realistically should factor in these differences from the start.

  • Initial development: Plugins require Shopware and Symfony know-how, apps additionally a place to operate the external service
  • Updates: Plugins are reviewed at core steps, apps stay more stable across the interface
  • Operation: A plugin runs inside the shop, an app needs its own infrastructure and monitoring
  • Risk: A plugin bug can affect the shop, an isolated app bug stays contained
  • Reuse: Apps can be rolled out across multiple shops, plugins are maintained per installation

Hybrid Strategies and the Update Question

In practice, the two systems do not exclude each other. Many shops combine robust plugins for deep process logic with apps for integrations and external services. App scripts blur the line further: since Shopware 6.4.8.0 (Shopware Developer Documentation), even cart logic can run sandboxed in the app context - functionality that previously required a plugin.

The update question remains the decisive cost factor over the years. Plugins are tied to the core version and must be checked at every major step - for example when the PHP version changes during a Shopware update. Apps stay more independent thanks to their stable interface. Anyone aiming for a modular architecture will find the broader frame in composable and headless approaches, into which the app-plugin decision fits.

The question is rarely app or plugin in the absolute, but which function belongs where. A clean separation of integrations as apps and core logic as plugins saves maintenance costs over the years.

XICTRON development team

A typical pattern from practice: the connection to inventory management and shipping runs as an app over the API, while discount and price logic, special prices for regular customers, or a custom configurator work as a plugin directly in the core. This way, every requirement gets the system that suits it best - and the shop stays ready for a later cloud migration without having to rebuild the integrations.

The next generation of interfaces also connects cleanly via the app system - for example when you want to connect AI agents to your shop through standardized protocols or map regulatory requirements such as the new product safety obligations through connected services. Today's architecture decision determines how easily such extensions can dock on tomorrow.

Showcase

This is how your Shopware shop could look:

B2B E-CommerceDemo

Industrieteile-Portal

Shopware 6App systemREST APIB2B
Consumer ElectronicsDemo

Elektronik-Shop

Shopware 6PluginProduct searchPerformance
Möbel & InteriorDemo

Interior-Shop mit Raumplaner

Shopware 6ConfiguratorStorefrontTwig
Demo

How We Develop Your Extension Strategy

Instead of deciding from the gut, we start with a sober analysis of your requirements, your hosting model, and your roadmap. From that, we determine for each function whether it is best placed as an app, a plugin, or a hybrid solution - and build it so that it fits your shop and your team.

Architecture audit

We analyze hosting model, existing extensions, and planned functions, uncovering dependencies and update risks.

System choice per function

For each requirement, we decide between app and plugin with a documented, traceable rationale - not by gut feeling.

Implementation and maintenance

We develop the extensions as a Shopware agency and support operation, updates, and further development.

Whether app system, classic plugin, or a well-considered combination of both: what matters is that the architecture fits your goals and not the other way around. Our e-commerce consulting supports you from the first analysis to the productive extension.

Sources and studies

This article is based on information and documentation from: Shopware, Shopware Developer Documentation, Shopware Documentation, EHI Retail Institute (in collaboration with eCommerceDB), bevh (German E-Commerce and Distance Selling Trade Association). The figures cited refer to the respective sources and may vary depending on the time of collection and the Shopware version.

Frequently Asked Questions About Shopware Apps and Plugins

A plugin is a thin abstraction layer on top of the Symfony bundle system (Shopware Developer Documentation) and runs directly in the Shopware core with full access to services, events, and the database. An app moves the logic to an external system and communicates with Shopware exclusively via HTTP requests (Shopware Developer Documentation), meaning webhooks and API. Put simply: a plugin runs inside the shop, an app talks to the shop.

No. Cloud shops cannot install classic plugins and are limited to the app system (Shopware Documentation). Plugins require server-side PHP access and therefore run only in self-hosted installations. Anyone planning cloud operation, or wanting to keep it open, should typically design extensions as apps.

Not in general, but differently. For integrations and data sync, the app system is often the better choice. For deep interventions in cart, price logic, or storefront templates, a plugin offers more, because it runs directly in the core. Since Shopware 6.4.8.0 (Shopware Developer Documentation), however, apps can also run cart logic via sandboxed app scripts, which narrows the gap in many cases.

Current Shopware versions require PHP 8.2 or 8.3 (Shopware Documentation); Shopware 6.7 adds support for PHP 8.4 since its release in May 2025 (Shopware). For app development this is irrelevant, since apps run in a freely selectable language (Shopware Developer Documentation) and only talk to Shopware through the interface.

Yes, and it is common in practice. Many shops combine plugins for deep core logic with apps for integrations and external services. A clear split - integrations as apps, core logic as plugins - tends to reduce maintenance effort over the years (project experience).

We analyze hosting model, existing extensions, and planned functions, then determine for each requirement, with a clear rationale, whether app, plugin, or a combination fits best. We then implement the extensions and support updates. You can get a non-binding assessment through our e-commerce consulting.

The right extension architecture for your shop

We analyze your requirements and develop the right strategy from app system, plugin, or a well-considered combination - from concept to implementation.

Request consultation