
Delving deeply into the structure setup and product release aspects of developing a Shopware application, requires discipline and a step by step process. In this article, you will find a comprehensive guide that begins with setting up the development environment and required tools. By the end of this article, add a simple Shopware app, and include additional features to enhance functionality. The end goal is to have an operational Shopware app at your disposal.
In less than a decade, e-commerce services have been gaining traction due to adoption of technology and its value. There is no doubt that today’s times are roller coaster advancements. Each moment new ventures are opened, and so, it comes as no surprise that new opportunities, products, and even markets will always have a scope. This being said, for the diverse problems and changes which take place around the globe, they necessitate flexible and scalable solutions for businesses. Shopware is one of the best and leading shopping cart solutions in the web which uses two main ways of surpassing its functionality which are plugins and apps.
Shopware apps are preferred for cloud, API and extensive reach customizations which are far less efficient with plugins, as they deeply integrate with the core of Shopware. However, traditionally plugins are just easy. In the following guide, we will see the reasons on why you should build a Shopware app, its strengths and limitations compared to a more orthodox plugin approach.
A Shopware app is an outside service that connects to a Shopware store via APIs and webhooks. Unlike plugins which alter the internal features of Shopware by adding or removing its core functions, apps are independent of the platform and as a result, they are more secure, scalable, and cloud friendly.
Apps use the following for communication with Shopware:
This method of construction helps to ensure that the apps remain compatible with the self-hosted and cloud environments, upgrade friendly and future proof with no changes done to the Shopware core
Developing a Shopware app allows businesses to extend their store’s capabilities without altering the core system. Here’s why you should consider building an app:
There are Two ways to create a Shopware app:
Before creating a Shopware App, it’s important to understand where and how it fits into the Shopware directory structure. Shopware provides an organized folder system where you can develop and manage custom apps.
A Shopware app is not placed directly inside the Shopware core directory but rather in a separate custom folder to maintain modularity and prevent conflicts with core updates.
When you install Shopware, your project structure looks like this:
/shopware-root
├── bin/
├── config/
├── custom/
│ ├── apps/ # This is where your Shopware apps go
│ ├── plugins/ # This is where Shopware plugins go
│ └── static-plugins/ # Other project-specific
├── public/
├── src/
├── vendor/
├── composer.json
└── .env
Here’s what the important directories do:
To create a new Shopware App, we work inside the custom/apps/ directory.
Navigate to it:
$ cd shopware-root/custom/apps/
Create a new directory for your app:
$ mkdir MyShopwareApp $ cd MyShopwareApp
At this point, your app folder structure should look like this:
/custom/apps/
└── MyShopwareApp/
Creating the manifest.xml Inside the MyShopwareApp Folder
Navigate to the App Directory
$ touch manifest.xml
Populate it with the necessary metadata:
MyShopwareApp A description Your Company Ltd. (c) by Your Company Ltd. 1.0.0 Resources/plugin.png MIT

Note: There’s no need to upload a ZIP file in the admin extension upload. Once the app’s folder with a valid manifest.xml is in the custom/apps/ directory, Shopware recognizes it, allowing you to install and activate the app directly from the admin panel.
Also Read:
Top 10 Shopware Development CompaniesShopware provides a CLI (Command Line Interface) for managing apps efficiently. This method is useful for quickly generating the required structure, including the manifest.xml file, without manually creating folders and files.

Open your terminal and move to the root of your Shopware project:
$ cd /path/to/shopware
Run the following command to create an app:
$ bin/console app:create MyShopwareApp
This command will prompt you for the following optional information (press Enter to skip any field):
Once completed, Shopware will generate the necessary app structure inside custom/apps/MyShopwareApp/, including the manifest.xml file.
To install the newly created app, run:
$ bin/console app:install MyShopwareApp
If you want to install and activate the app simultaneously, use:
$ bin/console app:install MyShopwareApp -a
Or
$ bin/console app:install MyShopwareApp --activate
Or activate after install cli
$ bin/console app:activate MyShopwareApp
To check if the app is properly structured and contains no errors, run:
$ bin/console app:validate
This will validate all installed apps. If you want to validate only a specific app, use:
$ bin/console app:validate MyShopwareApp
Once installed, you can check your app in the Shopware Admin:
1. Go to Extensions > My Extensions
2. Locate MyShopwareApp in the list
3. If not activated, enable it from the admin
Generated manifest.xml Example
After using the CLI command, the manifest.xmlfile inside custom/apps/MyShopwareApp/will look something like this:
MyShopwareApp
A description
Your Company Ltd.
(c) by Your Company Ltd.
1.0.0
Resources/plugin.png
MIT
Shopware Admin Extensions Page


