Skip to content
Merged
Show file tree
Hide file tree
Changes from 23 commits
Commits
Show all changes
46 commits
Select commit Hold shift + click to select a range
7172297
adds upgrade guide and apidocs
lasomethingsomething Feb 24, 2026
84995c5
Update index.md
lasomethingsomething Feb 24, 2026
33d1d60
Update index.md
lasomethingsomething Feb 24, 2026
09944aa
Merge branch 'main' into api-upgrade-changesfeb23
lasomethingsomething Feb 24, 2026
15d132b
Additional info
sushmangupta Feb 26, 2026
e1c97cb
Update concepts/apis/index.md
lasomethingsomething Feb 26, 2026
6d4eeca
Update concepts/apis/index.md
lasomethingsomething Feb 26, 2026
c778b15
Update storefront-concept.md
lasomethingsomething Feb 26, 2026
48f3a0c
Apply suggestion from @sushmangupta
lasomethingsomething Feb 26, 2026
e7d903b
Update index.md
lasomethingsomething Feb 26, 2026
2388747
Update index.md
lasomethingsomething Feb 26, 2026
16456bf
Update index.md
lasomethingsomething Feb 26, 2026
dc8d761
Update index.md
lasomethingsomething Feb 26, 2026
312d6c5
Update index.md
lasomethingsomething Feb 26, 2026
8f8b1cc
Update upgrade-shopware.md
lasomethingsomething Feb 26, 2026
4b8ca69
Merge branch 'main' into api-upgrade-changesfeb23
lasomethingsomething Feb 26, 2026
4ecb86b
Fix link
sushmangupta Feb 26, 2026
97c7e5e
Language tool issue fix
sushmangupta Feb 26, 2026
69d0849
Fix api directory content
sushmangupta Feb 26, 2026
2bef043
Addition of Core Concept
sushmangupta Feb 26, 2026
24f4d31
Update index.md
lasomethingsomething Feb 26, 2026
e47d06e
remove content from architecture
sushmangupta Feb 26, 2026
d3cbf85
Add redirects
sushmangupta Feb 26, 2026
c7024b3
Update gitbook, add info box, fix link
sushmangupta Feb 27, 2026
7afcb0b
Update index.md
lasomethingsomething Feb 27, 2026
4c7e3ba
Update index.md
lasomethingsomething Feb 27, 2026
c58d247
Update index.md
lasomethingsomething Feb 27, 2026
4c613cc
Update upgrade-shopware.md
lasomethingsomething Feb 27, 2026
1539467
Update language-pack-migration.md
lasomethingsomething Feb 27, 2026
5dba68f
Update upgrade-shopware.md
lasomethingsomething Feb 27, 2026
7636bab
Update store-api.md
lasomethingsomething Feb 27, 2026
29d2f46
Update admin-api.md
lasomethingsomething Feb 27, 2026
20fb1a0
Update index.md
lasomethingsomething Mar 2, 2026
01a574b
Update index.md
lasomethingsomething Mar 2, 2026
392e34b
Update index.md
lasomethingsomething Mar 2, 2026
a29a1e5
Update index.md
lasomethingsomething Mar 2, 2026
24c32c1
Update index.md
lasomethingsomething Mar 2, 2026
d1ccc19
Update index.md
lasomethingsomething Mar 2, 2026
d6fff94
Update index.md
lasomethingsomething Mar 2, 2026
2a359b6
Merge branch 'main' into api-upgrade-changesfeb23
lasomethingsomething Mar 2, 2026
7725596
grammar fixes
sushmangupta Mar 2, 2026
bebb057
markdown fixes
sushmangupta Mar 2, 2026
975c2dc
Markdown fix2
sushmangupta Mar 2, 2026
4fdee7e
Markdown fix3
sushmangupta Mar 2, 2026
519aacb
Spell check fix
sushmangupta Mar 2, 2026
6476269
chore: sort .wordlist.txt
github-actions[bot] Mar 2, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 9 additions & 1 deletion .gitbook.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -98,4 +98,12 @@ redirects:
guides/installation/setups/devenv.html: guides/installation/legacy-setups/devenv-setup.html
guides/installation/setups/symfony-cli.html: guides/installation/legacy-setups/symfony-cli-setup.html
guides/installation/setups/devenv-options.html: guides/installation/legacy-setups/devenv-options.html
guides/installation/setups/: guides/installation/
guides/installation/setups/: guides/installation/
guides/plugins/plugins/administration/system-updates/meteor-components.html: guides/upgrades-migrations/administration/meteor-components.html
guides/plugins/plugins/administration/system-updates/pinia.html: guides/upgrades-migrations/administration/pinia.html
guides/plugins/plugins/administration/system-updates/vue3.html: guides/upgrades-migrations/administration/vue3.html
guides/plugins/plugins/administration/system-updates/vite.html: guides/upgrades-migrations/administration/vite.html
guides/plugins/plugins/administration/system-updates/vue-migration-build.html: guides/upgrades-migrations/administration/vue-migration-build.html
guides/plugins/plugins/administration/system-updates/vue-native.html: guides/upgrades-migrations/administration/vue-native.html
guides/plugins/plugins/administration/system-updates/extension-translation.html: guides/upgrades-migrations/extension-translation.html
guides/plugins/plugins/administration/system-updates/language-pack-migration.html: guides/upgrades-migrations/language-pack-migration.html
10 changes: 8 additions & 2 deletions concepts/api/admin-api.md
Original file line number Diff line number Diff line change
@@ -1,12 +1,18 @@
---
nav:
title: Admin API
position: 20
position: 42

