Cookie Consent und Google Tag Manager Probleme

Guten Tag Zusammen,

wir verwenden das Plugin: 

Google Tag Manager + Enhanced E-Commerce Tracking für Shopware von Webmatch 

und stehen vor dem Problem das unter den Cookie Einstellungen zwar der Bereich “Statistik & Tracking” aufgegliedert wird, jedoch kein Google Tag Manager / Analytics oder jegliches aufgelistet wird. Es werden lediglich die Punkte Endgeräte-Erkennung und Partnerprogramm aufgelistet. Gerne würden wir hier die Pixel der jeweiligen Platformen angeben Facebook, Google, Snapchat, etc. und anschließend per Google Tag Manager und Cookies triggern.

Aktuell ist es so, dass wenn alles abgelehnt wird wir den den Cookie “cookieDeclined” mit dem Wert “1” erhalten und falls alles akzeptiert wird erhalten wir den Cookie “cookiePreferences” mit folgenden Werten:

{
   "groups":{
      "technical":{
         "name":"technical",
         "cookies":{
            "cookieDeclined":{
               "name":"cookieDeclined",
               "active":true
            },
            "allowCookie":{
               "name":"allowCookie",
               "active":true
            },
            "shop":{
               "name":"shop",
               "active":true
            },
            "csrf_token":{
               "name":"csrf_token",
               "active":true
            },
            "cookiePreferences":{
               "name":"cookiePreferences",
               "active":true
            },
            "x-cache-context-hash":{
               "name":"x-cache-context-hash",
               "active":true
            },
            "nocache":{
               "name":"nocache",
               "active":true
            },
            "session":{
               "name":"session",
               "active":true
            },
            "currency":{
               "name":"currency",
               "active":true
            }
         },
         "active":true
      },
      "comfort":{
         "name":"comfort",
         "cookies":{
            "slt":{
               "name":"slt",
               "active":true
            },
            "sUniqueID":{
               "name":"sUniqueID",
               "active":true
            }
         },
         "active":false
      },
      "statistics":{
         "name":"statistics",
         "cookies":{
            "x-ua-device":{
               "name":"x-ua-device",
               "active":true
            },
            "partner":{
               "name":"partner",
               "active":true
            }
         },
         "active":true
      }
   },
   "hash":"XXX"
}

Ich verstehe nur nicht, wieso auch “cookieDeclined” auf true steht ? Hat jemand das gleiche Problem und hat uns einen Rat, wie man das mit dem verwendeten Plugin + Consent Tool sauber hinbekommt?

 

Grüße

Hallo,

das liegt wahrscheinlich daran, dass das Plugin einfach nicht mit dem Cookie Consent Tool von Shopware seitens des Herstellers kompatibel gemacht wird oder wurde - das sieht man auch speziell am Datum des letzten Updates des Plugins, da es zu der Zeit das Cookie Consent Tool noch nicht gab. Lösung: einfach ein Plugin für die Funktion nutzen, dass das Cookie Consent Tool von Shopware unterstützt, da gibt es einige im Shopware Store. Und die anderen (technischen) Cookies von Shopware haben so schon Ihre Berechtigung bzw. auch Ihr Wert.

In der Installationsanleitung zum Plugin steht aber auch bei Punkt 4, wie man das Plugin selbst manuell mit dem Shopware Cookie Consent Tool kompatibel machen kann - wem das zu kompliziert ist, kann wie oben erwähnt ja einfach ein Plugin nutzen, dass die Funktion gleich mit anbietet.

Grüße

Sebastian

1 „Gefällt mir“

Hier geht es zum ISSUE, bitte VOTEN:

https://issues.shopware.com/issues/SW-25131

Hallo alle miteinander,

ich habe ein ähnliches Problem mit dem Cookie Consent Tool von Shopware und dem Google Tag Manager von Webmatch.

Zunächst einmal zu dem sschreier  gesagt hat.

@sschreier schrieb:

In der Installationsanleitung zum Plugin steht aber auch bei Punkt 4, wie man das Plugin selbst manuell mit dem Shopware Cookie Consent Tool kompatibel machen kann - wem das zu kompliziert ist, kann wie oben erwähnt ja einfach ein Plugin nutzen, dass die Funktion gleich mit anbietet.

Wenn ich das in der Dokumentation die in Punkt 4 steht richtig interpretiere geht es hierbei nicht um den Shopware internen Cookie Consent Manager sondern um das js „Cookie Consent“ was eine externe Toolbar einbindet und nicht die von Shopware.

 

