Skip to content



Shopware provides a built-in profiler abstraction to measure the performance of code parts and publish this data to a profiler backend.

Enabling the profiler backends

By default, only the Stopwatch profiler (Symfony Profiler Bar) is enabled. To enable the other profiler backends, you have to add the following configuration to your config/packages/shopware.yaml file:

            - Symfony
            # Requires the dd-trace PHP extension
            - Datadog
            # Requires the tideways PHP extension
            - Tideways
            # Requires the opentelemetry PHP extension
            - OpenTelemetry


The OpenTelemetry profiler is not installed by default. Checkout the OpenTelemetry Integration to learn how to install it.

Adding custom spans

To add custom spans to the profiler, you can use the Shopware\Core\Profiling\Profiler::trace method:

use Shopware\Core\Profiling\Profiler;

$value = Profiler::trace('my-example-trace', function () {
    return $myFunction();

And then you can see the trace in the configured profiler backends.

Adding a custom profiler backend

To add a custom profiler backend, you need to implement the Shopware\Core\Profiling\Integration\ProfilerInterface interface and register it as a service with the tag shopware.profiler.

The following example shows a custom profiler backend that logs the traces to the console:


namespace App\Profiler;

use Shopware\Core\Profiling\Integration\ProfilerInterface;

class ConsoleProfiler implements ProfilerInterface
    public function start(string $title, string $category, array $tags): void
        echo "Start $name\n";

    public function stop(string $title): void
        echo "Stop $name\n";
<service id="App\Profiler">
    <tag name="shopware.profiler" integration="Console"/>

The attribute integration is used to identify the profiler backend in the configuration.