---

# Admin API

The Admin API represents the administrative and integration surface of Shopware. It enables structured access to core business entities such as products, orders, customers, media, and configurations. It is intended for backend integrations, automation, data synchronization, and system-to-system communication.

These integrations typically involve structured data exchange, synchronization, imports, exports, and notifications. They prioritize consistency, error handling, validation, and transactional integrity. Performance is also important in terms of high data loads rather than fast response times.

The Admin API provides CRUD operations for every entity within Shopware and is used to build integrations with external systems.

For more information, refer to the [Guides section](../../guides/integrations-api/index.md).
For details on endpoints, authentication methods, schemas, and request formats, always refer to the Admin API documentation.

<PageRef page="https://shopware.stoplight.io/docs/admin-api/8d53c59b2e6bc-shopware-admin-api" title="Admin API – Stoplight Reference" target="_blank" />
16 changes: 13 additions & 3 deletions concepts/api/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,18 @@ nav:

# API
Comment thread
lasomethingsomething marked this conversation as resolved.

The Shopware API allows developers to interact with and integrate Shopware with other systems and applications. It provides a set of services that enable developers to perform various operations, such as managing products, customers, orders, and shopping carts.The API supports both read and write operations, allowing developers to retrieve information from Shopware and make modifications or additions to the e-commerce platform. By leveraging the Shopware API, developers can extend the functionality of Shopware, integrate it with external systems, and create seamless experiences for managing and operating online stores.
Shopware exposes HTTP-based APIs that allow external systems and custom applications to interact with the platform.

Shopware supports two major functional APIs: the Store API and the Admin API. These APIs serve different purposes. The Store API is designed to interact with the front-end or storefront of a Shopware online store while the Admin API is intended for administrative operations related to managing the back-end of the Shopware platform.
Two functional APIs are available, each representing a different integration surface:

The API documentation provides details on the available endpoints, request/response formats, authentication mechanisms, and data structures. It supports different authentication methods, including token-based authentication and OAuth 2.0, to ensure secure communication between the API client and the Shopware platform.
* **Store API**: customer-facing interactions
* **Admin API**: administrative and system-level operations

Both APIs use HTTP and exchange JSON payloads. The Administration API requires OAuth 2.0 authentication, whereas the Store API is publicly accessible and only requires contextual headers, with authentication needed for customer-specific endpoints. While they serve different purposes within the platform, they share some underlying design principles and structural patterns:

* Search criteria abstraction for filtering, sorting, and pagination
* Structured JSON request/response bodies
* Versioned endpoints
Comment thread
lasomethingsomething marked this conversation as resolved.
Outdated
* Header-based contextual behavior

These patterns form the foundation of integration development.
30 changes: 6 additions & 24 deletions concepts/api/store-api.md
Original file line number Diff line number Diff line change
@@ -1,35 +1,17 @@
---
nav:
title: Store API
position: 10
position: 41
Comment thread
lasomethingsomething marked this conversation as resolved.
Outdated

