Datenschutzfreundliche Webanalyse für Shopware 6.6/6.7 mit vollständigem E-Commerce-Tracking, Klaro Consent Manager Integration und DSGVO-konformen Datenschutzfunktionen.
Warum Matomo? Anders als Google Analytics kann Matomo auf deinem eigenen Server gehostet werden, was dir vollständige Kontrolle über deine Daten gibt. Kombiniert mit den Datenschutzfunktionen dieses Plugins erreichst du:
| Feature | Beschreibung |
|---|---|
| Cookieless Tracking | Besucher ohne Cookies tracken für reduzierte Datenerfassung |
| IP-Anonymisierung | Konfigurierbare Anonymisierungsstufen (1-4 Bytes) |
| Do-Not-Track-Respektierung | Browser-DNT-Einstellungen beachten |
| Klaro-Integration | Nahtlose Integration mit Klaro Cookie Consent Manager (Auto-Setup) |
| E-Commerce-Tracking | Produktansichten, Warenkorb-Updates, Bestellabschlüsse |
| Multi-Sales-Channel | Unterschiedliche Konfigurationen pro Verkaufskanal |
| Heartbeat-Timer | Genaue Verweildauer-Messung |
| Link- & Download-Tracking | Ausgehende Links und Datei-Downloads tracken |
Die Installation über den Shopware Store wird empfohlen. Nach dem Kauf kannst du das Plugin direkt aus dem Backend installieren.
Füge das private Composer-Repository zur composer.json deines Shops hinzu:
{
"repositories": [
{
"type": "composer",
"url": "https://packeton.markus-michalski.net"
}
]
}
Hinweis: Die Repository-Zugangsdaten werden nach dem Lizenzkauf bereitgestellt. Private Repositories werden über Packeton verwaltet.
composer require mmd/matomo-analytics
Bei der Authentifizierungsabfrage die mit der Lizenz erhaltenen Zugangsdaten eingeben.
bin/console plugin:refresh
bin/console plugin:install --activate MmdMatomoAnalytics
bin/console cache:clear
Auf die neueste Version aktualisieren:
composer update mmd/matomo-analytics
bin/console cache:clear
Plugin-Konfiguration im Shopware Admin unter:
Einstellungen > Erweiterungen > Matomo Analytics
| Einstellung | Erforderlich | Beschreibung |
|---|---|---|
| Matomo URL | Ja | URL deiner Matomo-Installation (z.B. https://analytics.example.com) |
| Site ID | Ja | Die Site-ID aus deiner Matomo-Installation |
| Tracking aktivieren | Ja | Hauptschalter für alles Tracking |
| Einstellung | Standard | Beschreibung |
|---|---|---|
| Cookie-loses Tracking | An | Tracking ohne Cookies - reduziert gespeicherte Daten |
| IP-Anonymisierung | 2 Bytes | Wie viele Bytes der IP-Adresse maskiert werden (192.168.xxx.xxx) |
| Do-Not-Track respektieren | An | Browser-DNT-Einstellungen beachten |
| Cookie-Einwilligung erforderlich | Aus | Nur nach expliziter Einwilligung tracken (für Cookie-basiertes Tracking) |
IP-Anonymisierungsstufen:
| Einstellung | Standard | Beschreibung |
|---|---|---|
| Klaro Consent Manager verwenden | Aus | Integration mit Klaro Cookie Consent Plugin aktivieren |
| Klaro Service-Name | matomo | Muss mit dem Service-Namen in Klaro übereinstimmen |
Wenn aktiviert, wird das Tracking-Script blockiert bis der Nutzer über das Klaro-Modal zustimmt. Siehe Klaro Integration unten.
| Einstellung | Standard | Beschreibung |
|---|---|---|
| E-Commerce-Tracking aktivieren | An | Hauptschalter für E-Commerce-Funktionen |
| Produktansichten tracken | An | Tracken wenn Nutzer Produktdetailseiten besuchen |
| Warenkorb-Änderungen tracken | An | Add-to-Cart und Warenkorbänderungen tracken |
| Bestellungen tracken | An | Abgeschlossene Bestellungen mit Umsatz tracken |
| Einstellung | Standard | Beschreibung |
|---|---|---|
| Admin-Benutzer tracken | Aus | Eingeloggte Admin-Benutzer im Tracking einschließen |
| Heartbeat-Timer aktivieren | Aus | Genaue Verweildauer-Messung |
| Heartbeat-Intervall | 15 | Sekunden zwischen Heartbeat-Pings |
| Ausgehende Links tracken | An | Klicks auf externe Links tracken |
| Downloads tracken | An | Datei-Downloads tracken (PDF, ZIP, etc.) |
Wenn du das Klaro Cookie Consent Plugin verwendest und vor dem Tracking eine Nutzereinwilligung verlangen möchtest, folge diesen Schritten:
In Einstellungen > Erweiterungen > Matomo Analytics:
matomo setzen (oder deinen bevorzugten Namen)Bei Installation oder Update des Matomo Plugins wird automatisch ein Klaro Cookie Service für Matomo angelegt, sofern das MmdKlaroConsent Plugin installiert ist. Die Migration:
matomo-Service existiert (überspringt falls vorhanden, z.B. bei manueller Erstellung)| Feld | Wert |
|---|---|
| Technischer Name | matomo |
| Titel (DE) | Matomo Analytics |
| Titel (EN) | Matomo Analytics |
| Zweck | analytics |
| Erforderlich | Nein |
| Standard aktiviert | Nein |
| Aktiv | Ja |
Der Service wird automatisch allen Storefront Sales Channels zugeordnet und enthält Cookie-Patterns für _pk_id, _pk_ses und _pk_ref.
Kein manuelles Setup nötig! Wenn du Matomo nach Klaro installierst, erscheint der Service automatisch im Klaro Consent-Dialog. Falls du Matomo vor Klaro installiert hast, führe einfach
bin/console plugin:update MmdMatomoAnalyticsaus, um die Migration auszulösen.
Der automatisch erstellte Service enthält die grundlegenden Cookie-Patterns. Wenn du KEIN cookieless Tracking verwendest und alle möglichen Matomo-Cookies abdecken möchtest, kannst du die Cookie-Regeln im Klaro-Admin erweitern:
[
{"pattern": "_pk_id", "path": "/"},
{"pattern": "_pk_ref", "path": "/"},
{"pattern": "_pk_ses", "path": "/"},
{"pattern": "_pk_cvar", "path": "/"},
{"pattern": "_pk_hsr", "path": "/"},
{"pattern": "MATOMO_SESSID", "path": "/"},
{"pattern": "piwik_ignore", "path": "/"},
{"pattern": "mtm_consent", "path": "/"},
{"pattern": "mtm_consent_removed", "path": "/"}
]
Hinweis: Wenn du cookieless Tracking verwendest, setzt Matomo keine Cookies und du kannst die Cookie-Regeln leer lassen. Je nach rechtlicher Bewertung kann dennoch eine Einwilligung erforderlich sein.
type="text/plain" statt text/javascript gerenderttext/javascript und führt es ausDas Plugin trackt automatisch E-Commerce-Events wenn aktiviert:
Getrackt wenn ein Nutzer eine Produktdetailseite besucht:
Getrackt wenn sich der Warenkorbinhalt ändert:
Getrackt auf der Bestellbestätigungsseite:
Für eigene Template-Integrationen:
{# Prüfen ob Tracking aktiviert ist #}
{% if matomo_is_enabled(context.salesChannel.id) %}
{# Matomo ist aktiv #}
{% endif %}
{# Prüfen ob E-Commerce-Tracking aktiviert ist #}
{% if matomo_ecommerce_enabled(context.salesChannel.id) %}
{# E-Commerce-Tracking ist aktiv #}
{% endif %}
{# Tracking-Code rendern (ohne Script-Tags) #}
{{ matomo_tracking_code(context.salesChannel.id) }}
{# Tracking-Code mit Script-Tags rendern #}
{{ matomo_tracking_script(context.salesChannel.id)|raw }}
{# Opt-Out-iFrame rendern #}
{{ matomo_opt_out_iframe(context.salesChannel.id, 'de', 'ffffff', '000000')|raw }}
Du kannst eine Matomo Opt-Out-Option auf deiner Datenschutzseite hinzufügen:
{{ matomo_opt_out_iframe(
context.salesChannel.id,
app.request.locale, {# Sprache #}
'ffffff', {# Hintergrundfarbe #}
'000000' {# Schriftfarbe #}
)|raw }}
Dieses Plugin wurde mit Datenschutz im Fokus entwickelt:
| Aspekt | Umsetzung |
|---|---|
| Cookies | Optional - cookieless Tracking verfügbar |
| IP-Speicherung | Anonymisiert (konfigurierbare Stufe) |
| DNT-Header | Respektiert wenn aktiviert |
| Einwilligung | Klaro-Integration verfügbar |
| Datenspeicherort | Dein Matomo-Server (selbst gehostet) |
Für datenschutzfreundliches Tracking:
Wichtiger rechtlicher Hinweis: Ob eine Einwilligung für Analytics-Tracking erforderlich ist, hängt von deiner Rechtsordnung und der konkreten Implementierung ab. Auch bei cookieless Tracking und IP-Anonymisierung empfehlen viele Rechtsexperten, eine Nutzereinwilligung für Analytics einzuholen. Konsultiere einen Rechtsexperten um die angemessenen Einwilligungsanforderungen für deine spezifische Situation zu bestimmen.
bin/console cache:clearbin/console theme:compileWenn dein Shop und dein Matomo-Server auf verschiedenen (Sub-)Domains laufen (z.B. shop.example.com und analytics.example.com), kann der Browser die Tracking-Requests aufgrund fehlender CORS-Header blockieren. Im Browser-Netzwerktab siehst du dann Fehler wie blocked oder ERR_BLOCKED_BY_CLIENT.
Lösung: Füge CORS-Header zur Apache-Konfiguration deines Matomo-Servers hinzu:
# In der VirtualHost-Konfiguration deines Matomo-Servers
<IfModule mod_headers.c>
SetEnvIf Origin "^https://(.+\.)?example\.com$" CORS_ORIGIN=$0
Header always set Access-Control-Allow-Origin "%{CORS_ORIGIN}e" env=CORS_ORIGIN
Header always set Access-Control-Allow-Methods "GET, POST, OPTIONS" env=CORS_ORIGIN
Header always set Access-Control-Allow-Credentials "true" env=CORS_ORIGIN
</IfModule>
Ersetze example\.com durch deine Domain (Punkte müssen mit Backslash escaped werden).
Nach der Änderung Apache neu laden:
sudo apachectl configtest && sudo systemctl reload apache2
Für Nginx:
# In der server-Konfiguration deines Matomo-Servers
set $cors_origin "";
if ($http_origin ~* "^https://(.+\.)?example\.com$") {
set $cors_origin $http_origin;
}
add_header Access-Control-Allow-Origin $cors_origin always;
add_header Access-Control-Allow-Methods "GET, POST, OPTIONS" always;
add_header Access-Control-Allow-Credentials "true" always;
type="text/plain" im Script-Tag erscheint (Quelltext anzeigen)Kommerzielle Lizenz - Einzelinstallations-Lizenz inklusive:
Siehe LICENSE-Datei für vollständige Bedingungen.
Bei Fragen und Support:
Markus Michalski
E-Mail: support@markus-michalski.net