Um die Cookies dem Cookie Consent Tool von Shopware bekannt zu machen bin ich dieser Anleitung gefolgt von Shopware selbst.

 

Dabei ist folgender Code entstanden:

 'addStatisticsCookie'
        ];
    }

    public function addStatisticsCookie(): CookieCollection
    {
        $collection = new CookieCollection();
        $collection->add(new CookieStruct(
            'Google Tag Manager',
            '/^(_ga|_gid)/',
            CookieGroupStruct::STATISTICS
        ));

        $collection->add(new CookieStruct(
            'Facebook Pixel',
            '/^(_fbp)/',
            CookieGroupStruct::STATISTICS
        ));

        return $collection;
    }
}

Wenn ich die Dokumentation richtig verstehe so löscht der Cookie Consent von Shopware jedes Cookie das ihm nicht bekannt ist, somit auch die _ga cookies etc, die der Tag Manager mitbringt. Wenn ich nun einfach diese Cookies in der Cookiebar einbinde. Müsste ich ja den Tag Manager von Webmatch DSGVO Konform eingebunden bekommen oder?

Da ich jetzt allerdings noch nicht so bewandert bin in Shopware hier meine Frage. Wo genau muss ich diesen Code einfügen damit es funktioniert? Muss ich hierzu ein eigenes kleines Plugin schreiben was den Cookie Consent von Shopware erweitert?

Das wäre auch meine Frage: Wo (Datei / Verzeichnis) lege ich den Code für ein neues Cookie ab?

VG Olli

Meine Lösung des Problems in ganz kurzen Schritten:

Eigenes Plugin: in der plugin.php auf Event “CookieCollector_Collect_Cookies” eine Methode setzen, die mittels 

$collection = new CookieCollection();

$collection->add(new CookieStruct(
	'statistics',
	'/^atg-marketing/',
	'Google Analytics & AdWords',
	CookieGroupStruct::STATISTICS
));
		
return $collection;

ein Cookie im ConsentManager anmeldet (wenn ihr das nachbastelt: “atg-marketing” gegen einen eigenen Namen austauschen!)

auf “Enlight_Controller_Action_PostDispatchSecure_Frontend” setzt ihr eine Methiode, die mittels 

$preferences = $this->arguments->getRequest()->getCookie(CookieHandler::PREFERENCES_COOKIE_NAME);