---

# Store API

Every interaction between the store and a customer can be modeled using the Store API. It serves as a normalized layer or an interface to communicate between customer-facing applications and the Shopware Core. It can be used to build custom frontends like SPAs, native apps, or simple catalog apps. It doesn't matter what you want to build as long as you are able to consume a JSON API via HTTP.
The Store API represents the customer-facing surface of Shopware. It is designed for storefront/frontend-related interactions such as product browsing, cart handling, checkout, and customer account management. It exposes only data that is relevant and safe for frontend use and supports both anonymous and authenticated customers.

![Data and logic flow in Shopware 6 \(top to bottom and vice versa\)](../../assets/concepts-api-storeApiLogic.svg)
The Store API acts as a normalized interface layer between customer-facing applications and the Shopware Core. It enables headless frontends (such as SPAs or native apps) to consume Shopware functionality via JSON over HTTP. Core business logic is exposed through HTTP routes, ensuring that the Storefront and API consumers rely on the same underlying services.

Whenever additional logic is added to Shopware, the method of the corresponding service is exposed via a dedicated HTTP route. At the same time, it can be programmatically used to provide data to a controller or other services in the stack. This way, you can ensure that there is always common logic between the API and the Storefront and almost no redundancy. It also allows us to build core functionalities into our Storefront without compromising support for our API consumers.
For details on endpoints, authentication methods, schemas, and request formats, always refer to the Store API documentation.
<PageRef page="https://shopware.stoplight.io/docs/store-api/7b972a75a8d8d-shopware-store-api" title="Store API – Stoplight Reference" target="_blank" />

## Extensibility

Using plugins, you can add custom routes to the Store API \(as well as any other routes\) and also register custom services. We don't force developers to provide API coverage for their functionalities. However, if you want to support headless applications, ensure that your plugin provides its functionalities through dedicated routes.

<PageRef page="../../guides/plugins/plugins/framework/store-api/" />

## Store API and the traditional TWIG storefront

When using the server-side rendered TWIG storefront, the Store API is not used.
Instead, the storefront uses custom [storefront controllers](../../guides/plugins/plugins/storefront/add-custom-controller.md) which internally use the Store API to fetch data.

The storefront controllers are optimized for the usage in our TWIG storefront. And the biggest difference is the way that authentication and authorization are handled.
As the Store-API is a proper REST API, the main design is stateless, which means authentication info needs to be provided via the request headers in form of the `sw-context-token`.
The storefront relies on the session to store the authentication info, that way you do not have to handle the authentication manually with every request.

## What next?

