Startseite » Blog » Digital Analytics

07.12.2019

Im Zuge der vermehrt implementierten Consent-Tools auf Websites stellt sich für den erhofften Consentfall die Frage, wie man eine nachträgliche Zuordnung der Quelle des Besuchs erzielen kann, wenn die Zustimmung erst auf einer folgenden Seite nach dem Einstieg gegeben wird. Dazu werden i. d. R. Referrer und URL der Einstiegsseite gespeichert. Wie aber überträgt man die gespeicherten Daten später an Analytics?

Die meisten Consent Tools bieten eine Callback-Funktion an, die dann ausgeführt wird, wenn Zustimmung gegeben, verweigert oder die Einstellungen verändert werden. Für den Fall einer Zustimmung ist es das Bestreben der meisten Nutzer von Google Analytics, die Sitzung möglichst der richtigen Quelle zuzuordnen, bevor die aktuelle oder folgende Seiten getracked werden. Dazu ist z. B. die URL der Einstiegsseite relevant, weil hier Parameter die Attribution zu einer Quelle (Click IDs von Google Ads, Bing oder anderer Systeme) oder einem Affiliate etc. beeinflussen können. Auch der Referrer kann relevante Informationen enthalten und / oder im Fall eines eingehenden Links bestimmen, von welcher Domain ein Besucher auf die eigene Site gelangt ist.

Einstiegsinformationen speichern

Dazu werden auf der Einstiegsseite window.location.href für die akt. URL und document.referrer für die Verweisquelle (wenn vorhanden) ausgelesen und via JavaScript (direkt implementiert oder per GTM ausgespielt) gespeichert. Von Simo Ahava gibt es dazu sogar ein GTM Template und eine entsprechende Anleitung.

Im einfachsten Fall reicht ein kleines Script wie dieses hier, um z. B. eine Speicherung in einem Session Cookie vorzunehmen, wenn dies noch nicht passiert ist (es kann also auf allen Seiten ausgeführt werden). Hinweis: Statt der kompletten URL der Landingpage speichert dieses Script nur den Pfad und evtl. Parameter, um diese als "page" statt "referrer" an Analytics zu übergeben - das ist am Ende aber mehr oder weniger Geschmackssache.

<script>
function getCookie(name) {
var value = "; " + document.cookie;
var parts = value.split("; " + name + "=");
if (parts.length == 2) return parts.pop().split(";").shift();
}
var url = getCookie("_landingUrl");
if (!url) {
document.cookie = "_landingUrl=" + window.location.pathname + window.location.search;
document.cookie = "_landingReferrer=" + document.referrer;
}
</script>

Nachträgliche Übergabe via Google Tag Manager

Die Nutzung der gespeicherten Daten kann im Fall des Google Tag Manager entsprechend der dieser Anleitung erfolgen - oder man verzichtet auf einen customTask und triggert über die Callback-Funktion des Consent Managers einfach ein eigens für den nachträglichen ersten Seitenaufruf gedachtes Analytics Tag mit einem Seitenaufruf, in dem die Felder page und referrer mit den gespeicherten Werten belegt werden. Die Werte stammen aus dem Cookie oder sessionStorage bzw. z. B. dem dataLayer bei Speicherung in der Session. Liest man z. B. die Cookie-Werte des obigen Scripts aus, welches via GTM einfach als HTML Tag auf allen Seiten ausgespielt wird, sieht die Belegung der Felder für ein solches separates Tag so aus:

Einstellungen Consent Pageview in GTM

Als Trigger dient z. B. ein im Callback des Consent Tools in den dataLayer geschriebenes Event. Wichtig ist hier lediglich, dass dieser feuert, bevor ggf. weitere Hits gesendet werden oder die Seite mit nun aktivem Tracking neu geladen wird (wenn es nicht die Einstiegsseite ist).

Senden des nachträglichen Seitenaufrufs bei direkter Implementierung

Ist Google Analytics als Universal Analytics oder gtag.js-Trackingcode direkt in die Seite implementiert, wird im Consent Callback der nachträgliche Seitenaufruf der ersten Seite dadurch übergeben, dass genau wie im Fall des Tag Managers die Cookiewerte eingelesen und als Felder beim Seitenaufruf verarbeitet werden.

Universal Analytics

Abweichend vom normalen Trackingcode muss vor dem Senden des Pageview der Referrer aus dem Cookie gesetzt werden. Der Seitenaufruf bekommt als Parameter den Pfad der Einstiegsseite (ebenfalls aus dem Cookie). Unter Verwendung der obigen Funktion zum Lesen eines Cookiewertes sieht das so aus:

...
ga('set', 'referrer', getCookie("_landingReferrer"));
ga('send', 'pageview', getCookie("_landingUrl"));
...

Das funktioniert zwar... birgt aber das Problem, dass der Referrer bei der Initialisierung gesetzt wird. Sendet man also einen Seitenaufruf für die aktuelle Seite hinterher, wird auch dabei der definierte Referrer verwendet. Für den Fall, dass die aktuelle Seite ohne anschließendes Neuladen nach Consent auch gemessen werden soll, ist es daher besser, den Referrer als Feld nur für den einen Seitenaufruf zu setzen. Als Ersatz der obigen beiden Zeilen nutzt man dazu:

...
ga('send', {
hitType: 'pageview',
page: getCookie("_landingUrl"),
referrer: getCookie("_landingReferrer"),
});
...

Sendet man nun einen weiteren Seitenaufruf oder andere Hits hinterher, bleibt das referrer-Feld unbesetzt und das Tracking passt. Wie auch unten im Beispiel zu gtag.js kann so z. B. direkt ein weiterer Seitenaufruf nachgesendet werden, wenn es sich nicht mehr um die Einstiegsseite handelt:

if (window.location.pathname + window.location.search !== getCookie("_landingUrl")) ga('send', 'pageview');

gtag.js

Wer den aktuellen gtag.js Trackingcode verwendet, kann zwar theoretisch auf den darunter liegenden Universal Analytics Tracker zugreifen und damit das Gleiche veranstalten, aber zum Glück bietet auch gtag.js Optionen zum Setzen der Felder. Leider ist die Dokumentation dazu mehr als dürftig.

Das Prinzip ist aber dennoch vergleichbar mit der Lösung zum Universal Analytics Code. Da allerdings kein expliziter Seitenaufruf gesendet werden muss, wenn der Code initialisiert wird, kann man mehrere Wege gehen, um das gleiche Ziel zu erreichen. Eine Möglichkeit ist es, per Option das Senden eines Seitenaufrufs bei der Initialisierung zu unterbinden, so dass der Seitenaufruf dann mit entsprechenden Parametern hinterher gesendet werden kann. Optional werden die Felder (auch hier wieder per Funktion aus dem Cookie gelesen) schon bei der Initialisierung bestimmt, so dass sie für den automatisch gesendeten Seitenaufruf genutzt werden:

...
gtag('config', 'UA-xxxxxx-1', {
'anonymize_ip': true,
'page_path': getCookie("_landingUrl"),
'page_referrer': getCookie("_landingReferrer")
});
...

Dieser Weg ist in Ordnung, wenn danach keine weiteren Hits versendet, sondern die aktuelle Seite danach einfach mit aktivem Tracking neu geladen wird. Soll die Initialisierung auch für weitere Hits genutzt werden, verbietet man den automatischen Seitenaufruf und sendet ihn stattdessen anschließend mit belegten Feldern selbst; alle folgenden Hits sind dann wie bei Universal unabhängig von den Daten des nachträglichen "Einstiegsaufrufs". Dieses Beispiel überträgt z. B. zuerst den Aufruf mit den eingelesenen Daten aus dem Cookie und anschließend einen "normalen" Seitenaufruf für die aktuelle Seite für den Fall, dass es nicht die Einstiegsseite selbst ist.

...
gtag('config', 'UA-xxxxxx-1', {
'anonymize_ip': true,
'send_page_view': false
});
gtag('event', 'page_view', {
'page_path': getCookie("_landingUrl"),
'page_referrer': getCookie("_landingReferrer")
});
if (window.location.pathname + window.location.search !== getCookie("_landingUrl")) gtag('event', 'page_view');
...

Das war es auch "schon". Auf welche Weise und an welchem Punkt die Übergabe des ersten Seitenaufrufs konkret umgesetzt wird, hängt ganz davon ab, welche Optionen der eingesetzte Consent Manager bietet. Hier hilft (hoffentlich) die Dokumentation des jeweiligen Anbieters weiter. Damit: Viel Erfolg bei der Umsetzung! Bei Fragen stehen wir gern mit Rat und Tat zur Seite.



Warum mit uns?

Langjährige Erfahrung
im Onlinemarketing:
Suchmaschinen-Marketing
erfolgreich seit 1996

Angebot anfordern

Zertifizierter Google AdWords Partner

Alle Kontenmanager unserer Google AdWords Agentur sind qualifizierte und durch Google zertifizierte AdWords Experten.

Faire Festpreise
jederzeit kündbar
seriöse Optimierung.