To enable communication between your Shopware store and your custom app, you need an app server. The app server acts as a bridge, handling API requests, authentication, and data exchange. Symfony, a powerful PHP framework, is an ideal choice for building this server due to its flexibility and robust ecosystem.
In this guide, we will walk through setting up a Symfony-based app server and integrating the Shopware App Bundle to facilitate Shopware’s app registration and communication.
First, create a new Symfony project using the Symfony Skeleton setup. Open your terminal and run the following command:
composer create-project symfony/skeleton:"7.2.*" my-app
This command sets up a minimal Symfony project named my-app. Symfony Skeleton provides only the essential packages, allowing you to add the necessary components as needed.
Once the project is created, navigate into the project directory:
cd my-app
The Shopware App Bundle provides essential tools for registering and authenticating your app with a Shopware store. Install it using Composer:
composer require shopware/app-bundle
composer require doctrine/orm symfony/doctrine-bridge
This will add the required dependencies to your Symfony project, making it compatible with Shopware’s app system.
Your app server requires a database to store Shopware registration details and other necessary information.
Create a new database named myApp (or any other name of your choice) in MySQL.
You can do this using the MySQL command line:
CREATE DATABASE myApp;
Alternatively, if you are using a tool like phpMyAdmin, create a new database manually.
Next, open the .env file in your Symfony project and update the DATABASE_URL parameter with your database connection details:
DATABASE_URL=mysql://root:Admin@localhost/myApp
Ensure that:
To create the necessary database tables, you need to generate and run migration files.
Run the following commands to install the Maker Bundle (for generating migrations) and Doctrine Migrations (for handling migrations):
composer require symfony/maker-bundle --dev composer require migrations
Once the necessary packages are installed, generate the migration files:
bin/console make:migration
This command creates a new migration file in the migrations/ directory, containing the necessary schema changes.
Run the migration to apply the changes to your database:
bin/console doctrine:migrations:migrate
Once executed, this will create the required tables in the myApp database, including the ones needed for Shopware registration details.
Once everything is set up, start the Symfony development server with the following command:
symfony server:start
By default, this will start the server at:
http://127.0.0.1:8000
You can now access your Symfony app in the browser. This server will handle Shopware authentication and API requests.

In order to facilitate communication between your custom app and your Shopware store, you require an app server. The app server serves as an intermediary, processing API calls, authentication, and data transfer. A great choice to construct the server is Symfony, a fast PHP framework that’s highly flexible and has a good ecosystem.
In this tutorial, we will guide you through installing a Symfony-based app server and integrating the Shopware App Bundle to enable Shopware’s app registration and communication.
Locate the manifest.xml file inside your Shopware app directory. This file contains essential configurations for the app, including the registration URL and security settings.
Inside the setup section of manifest.xml, add the following lines:
http://127.0.0.1:8000/app/lifecycle/register TestSecretCode
Explanation:
To allow the app server to authenticate Shopware requests, you need to configure it with the same app name and secret that were set in the manifest.xml file.
Navigate to your Symfony app server project and open the .env file.
###> shopware/app-bundle ### SHOPWARE_APP_NAME=MyShopwareApp SHOPWARE_APP_SECRET=TestSecretCode ###< shopware/app-bundle ###
Explanation:

After making these changes, you need to reinstall the Shopware app or clear the cache for the updates to take effect.
Run the following command inside your Shopware project to reinstall the app:
bin/console app:install MyShopwareApp --activate
Alternatively, you can deactivate and reactivate the app from the Shopware Admin Panel under Extensions > My Extensions.
If the changes are not reflected, try clearing the cache using the following command:
bin/console cache:clear
After reinstalling the app, you can verify that Shopware has successfully registered with your app server.
Since the Shopware App Bundle automatically stores registration details, you can check the shop table in your app server’s database.

Run the following SQL query to verify:
SELECT * FROM shop;
If the connection is successful, you should see an entry containing details about your Shopware store.
Creating an app is the most straightforward way of customizing and extending the capabilities of Shopware. For this, you can define options in the manifest file, manually or through a command line, set the app skeleton, and for advanced functionalities, attach an app server with Symfony. You already know how to create, install, and activate a Shopware application, perform CLI checks, and configure an app server to augment functionality.
Thanks to the integration of Shopware with the app server, more complex and comprehensive applications can be developed. Apart from API integrations and other customizations, further enhancements are needed to meet the user expectations.
Click one of our contacts below to chat on WhatsApp