* To start working with the Store API, check out our [Quick Start guide](https://shopware.stoplight.io/docs/store-api/38777d33d92dc-quick-start-guide) and explore all endpoints in our reference guide.

* An interesting project based on the Store API is [Composable Frontends](../../../frontends/).
Shopware provides [Composable Frontends](https://frontends.shopware.com/) as a headless frontend implementation based on the Store API.
34 changes: 32 additions & 2 deletions concepts/framework/architecture/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,36 @@ nav:

---

# Architecture
# Shopware Architecture

On a high level, Shopware consists of multiple modules that separate the entire code base into logical units. Some modules are independent, and some depend on others.
Shopware follows a modular, API-first architecture built on top of Symfony and modern frontend technologies. The platform separates concerns into clearly defined layers, allowing storefront experiences, administrative tooling, and core business logic to evolve independently while sharing a common backend foundation.

At a high level, the system consists of three primary domains:

* **Core** — the backend foundation containing business logic, data abstraction, APIs, and extension mechanisms.
* **Storefront** — the customer-facing presentation layer responsible for rendering sales channels and interacting with the Store API.
* **Administration** — the management interface used by merchants and operators to configure, manage, and operate the platform.

These domains are unified through a shared API layer and a consistent plugin system, enabling extensibility without tightly coupling features to presentation layers.

## Architectural principles

The Shopware architecture is guided by several core principles:

* **API-first design** — all functionality is exposed via APIs, enabling headless and composable commerce scenarios.
* **Separation of concerns** — frontend experiences (storefront/admin) are decoupled from backend logic.
* **Extensibility** — plugins integrate through events, services, and extension points rather than modifying core code.
* **Asynchronous processing** — background tasks (indexing, messaging, integrations) are handled via message queues and workers.
* **Domain-driven structure** — business logic is organized around commerce domains rather than UI features.

## Core components

The architecture centers around the Shopware Core, which provides:

* Data Abstraction Layer (DAL) for database interaction
* Business services and domain logic
* Sales Channel and Store APIs
* Plugin and event system
* Messaging and scheduled task infrastructure

The Storefront and Administration layers consume these services rather than duplicating logic, ensuring consistency across channels.
14 changes: 12 additions & 2 deletions concepts/framework/architecture/storefront-concept.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
---
nav:
title: Storefront
position: 10
position: 15

---

Expand Down Expand Up @@ -32,7 +32,17 @@ The main concerns that the Storefront component has are listed below. Furthermor

Contrary to API calls that result in single resource data, a whole page in the Storefront displays multiple different data sets on a single page. Think of partials, which lead to a single page being displayed. Imagine a page that displays the order overview in the customer account environment. There are partials that are generic and will be displayed on almost every Page. These partials include - for example, Header and Footer information wrapped into a `GenericPage` as `Pagelets` \(`HeaderPagelet`, `FooterPagelet`\). This very generic Page will later be enriched with the specific information you want to display through a separate loader \(e.g. a list of orders\).

To achieve getting information from a specific resource, the Storefront's second concern is to map requests to the Core. Internally, the Storefront makes use of the [Store API](../../api/store-api) routes to enrich the Page with additional information, e.g., a list of orders, which is being fetched through the order route. Once all needed information is added to the Page, the corresponding page loader returns the Page to a Storefront controller.
To obtain information from a specific resource, the Storefront's second concern is to map requests to the Core. Internally, the Storefront makes use of the [Store API](https://shopware.stoplight.io/docs/store-api/38777d33d92dc-quick-start-guide) routes to enrich the Page with additional information, e.g., a list of orders, which is being fetched through the order route.

![Data and logic flow in Shopware 6 \(top to bottom and vice versa\)](../../../assets/concepts-api-storeApiLogic.svg)

Once all needed information is added to the Page, the corresponding page loader returns the Page to a Storefront controller.

### Store API and the traditional Twig storefront

In the traditional server-side rendered Twig storefront, the Store API is not called directly by the browser. Instead, custom storefront controllers internally use the Store API to fetch data from the Core.

The Store API is stateless and expects authentication information via request headers (for example the `sw-context-token`). In contrast, the traditional storefront relies on session-based authentication, so authentication does not need to be handled manually on every request.
Comment thread
lasomethingsomething marked this conversation as resolved.
Outdated

Contrary to the Core, which can almost completely omit templating in favor of JSON responses, the Storefront contains a rich set of Twig templates to display a fully functional shop. Another concern of the Storefront is to provide templating with Twig. The page object, which was enriched beforehand, will later be passed to a specific Twig page template throughout a controller. A more detailed look into an example can be found in [Composite data handling](storefront-concept#composite-data-handling).

Expand Down
17 changes: 17 additions & 0 deletions guides/upgrades-migrations/administration/index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
---
nav:
title: Administration
position: 10

---

# Administration

These guides cover upcoming architectural changes and migration paths affecting Administration extensions. Use them to prepare plugins for major system transitions:
Comment thread
lasomethingsomething marked this conversation as resolved.
Outdated

* [Vue 3 migration](./vue3)
* [Meteor components](./meteor-components)
* [Pinia migration](./pinia)
* [Vite migration](./vite)
* [Vue migration build removal](./vue-migration-build)
* [Native Vue implementation](./vue-native)
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ nav:

---

# Vue 3 upgrade
# Vue 3 Upgrade

## Introduction

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,10 +23,10 @@ The snippet loading system now follows this resolution order:

When a translation key is requested, Shopware will:

- First check the specific country variant (e.g., `es-AR`)
- If not found, check the base language (e.g., `es`)
- If not found, the legacy fallback will be checked (`en-GB`)
- Finally, fall back to `en` if still not found
* First check the specific country variant (e.g., `es-AR`)
* If not found, check the base language (e.g., `es`)
* If not found, the legacy fallback will be checked (`en-GB`)
* Finally, fall back to `en` if still not found

**Result**: ~90% reduction in duplicate translations while maintaining full functionality.

Expand Down
78 changes: 78 additions & 0 deletions guides/upgrades-migrations/index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
---
nav:
title: Upgrades and Migrations
position: 10

---

# Version Upgrades and Migrations

This section covers version-based upgrades and required migration effort for Shopware core and extensions. When upgrading to a new minor or major Shopware version, review it to understand breaking changes, required adjustments, and compatibility requirements.

## Scope of this section

Upgrades typically fall into one of these categories:

* **Core**: Framework-level changes, data abstraction layer (DAL) updates, APIs, feature removals, and backend behavior.
* **[Administration](administration/index.md)**: frontend framework upgrades, Vue upgrades, breaking changes.
* **Translations**: [Extension translation](extension-translation), [Language pack migration](./language-pack-migration).
Comment thread
keulinho marked this conversation as resolved.
Outdated
* **Extensions**: Version compatibility and required refactorings.

:::info
Administration framework upgrades (Vue, Pinia, Vite, Meteor) may introduce breaking changes requiring major version updates for affected plugins.
:::

## Upgrade strategy for extension developers

To reduce long-term upgrade cost:

* Avoid internal APIs and undocumented features
* Avoid unstable Admin patterns (`this.$parent`, prop mutation, Vue internals)
Comment thread
lasomethingsomething marked this conversation as resolved.
Outdated
* Keep dependencies aligned with Shopware core
* Maintain automated test coverage
* Keep database migrations idempotent
* Track deprecations continuously—do not batch them

## Typical upgrade workflow

When targeting a new Shopware version:

1. Review [release notes](https://www.shopware.com/de/changelog/) and UPGRADE files
Comment thread
lasomethingsomething marked this conversation as resolved.
2. Check breaking changes per layer (Core / Admin / Translations)
Comment thread
lasomethingsomething marked this conversation as resolved.
Outdated
3. Validate extension compatibility
4. Apply required migrations
5. Rebuild Admin/Storefront assets if needed
6. Test critical flows
7. Update extension versions if required

## Extension responsibilities

### Custom projects

* Follow the ([Performing updates guide](../hosting/installation-updates/performing-updates.md)) to stage, test, and execute upgrades in order.
* Review [changelogs](https://github.com/shopware/shopware/tree/trunk/changelog) and UPGRADE files ([example](https://github.com/shopware/shopware/blob/trunk/UPGRADE-6.7.md)) per release.
Comment thread
lasomethingsomething marked this conversation as resolved.
Outdated
* Script data migrations and cache warm-ups.
Comment thread
lasomethingsomething marked this conversation as resolved.
Outdated
* Use feature toggles or maintenance mode to decouple risky changes from the deployment.
Comment thread
lasomethingsomething marked this conversation as resolved.
Outdated

### Custom plugins
Comment thread
lasomethingsomething marked this conversation as resolved.

* Provide migration code for schema/config changes.
* Ship defaults that work on older core versions until you deliberately drop support.
* Test against the target Shopware version matrix before rollout; note breaking changes in the plugin README.
Comment thread
sushmangupta marked this conversation as resolved.

### Store plugins

* Align Store metadata (compatibility range, changelog) with the tested core versions; refuse installation on unsupported versions.
* Run Shopware Store validation on the new build before submission ([Store submission via CLI](../../products/cli/shopware-account-commands/releasing-extension-to-shopware-store.md)).
* Communicate BC breaks explicitly.
* Prefer additive changes and feature flags to keep existing shops stable.

### Apps

* Version manifests carefully. Broaden compatibility only after testing, and narrow it when deprecations apply.
* Keep webhook/action handlers tolerant to new fields and events. Avoid hard coupling to specific core patch behavior.
* Document required scopes/permissions per version and avoid removing scopes without a migration path.
Comment thread
lasomethingsomething marked this conversation as resolved.
Outdated

## Next steps

For the operational update procedure, continue with [Upgrade Shopware](./upgrade-shopware.md).
Loading