Add custom service


In this guide you'll learn how to create a custom service using the Symfony DI Container.


In order to add your own custom service for your plugin, you first need a plugin as base. Therefore, you can refer to the Plugin Base Guide.

Adding service

Adding a custom service requires to load a services.xml file with your plugin. This is done by placing a file with name services.xml into a directory called src/Resources/config/.
Here's our example services.xml:
<plugin root>/src/Resources/config/services.xml
<?xml version="1.0" ?>
<container xmlns=""
<service id="Swag\BasicExample\Service\ExampleService" />
Therefore, this is how your service could then look like:
<plugin root>/src/Service/ExampleService.php
// SwagBasicExample/src/Service/ExampleService.php
<?php declare(strict_types=1);
namespace Swag\BasicExample\Service;
class ExampleService
public function doSomething(): void
By default, all services in Shopware 6 are marked as private. Read more about private and public services.

Next steps

You have now created your own custom service. In the same manner, you can create other important plugin classes, such as commands, scheduled tasks or a subscriber to listen to events.
Furthermore, we also have a guide explaining how to customize an existing service instead.