if ($preferences !== null) {
    $preferences = json_decode($preferences, true);
    $allowed = $this->cookieHandler->isCookieAllowedByPreferences('atg-marketing', $preferences);

if ($allowed) {
    Shopware()->Container()->get('front')->Response()->setCookie('atg-marketing', 'erlaubt');
}

ein Cookie schreibt, wenn der Nutzer das in seinen Einstellungen erlaubt hat.

So, nun im Google TagManager dieses Cookie auslesen (als Variable vom Typ First-Party-Cookie anlegen) und die Trigger so anpassen, dass die RTags nur feuern, wenn im Cookie “erlaubt” drin steht (oder welchen String ihr da auch immer reingeschrieben habt).

[Nachtrag]

Theoretisch reicht es, wenn das Cookie überhaupt geschrieben ist … der TagManager liefert dann ein undefined als Variablenwert für das Cookie zurück und wenn man den Formatwert der Varibale “undefined konvertieren in false” festlegt, braucht ihr die Variable beim Trigger nur auf false testen (also nur triggern, wenn !== false)

 

[Nachtrag 2]

Das CookieConsentTool löscht die _ga - Cookies eben nicht selbständig. Alles, was von außen per Script reinkommt, wird nicht angefasst. Außerdem darf das Cookie gar nicht erst geschrieben werden. Ziel ist es also, den GTM gar nicht erst Analytics & Co. antriggern zu lassen. Der GTM selber ist cookieless.

 

[Nachtrag 3]

Die ganz elegante Lösung wäre anstatt des Cookie eine entsprechende DataLayer-Variable zu schreiben und diese dann im GTM auszuwerten :smiley:

1 „Gefällt mir“

Consent Tool läuft immer noch nicht mit GTM (egal über welches Plugin). Was ist da denn los?

Bitte implementiert doch einfach in den Google Integration GTM und nicht nur Analytics und hier natürlich funktionierenden Cookie Consent.

Es gibt seit gestern ein Update des SWAG Google Integration Plugin (Version 3.15). Mit dem soll das Conversion Tracking wieder funktonieren. 

Ggf. damit arbeiten.

@raymond‍

Das ConsentTool läuft bei uns hervorragend mit dem GTM.

Es gilt nur eine Dinge zu beachten :slight_smile:

Man braucht ein eigenes Plugin dazu und dann in der Example.php

public static function getSubscribedEvents() {
   return [
     'CookieCollector_Collect_Cookies' => 'addCookies',
     'Enlight_Controller_Action_PostDispatchSecure_Frontend' => onEnlightControllerActionPostDispatchSecureFrontend'
   ];
}

public function addCookies(): CookieCollection
	{
		$collection = new CookieCollection();
		
		$collection->add(new CookieStruct(
			'statistics',
			'/^(atg-marketing$|_ga$|_gcl_au$|_gid$|_gat_UA)/',
			'Google Analytics & AdWords',
			CookieGroupStruct::STATISTICS
		));
		
		return $collection;
	}

public function onEnlightControllerActionPostDispatchSecureFrontend(\Enlight_Event_EventArgs $arguments) {
        $preferences = $this->arguments->getRequest()->getCookie(CookieHandler::PREFERENCES_COOKIE_NAME);
	
	    if ($preferences !== null) {
		    $preferences = json_decode($preferences, true);
		    $allowed = (int)$this->cookieHandler->isCookieAllowedByPreferences('atg-marketing', $preferences);
			
		    if ($allowed) {
			    $this->arguments->getResponse()->setCookie('atg-marketing', 'true');
		    }
	    } }

Wobei “atg-marketing” durch einen eigenen Cookie-Namen zu ersetzen ist.

Im GTM gehts dann jetzt weiter:

  1. Eine Varibale erstellen vom Typ “First-Party-Cookie” und bennen (in unserem Fall “ATG Marketing Cookie”)

  2. Den Cookie-Namen eures Cookies zuweisen (in unserem Fall eben “atg-marketing”)

  3. der Variable den Formatwert “undefined konvertieren in false” zuweisen

  4. alle Trigger anpassen, die Analytics & Co. antriggern -> eine zusätzliche Bedingung einfügen " ist nicht gleich false" (in unserem Fall also “ATG Marketing Cookie” ist nicht gleich false … heißt: die Trigger triggern nur, wenn der GTM das Cookie lesen konnte (das ConsentTool es also nicht gelöscht hat)

Wenn man sich an die Manuals von Google gehalten hat, hat man für den Analytics-Tag eine eigene Varibale, in der die Einstellungen für Ananyltics gespeichert sind. Die muss angepasst werden.

“Cookie-Domain” muss nach “none” geändert werden

btw. wenn man an der Stelle einen neuen Feldnamen “anonymizeIp” mit dem Wert “true” anlegt, hat man die IP-Anonymisierung bei Analytics auch gleich noch erledigt

 

Und das wars dann schon. Wer Ads-Conversions drin hat und dort domainübergreifend verlinkt, muss den Tag auch anpassen und einen festen Cookienamen und eine Domain vergeben - es MUSS die Doamin sein, auf der das ConsentTool zugreift (Obicht: Google schreiobt die Cookies im Standard als Wildcard-Domain – die kann das CT NICHT löschen).

Gibt der Nutzer im Consenttool “Statistik” frei, schreibt unser Plugin das Cookie, der GTM liest es aus (ist also NICHT “undefined” aka false) und triggert die Tags.

Entzieht der Nutzer sein Einverständnis (oder giobt es gar nicht erst frei), wird unser Cookie nicht mehr geschrieben, der GTM kann es nicht lesen, ist also “undefined” aka false, triggert nicht, und Analytics & Co. schreiben keine Cookies.

Da deren Cookies in unserem Plugin “angemeldet” sind (’/^(atg-marketing$|_ga$|_gcl_au$|_gid$|_gat_UA)/’,), kennt das ConsentTool die, weis, dass sie im Moment nicht erlabt sind und löscht sie. System sauber :slight_smile:

1 „Gefällt mir“

@wolkenkrieger‍ ich muss also nicht nur in Shopware ein neues Plugin schreiben, sondern auch im Google Tag Manager etwas einstellen?

ist das nun kompatibel mit einem Shopware GTM Plugin oder bindest du das Google Script dann selbst manuell ein?

Ja, du musst den GTM entsprechend konfigurieren (ist aber alles gut in der Hilfe beim GTM beschrieben … anonsten frag ruhig). Und ja, das ist im Grunde kompatibel mit jedem Shopware GTM-Plugin - die Cookies schreibt doch nicht das Plugin, sondern der GTM … bzw. um ganz genau zu sein: die Cookies schreibt Analytics & Co… Der GTM selber ist cookieless!

Wir setzen das Plugin ein: Google Tag Manager + Enhanced E-Commerce Tracking für Shopware 5 | Tracking | Auswertung und Analyse | Erweiterungen | Shopware Community Store und triggern damit sowohl Ananlytics, als auch AdWords.

Und meine Lösung funktioniert so gut, dass ich den „Alles akzeptieren“ - Button im CM aktiv schalten musste … die Leute lehnen sonst durch die Banke ab und der GTM triggert nichts mehr. AdWords meldete dann tagelang, dass kein Conversions mehr zu verzeichnen gewesen wären … nicht so toll :frowning:

 

1 „Gefällt mir“

@wolkenkrieger‍ Ich hänge mich hier mal dran. Funktioniert bei dir das Löschen bereits gesetzer Cookies, wenn:
 

  1. die GA-Cookies zunächst erlaubt werden
  2. dann das Recht im Consent-Tool wieder entzogen wird
  3. die Seite dann neu geladen wird

Bei uns ist das Tracking dann zwar aus (weil der GTM richtig eingestellt ist) - die Cookies bleiben aber bestehen.

Danke dir.

Japp! Ihr müsst im Analytics-Tag bei “Cookie-Domain” “none” als Wert setzen (ich habe für die Ananlytics-Settiongs eine eigene Varaibale angelegt und das dann dort gesetzt) … dann werden die _ga-Cookies nicht mehr in einer Wildcard-Doamin (.domain.com), sondern direkt in eurer Domain (www.domain.com) angelegt — und erst dann hat der CM schreibenden (also löschenden) Zugriff.

Selbstredend: die _ga-Cookies sind im Plugin mit in der Suchmaske mit drin :slight_smile:

Obicht! Wir hatten noch einen Tag im GTM, der AdWords Conversion Tracking getriggert hat … das schreibt auch ein Cookie (_gc glaube ich), wenn man domainübergreifende Verknüpfung eingestellt hat (Standard) … dazu habe ich keine Möglichkeit gefunden, dem eine Domain mitzugeben … das landet also nach wie vor in der Wildcard-Doamin und wird vom CM NICHT angefasst. Wir arbeiten nicht domainübegreifend, also konnte ich das ausschalten.

Wenn mir also hier einer weiter helfen könnte/kann … :slight_smile:

2 „Gefällt mir“

hi zusammen,

vielen Dank für den Input und die Anleitung.

Ich habe noch ein paar Fragen.

1.) Wo stelle ich den Code mit “agt-marketing” ein?

2.) Du schreibst: Den Cookie-Namen eures Cookies zuweisen (in unserem Fall eben “atg-marketing”)

