RcTracking: DSGVO-konformes Tracking zentral verwalten
GTM-Code im Theme-Header, UET-Tag per Snippet-Plugin, Facebook-Pixel irgendwo dazwischen — in den meisten Shopware-Shops ist Tracking ein Wildwuchs aus Code-Schnipseln, die irgendwer irgendwann in irgendein Template kopiert hat. Beim nächsten Theme-Update geht die Hälfte verloren, und ob jedes Script auf den Cookie-Consent wartet, weiß niemand so genau. RcTracking bündelt alle Tracking-Codes an einer Stelle und garantiert: Kein Script lädt ohne Kundenzustimmung.
Warum Tracking nicht ins Theme gehört
Die übliche Vorgehensweise sieht so aus: GTM-Container-Code in die header.html.twig kopieren, Microsoft UET über ein Snippet-Plugin einbinden, weitere Pixel je nach Marketing-Agentur irgendwo dazwischen streuen. Das funktioniert — bis drei Probleme auftauchen.
Erstens der Consent: Jedes Script muss einzeln mit dem Consent-Status verknüpft werden. Wer das bei einem der Snippets vergisst, hat ein DSGVO-Problem. Zweitens die Wartung: Wer das Theme aktualisiert, verliert die manuell eingefügten Code-Schnipsel. Das merkst du erst, wenn die Tracking-Daten ausbleiben — oft Tage später. Drittens die Übersicht: Tracking-Codes verteilt über Template-Dateien, Snippet-Plugins und Theme-Konfiguration. Drei Monate später weiß niemand mehr, was wo liegt.
RcTracking löst alle drei Probleme. Eine zentrale Stelle für alle Tracking-Codes, automatische Consent-Prüfung vor dem Laden jedes Scripts, und kein Risiko bei Theme-Updates, weil nichts im Theme liegt.
So funktioniert das Plugin
Alle Tracking-Codes werden in der Plugin-Konfiguration hinterlegt. Google Tag Manager und Microsoft UET haben eigene Felder — Container-ID bzw. Tag-ID eintragen, aktivieren, fertig. Für alles andere gibt es ein Custom-Code-Feld, in das du beliebiges Script einfügen kannst.
Bevor irgendein Script in den DOM eingefügt wird, prüft das Plugin den Consent-Status des Kunden. Ohne Zustimmung passiert nichts — kein GTM-Container, kein UET-Tag, kein Custom Code. Das gilt auch für den initialen Seitenaufruf. Es wird kein einziger Tracking-Request abgesetzt, bevor der Kunde aktiv zugestimmt hat. Keine Ausnahmen, keine Hintertüren.
Installation
Installation per Composer in der DDEV-Umgebung:
ddev composer require ruhrcoder/rc-tracking
ddev exec bin/console plugin:refresh
ddev exec bin/console plugin:install --activate RcTracking
ddev exec bin/console cache:clear
Konfiguration
Alle Einstellungen findest du unter Erweiterungen > Meine Erweiterungen > RcTracking > Konfiguration:
| Einstellung | Beschreibung | Beispiel |
|---|---|---|
| GTM Container-ID | Google Tag Manager Container-ID | GTM-XXXXXXX |
| GTM aktiv | Google Tag Manager aktivieren | Ja |
| UET Tag-ID | Microsoft UET Tag-ID | 12345678 |
| UET aktiv | Microsoft UET aktivieren | Ja |
| Custom Code | Beliebiger Tracking-Code | <script>…</script> |
| Custom Code aktiv | Custom Tracking-Code aktivieren | Nein |
| Marketing Purpose-ID | Purpose-ID des Consent Managers für Marketing-Cookies | marketing |
Jeder Tracking-Dienst lässt sich einzeln aktivieren und deaktivieren. So kannst du den GTM laufen lassen, während du den UET-Tag vorübergehend abschaltest — ohne Code anzufassen, ohne Template zu editieren.
Consent-Integration
Die Verknüpfung mit dem Consent Manager läuft über die Marketing Purpose-ID. Das ist die ID, die dein Consent Manager für den Marketing-Zweck verwendet. Bei Cookiebot, Consentmanager.net oder Usercentrics findest du sie in den Einstellungen des jeweiligen Tools. Trage sie in die Plugin-Konfiguration ein, und RcTracking weiß, wann es die Scripts laden darf.
Das Plugin arbeitet mit Shopwares Consent-API. Jeder Consent Manager, der diese API bedient, funktioniert mit RcTracking. Ich habe es mit Cookiebot, Consentmanager.net und Usercentrics getestet. Falls du einen anderen Consent Manager verwendest, der die Shopware-Cookie-API nutzt, sollte es ebenfalls funktionieren.
Praxisbeispiel: GTM und UET parallel
Ein Shop schaltet Google Ads und Microsoft Ads gleichzeitig. Der Google Tag Manager liefert die Conversion-Daten an Google, der Microsoft UET-Tag an Bing. Ohne RcTracking sind das zwei verschiedene Code-Snippets an zwei verschiedenen Stellen, die beide einzeln mit dem Consent verknüpft werden müssen.
Mit RcTracking trägst du beide IDs in die Plugin-Konfiguration ein, setzt die Marketing Purpose-ID und bist fertig. Beide Scripts laden erst nach Consent, beide überleben Theme-Updates. Wenn die Marketing-Agentur nächsten Monat noch einen Facebook-Pixel will, fügst du ihn als Custom Code hinzu. Alles an einer Stelle, alles consent-geprüft, alles in fünf Minuten eingerichtet.
Und wenn du einen Tracking-Dienst temporär abschalten willst — etwa weil eine Kampagne pausiert — setzt du den Schalter in der Konfiguration auf Nein. Kein Code-Snippet suchen, kein Template anfassen, kein Deployment. Ein Klick in der Administration, und der Dienst ist still.
Update
Updates laufen über Composer:
ddev composer update ruhrcoder/rc-tracking
ddev exec bin/console plugin:update RcTracking
ddev exec bin/console cache:clear
Die gezeigten Code-Beispiele dienen zur Veranschaulichung. Nutzung auf eigene Verantwortung. Mehr dazu