Bei Namen oben mein “atg-marketing” und unten den Cookie-Namen, richtig!?

3: Du schreibst: “Cookie-Domain” muss nach “none” geändert werden

Wo?

 

Vielen Dank

Alex

 

Bitte präzisiere deine Fragen. Ich weis ehrlich nicht, was du jetzt von mir wissen möchtest.

 

Bis auf 3) 

Hi,

vielen Dank für Deine Nachricht.

Du hast weiter oben folgendes geschrieben:

Eigenes Plugin: in der plugin.php auf Event „CookieCollector_Collect_Cookies“ eine Methode setzen, die mittels 

Kannst Du das präziser formulieren?

Vielen Dank

Alex

 

https://github.com/webmatch/WbmTagManager/pull/28

 

:smiley: könnt ihr liken, vielleicht gehts schneller 

3 „Gefällt mir“

Alex, tust du mir einen Gefallen? Beschäftige dich bitte ein klein bissgen mit der Erstellung eigener Plugins. Die Frage, die du von mir beantwortet haben möchtest, gehört in dem Rahmen zu den absoluten Basics!

Nur in aller Kürze: der von mir gepostet Code muss bei den von mir ebenfalls geposteten Events ausgeführt werden. Das ganze legst du idealerweise in der “example-plugin.php” fest in der 

 getSubscribedEvents()

Methode.

1 „Gefällt mir“

@h_lohaus schrieb:

https://github.com/webmatch/WbmTagManager/pull/28

 

:D könnt ihr liken, vielleicht gehts schneller 

Die Lösung wäre auch nicht ganz blöd :D 

@h_lohaus schrieb:

https://github.com/webmatch/WbmTagManager/pull/28

 

:D könnt ihr liken, vielleicht gehts schneller 

Erledigt