Google Tag Manager Web fr Einsteiger 121 Watt
Google Tag Manager (Web) für Einsteiger 121 Watt Seminar
2 Selbstvorstellung Cem Alkan • International Management • 2017 digital motion • Digital Analytics Consultant • Integration von Google Analytics via Google Tag Manager
3 Der heutige Tag • 9: 00 Start • 10: 30 Pause • 10: 45 Vormittag • 13: 00 Mittagspause • 14: 00 Nachmittag • 15: 30 Pause • 15: 45 Nachmittag Part 2 • 17: 30 Ende
Teil I Grundlagen und erste Schritte 4
Abschnitt I Grundlagen 5
6 Grundlagen & erste Schritte Das Tag Management Anwendungs-felder &Vorteile Grundverständnis aufbauen Funktionsweise Anbieterübersicht
7 Das Tag Management
8 Das Tag Management • tag management system von wikipedia: “A tag management system is designed to help manage the lifecycle of e-marketing tags (sometimes referred to as tracking pixels or web beacons), which are used to integrate third-party software into digital properties. ”
9 Das Tag Management • Auf Deutsch: Ausspielen von Java. Script oder HTML Code, während ein Nutzer Ihre Website besucht und bestimmte Regeln erfüllt
1 0 Begriffe Container Tags Trigger Beinhaltet alle Tags, Trigger und Variablen HTML- oder Java. Script-Code Auslöseregeln Variablen Beinhalten Werte data. Layer Java. Script Objekt, optional bestückbar
1 1 Funktionsweise Analogie
1 2 Analogie Containerschiff
1 3 Technische Sicht Nutzer Website Code
1 4 Anwendungsfelder und Vorteile
1 5 Anwendungsfelder • Websites aller Art • Blog • Onlineshop • Unternehmenswebsite • Apps • i. OS • Android
1 6 Anbieter von Tag Management Systemen
1 7 Vorteile von TMS • Hohes Einsparungspotenzial • Marketeer-freundlich • Wenig bis gar kein Implementierungsaufwand • Zentrale Verwaltungstelle
1 8 Fragen
Abschnitt II Erste Schritte 19
2 0 Anmeldung
2 1 Anmeldung • Google Konto • Google Adwords • Google Analytics • Gmail • Android • Google Drive • You. Tube • Google Tag Manager • uvm.
2 2 Anmeldung
2 3 Anmeldung
2 4 Anmeldung – Tag Manager Kontonamen eintippen
2 5 Anmeldung – Container einrichten Containernamen eintippen Verwendungsort auswählen
2 6 Anmeldung - Nutzungsbedingungen
2 7 Anmeldung – Container Code Snippet
Funktionsweise 28
Google Tag Manager Container Typen Dieses Training bezieht sich ausschließlich auf Web Tag Management. i. OS/Android App Container bzw. Firebase sind über die SDKs integraler Bestandteil der Software und weder von Funktionsweise noch Umfang her vergleichbar (kein HTML Dokument = kein DOM, kein Java. Script etc. ). 29
Tag Injector Ein Tag Management System (TMS) ist ein „Tag Injector“. Ein TMS ermöglicht es, client-seitige Tags – vom Browser auszuführendes Java. Script oder Tracking Pixel – über eine benutzerfreundliche Web-Oberfläche zu verwalten und regelbasiert auszusteuern. 30
Java. Script Injector Der Google Tag Manager (für Web) kann im Grunde auch als „Java. Script Injector“ gesehen werden – eine Java. Script Bibliothek, die auf der Website geladen wird: Beispiel: http: //www. googletagmanager. com/gtm. js? id=GTM-5 PPMX 6 31
Google Tag Manager Container Der Google Tag Manager Container lädt die Java. Script Bibliothek, in der die über die Web. Oberfläche des Tools angelegten Tags mit den entsprechenden Auslösungsregeln enthalten sind. Mit wenigen Klicks können darüber neue Tags hinzugefügt oder vorhandene Tags bearbeitet und Änderungen z. T. in Sekundenschnelle veröffentlicht werden. 32
Asynchron geladene GTM Bibliothek Die Google Tag Manager Bibliothek wird dabei asynchron geladen. Tags werden in Konsequenz dann geladen, wenn die Voraussetzungen dafür vorliegen – parallel zu anderen Ressourcen. Somit beeinträchtigen langsame Tags nicht die Ladezeit der Webseiten und verhindern auch nicht die Auslösung anderer Tags. 33
Funktionsweise des Google Tag Managers Container Version Veröffentlichung Laden der Bibliothek Konfiguration Container/ Bibliothek Geladene Bibliothek kann Tags bei Event Pushs in die Datenschicht auslösen basierend auf Regeln/Trigger in Abhängigkeit von Variablen in der Datenschicht 34
Container IFrame Fallback Bei deaktiviertem Java. Script kommt ein IFrame „Fallback“ zum Einsatz, über den z. B. simple Tracking Pixel weiterhin ausgeliefert werden können – Java. Script basierte Variablen und Regeln sind dann nicht verfügbar, die Funktionalität damit sehr stark eingeschränkt. 35
Container Integration Was empfiehlt Google? Warum? War das schon immer so? » simoahava. com/gtm-tips/gtm-container-snippet-in-the-head/ 36
Container Integration Der Container Code kann auch (wie bisher von Google empfohlen) zu Beginn im <body> integriert werden – idealerweise aber im <head>: 37
Container Code Deklaration, die ein evtl. bestehendes data. Layer Objekt nicht überschreibt. Event Push gtm. js = „Page View“ Event URL der GTM Bibliothek Aufruf der GTM Bibliothek » simoahava. com/analytics/container-snippet-gtmsecrets-revealed/ » lunametrics. com/blog/2013/10/15/unlock-data-layer -google-tag-manager/ » optimizesmart. com/google-tag-manager-data-layerexplained-like-never/ » simoahava. com/gtm-tips/gtm-container-snippet-inthe-head/ 38
Account- & Containerverwaltung 39
GTM Accounts und Container • Jeder Account kann mehrere Container beinhalten • Ein Container repräsentiert i. d. R. eine einzelne Website oder App (Android vs. i. OS) • Innerhalb eines Containers können „Workspaces“ angelegt werden • Oft empfiehlt sich die Verwendung nur eines Containers für alle Instanzen (Development vs. Staging vs. Production) – hier können „Environments“ zur Anwendung kommen • Alternativ kann für jede Instanz ein Container verwendet werden mit entsprechenden Vor- und Nachteilen 40
User Management • Unterteilt in Account Permissions und Container Permissions • Edit ermöglicht Änderungen, aber keine Versionserstellung, Approve ermöglicht die Versionserstellung, aber keine Veröffentlichung • Optionale 2 -Step Verification in den Account Settings • Whitelist / Blacklist für Tags und Variablen über Datenschicht möglich • Master User zur Sicherung empfohlen! 41
Container Export und Import • Komplette Container Versionen können als JSON exportiert und auch importiert werden • Bei Import muss der Workspace und zwischen Overwrite, einem kompletten Ersetzen, und Merge ausgewählt werden • Bei Merge können Tags, Trigger und Variablen bei Konflikten/Abweichungen entweder überschrieben oder mit modifiziertem Namen neu angelegt werden » v 2. gtmtools. com/ 42
Approval Queue und External Account Links • Statt Double. Click Tags im Container hinzuzufügen, können aus dem Double. Click Campaign Manager Verknüpfungsanfragen an einen GTM Container gesendet und über die Approval Queue bestätigt werden • External Links zeigt eine Übersicht der bestätigten Verknüpfungen, die hier auch entfernt werden können 43
Environments • Über Environments können für Development und Staging Server modifizierte Container Codes/Libraries erstellt werden, über die das Veröffentlichen von Container Versionen auf diese Testinstanzen beschränkt werden kann • Zusätzlich oder alternativ können so persistente Preview Links – z. B. an Externe – bereitgestellt werden, die immer die aktuell in der Umgebung veröffentlichte Version abbilden • Selbstverständlich lassen sich Environments auch wieder entfernen bzw. ändern 44
Environment Actions • Settings ermöglicht, den Debug Mode als Standard zu setzen • Publish To veröffentlicht in eine andere Version • Share Link erzeugt den permanenten Preview Links • Get Snippet beinhaltet den Code für die jeweilige Instanz • Reset Environment macht Link und Code ungültig, diese müssen dann neu vergeben/integriert werden • Delete löscht – wie zu erwarten – das Environment 45
Workspaces & Environments Mehrere Nutzer und Teams können Tag-Konfigurationen in bis zu 3 Workspaces unabhängig voneinander entwickeln und testen. Workspaces können also ähnlich wie Branches in einem Version Control System verstanden werden. Sie werden auf Basis der jeweils aktuellen Container Version erstellt und müssen bei Aktualisierung dieses “Main Branch” synchronisiert werden, um Konflikte zu vermeiden. Es geht hier also um „Change Management“. » support. google. com/tagmanager/answer/7059647 » simoahava. com/analytics/google-tag-manager-workspaces/ » simoahava. com/gtm-tips/change-management-workspaces/ 46
Workspace Changes & Activity History • Vor dem Veröffentlichen einer Version kann über Workspace Changes und die Activity History in der Container Übersicht geprüft werden, welche Änderungen seit der letzten Veröffentlichung oder Versionserstellung vorgenommen wurden • Auch die Anzahl unveröffentlichter Änderungen an Tags, Triggern und Variablen wird angezeigt 47
“Publish” Optionen • Über Publish wird mit neuer Versionsnummer veröffentlicht • Über Preview wird das versionsbezogene Debugging aktiviert • Über Create Version wird eine Draft Version mit neuer Versionsnummer gespeichert 48
Container Veröffentlichung Bei der Veröffentlichung über Publish können (und sollten) Name und Description vergeben werden. Zudem kann das Environment ausgewählt werden, wenn Custom Environments angelegt sind. 49
Versionsübersicht • Zeigt alle Versionen inkl. Details • Auch gelöschte Versionen können angezeigt und mind. innerhalb 30 Tagen wiederhergestellt werden • Eine „Empty container“ Version sollte als worst-case Fallback beibehalten werden 50
Version Actions • Preview und Share Preview versionsbezogen möglich • Publish To veröffentlicht in ein Environment, ohne die aktuelle Version in Bearbeitung zu beeinflussen • Rename für die Benennung, Anmerkungen über Edit Notes • Set as Latest Version markiert die ausgewählte Version entsprechend und kennzeichnet die erforderlichen Updates in Workspaces • Export ermöglicht den Export der Version im JSON Format 51
Just an injector… Der Google Tag Manager erfasst keine Daten. Er ist nur „Vehikel“. Alle Dimensionen und Metriken unterliegen immer den Definitionen der entsprechenden Plattform, die sich wesentlich unterscheiden können. Fehlende Expertise bei der Implementierung von Tracking Lösungen wie Google Analytics (z. B. Tracker Names, Dimension Scopes) und fehlende Java. Script Kenntnisse können im Google Tag Manager (und anderen TMS) zu Implementierungsfehlern und damit fehlerhaften Daten führen. 52
Tags 53
Tags im Google Tag Manager Alle unterstützten Tags: support. google. com/tagmanager/answer/6106924 54
Beispiel: Google Ad. Words Conversion Wie sieht das im Google Tag Manager aus? 55
Beispiel: Google Ad. Words 56
Custom HTML Tag • Java. Script Code immer in <script></script> Tags • Self-executing function empfohlen, es sei denn man weiß genau, was man tut! • Variablen in doppelt geschweiften Klammern: {{variable}} • document. write Support muss explizit ausgewählt werden 57
Self-executing function Um Variablen in einem Custom HTML Tag nach Belieben benennen zu können, ohne Konflikte mit dem Global Namespace befürchten zu müssen, sollten diese lokal in einer „selbstausführenden“ Funktion definiert werden – also mit Local Scope (auch: Function Scope). » simoahava. com/gtm-tips/restrict-custom-html-tag-scope/ 58
Custom Image Tag • // verwenden bei Pixeln, die Protokollunabhängig, d. h. sowohl über http als auch https aufgerufen werden können • Variablen auch hier in doppelt geschweiften Klammern: {{variable}} • Cache Busting wird empfohlen, um Browser Caching zu umgehen, und kann i. d. R. bedenkenlos verwendet werden – jeder neue Aufruf unterscheidet sich durch neuen Wert des angegebenen Parameters 59
Trigger & data. Layer 60
Trigger 61
Trigger Das Auslösen eines Tags setzt also einen Trigger voraus! Wird nicht ausgelöst Nur Tags, für die ein Trigger hinterlegt ist, werden in den Container überhaupt aufgenommen. 62
Trigger Typen 63
data. Layer – die Datenschicht GTM verwendet ein globales Java. Script Objekt data. Layer - ein Array von Objekten als message bus. Jeder neue Push in diese Datenschicht erzeugt ein neues Objekt. 64
data. Layer Deklaration Ist kein data. Layer Objekt deklariert, erzeugt die GTM Bibliothek dieses automatisch. Sollen z. B. Informationen aus dem Backend beim „Page View“ Event zur Verfügung stehen, der durch den Event gtm. js repräsentiert wird, muss data. Layer vorher deklariert werden. 65
data. Layer Deklaration Um ein versehentliches Überschreiben der Datenschicht zu vermeiden, wird grundsätzlich empfohlen, Daten ausnahmslos per Push in das data. Layer Objekt zu „schieben“. Dabei sollte vor jedem Push geprüft werden, ob das Objekt bereits existiert, um es zu erzeugen, falls dies nicht der Fall ist. 66
Beispiel: data. Layer Deklaration 67
Trigger Evaluierung Nur wenn ein Event gepusht wird, werden die Trigger der Tags auf Ihre Bedingungen geprüft, nur dann können Tags ausgelöst werden.
Page View Events GTM erzeugt drei „Page View Events“: 1. gtm. js = Page View = die GTM Bibliothek wird geladen 2. gtm. dom = DOM Ready = das DOM, die „Seite“, ist konstruiert 3. gtm. load = Window Loaded = alle Ressourcen wurden geladen 1 1 2 3 69
Reihenfolge der Trigger Evaluierung • Nur bei Event Push, werden Trigger auf Ihre Bedingungen geprüft und können damit Tags auslösen • Vor, zwischen und nach Page View Events können andere Event Pushs erfolgen – und neu gepushte Daten stehen erst mit einem/dem nächsten Event für Trigger zur Verfügung • Die Reihenfolge, in der Events gepusht werden ist entscheidend • DOM Ready und insbesondere Window Loaded können verzögert bzw. u. U. sogar verhindert werden – und hängen natürlich auch von der Ladezeit ab 70
Page View Trigger 71
Page View Trigger • Neben der Auswahl des Page View Trigger Types kann der Trigger auf bestimmte Seiten beschränkt werden • Hierfür kann eine Vielzahl an Conditions auf die zur Verfügung stehenden Variablen angewendet werden • Regular Expressions können in Triggern generell sehr hilfreich sein – bei komplexen regulären Ausdrücken können aber schnell auch Fehler unterlaufen 72
Variablen 73
Variablen geben in Tags und Triggern ihren Wert zum Zeitpunkt der Event Evaluierung zurück (oder eine Funktion). Sie können damit sowohl für die Aussteuerung als auch Befüllung von Tags verwendet werden. Auch die „Verkettung“ von Variablen ist möglich, d. h. die Definition von Variablen Werten abhängig von den Werten anderer Variablen. » simoahava. com/analytics/variable-guide-google-tag-manager/ » support. google. com/tagmanager/answer/6106899 74
Built-in Variablen 75
Beispiel: Built-in „Pages“ Variablen Page URL – vollständige URL der aktuell aufgerufenen Seite, z. B. https: //www. 121 watt. de/team/ Page Hostname – Hostname der aktuellen Seite, z. B. www. 121 watt. de Page Path – relative Pfad der aktuellen Seite, z. B. /team/ Referrer – URL der vorhergehenden Seite aus document. referrer, z. B. https: //www. 121 watt. de/ 76
Variablen Typen 77
1 st Party Cookie Variable • Auslesen eines 1 st Party Cookies (Host oder Domain, je nach Cookie) anhand des Cookie Namens www. 121 watt. de vs. 121 watt. de • URI Decoding optional, um enkodierte Werte bei Bedarf direkt zu dekodieren • Gibt undefined zurück, wenn das Cookie nicht existiert 78
Auto-Event Variablen • Basiert auf gtm. element • Alle Typen sind über Built-in Variablen abgedeckt, können hier z. T. aber weiter spezifiziert werden • Gibt undefined zurück, wenn nicht gesetzt 79
Auto-Event Variablen gtm. element Key aus data. Layer gibt das DOM Element wieder, auf dem der Auto Event durch den Listener ausgelöst wurde. 80
Konstante Vorgesehen für einen konstanten Wert, der sich nicht ändert. 81
Custom Java. Script Variable • Auszuführendes Java. Script muss in eine anonyme Funktion eingebettet werden • Über return muss eine Variable oder ein Wert (oder eine Funktion) zurückgegeben werden – im Zweifelsfall undefined • data. Layer Pushs nicht empfohlen • Zugriff auf andere Java. Script Variablen möglich (Global Namespace) aber man sollte wissen, was man tut! – 82
Data Layer Variable • Aktueller Wert der Variable zum Zeitpunkt der (Event) Evaluierung • undefined, wenn nicht gesetzt • Default Value aber möglich – das kann auch eine Variable sein • Auf Array Indizes wird über Dot Notation zugegriffen • So kann man Auto-Event Variablen anhand gtm. element erweitern/ergänzen • Bei Objekten und Arrays ist aufgrund Recursive Merge Vorsicht geboten 83
Data Layer Variable Auf Array Indizes wird über Dot Notation zugegriffen? Recursive Merge beachten? Für Fortgeschrittene: GTM hält Informationen im internen Datenmodell, das insoweit nicht 1: 1 dem üblichen Verhalten von Arrays entspricht. Das kann zu unerwarteten Effekten führen. 84
DOM Element Variable • Auswahlmethode ID sucht nach dem Element mit der entsprechenden Element ID • Alternative Auswahlmethode CSS Selector gibt das erste Element zurück, das darüber gefunden wird – nicht unterstützt in IE 7, IE 8 unterstützt nur CSS 2. 1 Selektoren • null, wenn kein Element gefunden wird, ansonsten wird der Textinhalt des Elements zurückgegeben • Optionale Angabe eines Attributs gibt dessen Wert zurück soweit existent 85
HTTP Referrer Variable • Full URL entspricht der Built-in Variable Referrer und gibt die gesamte URL bis auf das Fragment (#) zurück • Diese Variable ist also v. a. für Prüfung spezifischer Referrer Komponenten wie z. B. Parameter Werte geeignet 86
Java. Script Variable • Direkter Zugriff auf globale Java. Script Variable, die nicht im data. Layer enthalten ist • Auch hier muss Dot Notation verwendet werden • undefined, wenn nicht existent 87
Lookup Table Variable • Output Definition basierend auf dem Input (Wert) einer Input Variable • Input ist Exact Match und Case. Sensitive • undefined, wenn kein Match • Default Value aber möglich – das kann auch eine Variable sein • Viele Einsatzmöglichkeiten v. a. durch die Verkettung von Variablen 88
URL Variable • Auswahl der URL Komponenten analog zu HTTP Referrer Variable • Die URL Source kann jedoch neben der URL der aktuellen Seite (Standard) auch eine Variable sein 89
Weitere Variablen • Container ID: Öffentliche ID des Containers, z. B. GTM-XKCD • Container Version Number: Aktuelle Versionsnummer • Custom Event: Entspricht der Built-in Variable {{event}} • Debug Mode: Bei aktivem Debug Mode true, sonst false • Environment Name: Name eines Environments, z. B. „Staging“ • Random Number: Built-In Variable für Zufallszahl (0 – 2147483647) 90
Tag Auslieferung durch Variablen und Trigger Evaluierung der Trigger Conditions basierend auf den Variablen Werten Bei Event Trigger Conditions sind „wahr“ und keine Trigger blockieren Trigger für den Event vorhanden Update der Variablen im Datenmodell Auslösen des/der Tags Ersetzen von Variablen In Tags durch Werte 91
Click Trigger • Click / All Elements kann tatsächlich auf alle Elemente angewendet werden • Robuster als Click / Just Links, aber, um wirklich nur die gewünschten Clicks zu erfassen, spezifische(re) Conditions erforderlich 92
Link Click Trigger • Click / Just Links erfasst ausschließlich Clicks auf oder in Links • Wait for Tags verzögert das Ausführen des Link Clicks, um Tags laden zu lassen • Check Validation verhindert das Ausführen des Triggers, wenn prevent. Default() auf dem Event ausgeführt wird • Bei Wait for Tags / Check Validation sind Probleme mit Event Propagation möglich, insb. bei Single-Page-Apps – ausführlich testen! 93
Link Click Trigger • Nur bei Wait for Tags und/oder Check Validation wird über Enable When der Kontext definiert, in dem der Trigger aktiviert (ansonsten ignoriert) wird • Für das Ausführen/die Evaluierung des Triggers abhängig von Conditions ist auch hier Fire On zu verwenden • Der Trigger ist also nur „wahr“, wenn der entsprechende Event in die Datenschicht gepusht wird und die Bedingungen in Enable When und Fire On beide erfüllt sind 94
Form Submission Trigger • Hinsichtlich Wait for Tags und Check Validation bzw. Enable When und Fire On gelten für die Form Submission die gleichen Hinweise wie beim Link Click Trigger • Formularvalidierung, ob client- oder server-seitig, führt oft zu Problemen, die einen separaten Push in die Datenschicht erfordern 95
History Change Trigger Für das Erfassen dynamisch geladener Inhalte/Seiten (ohne URL Änderung) in Kombination mit den History Variablen in folgenden Fällen: • Aufruf window. history. push. State() Methode • Aufruf window. history. replace. State() Methode • popstate Event (Browser Back/Forward Buttons) • Änderung des URL Fragments (Hash = #) 96
Custom Event Trigger • Ermöglicht Trigger auf Basis individueller Event Pushs wie z. B. für virtuelle Seitenaufrufe, Form Submissions, benutzerdefinierte Event Listener etc. • Über Add Filters können auch hier Bedingungen ergänzt werden • Wichtig z. B. auch für „globale“ Blockierungsregeln/-Trigger 97
Java. Script Error Trigger • Erfassen von Java. Script Fehlern mit Hilfe des Triggers und der Error Variablen • Kann z. B. auf Development und/oder Staging Instanzen beschränkt werden 98
Timer Trigger • Event Name definiert den Event, der an data. Layer übergeben wird • Interval spezifiziert die Zeit zwischen jeder erneuten Aktivierung des Triggers in Millisekunden • Über Limit kann eingeschränkt werden, wie oft der Trigger ausgeführt werden soll • Auch hier muss über Enable When definiert werden, in welchem Kontext der Trigger aktiviert werden soll • Variablen zum Timer Trigger wie z. B. gtm. timer. Id müssen bei Bedarf über eine Data Layer Variable definiert werden 99
Tag Settings 100
Tag Firing Priority Da Tags asynchron geladen werden (wenn ein Trigger sie basierend auf einem Event Push in die Datenschicht auslöst), kann über die Tag Firing Priority lediglich die Reihenfolge der Ausführung der Tags gesteuert werden, nicht die Reihenfolge des Ladens bzw. des „Fertigladens“. 101
Tag Firing Schedule und Options • Zeitliche Einschränkung/Steuerung möglich über Tag Firing Schedule • Auslieferung nur in veröffentlichten Containern von z. B. Conversion Tracking Tags ist möglich, kann aber QA erschweren • Über Tag Firing Options kann auch gesteuert werden, wie oft ein Tag auf einer Seite ausgelöst werden darf – unbeschränkt, einmal pro Event oder einmal pro Seite 102
Tag Sequencing Das Auslösen eines Tags setzt einen Trigger voraus mit einer Ausnahme: Tag Sequencing Wird ein Tag innerhalb einer Tag Sequence aufgerufen, werden die Tag eigenen Trigger und Einstellungen ignoriert – Variablen aber je Tag neu aufgelöst. » simoahava. com/analytics/understanding-tag-sequencing-in-google-tag-manager/ 103
Trigger für Tags All Pages entspricht dem Event gtm. js = Page View Bei Auswahl einer anderen Option muss ein bestehender Trigger ausgewählt oder neu angelegt werden 104
Trigger Exceptions • Über ADD EXCEPTION können Trigger hinzugefügt werden, die ein Auslösen des Tags verhindern, auch wenn 1 -n Trigger eigentlich auslösen würden • Diese Exceptions müssen alle Events abdecken, die aufgrund der Firing Triggers auslösen können, aber blockiert werden sollen – eine Exception bei All Pages reicht also z. B. nicht aus, wenn auf DOM Ready ausgelöst wird 105
Race Conditions Werden Tags/Ressourcen asynchron geladen, kann die Reihenfolge des Ladens bzw. des „Fertigladens“ nicht gesteuert werden. . . 106
Typische Probleme • Tracking für A/B Tests, aber Bibliothek noch nicht geladen (Optimizely, VWO etc. ) • Zugriff auf DOM, aber DOM noch nicht „ready“ (auch bei dynamischem Laden von Inhalt) • Daten aus dem Backend bei gtm. js noch nicht verfügbar • Neue Seite lädt bei Link Click oder Form Submission zu schnell, um Tracking Requests fertig laden zu lassen • j. Query in Custom HTML Tag, aber j. Query noch nicht geladen • Google Analytics Client ID soll ausgelesen werden, aber Objekt noch nicht verfügbar • . . . 107
Debugging 108
GTM Preview – Debug Mode • Im Debug / Preview Mode können Änderungen vorgenommen und über Refresh direkt geprüft werden • Über Leave Preview Mode wird dieser geschlossen • Share Preview erzeugt einen Link zur Debug / Preview Ansicht der Version 109
GTM Preview – State Summary • Summary zeigt die einzelnen States in ihrer Abfolge • Dabei wird angezeigt, welche Tags auf der Seite ausgelöst wurden und welche nicht • Pushs in die Datenschicht ohne Event werden als Message angezeigt • Ein Klick in die einzelnen States zeigt die Details zu Tags, Variablen und der Datenschicht 110
GTM Preview – Tag Details Pro State kann für Tags geprüft werden, ob sie ausgelöst wurden oder nicht und aus welchem Grund 111
GTM Preview – Tag Details Variablen können dabei über Name oder Values in den Details angezeigt werden 112
GTM Preview – Tag Details In den meisten Fehlen macht die Auswahl von Values für diese Ansicht mehr Sinn 113
GTM Preview – Variable Details Jeder einzelne Variable Value kann zu jedem beliebigen State und Event geprüft werden! 114
GTM Preview – Datenschicht Je State ist auch das interne Datenmodell im JSON Format abgebildet 115
Debugging mit WASP Historie! 116
Debugging/QA • Flexibilität und Vorteile des GTM durch Interface mit Versionskontrolle und Debug Mode nutzen • Tools nach Bedarf einsetzen (WASP, Tag Assistant, GA Debugger etc. ) • Für Google Analytics auch die Real-Time Reports nutzen • Regeln für Debugging/QA und GTM Releases definieren (z. B. Naming Conventions, Checklisten oder sogar Unit Testing) • (Google Analytics) Nutzerdaten nicht durch Entwicklungs- und Testinstanzen verfälschen bzw. verwässern • Google Analytics Debug Version in Abhängigkeit der Aktivierung des GTM Debug Mode aktivieren • Nicht-Existenz eines benutzerdefinierten 1 st Party Cookies als Exception definieren (o. ä. ), wenn QA ohne Preview/Debug Mode erfolgen muss, was in spezifischen Fällen gegeben sein kann • Container Versionen immer selbstbeschreibend benennen und mit hilfreichen Anmerkungen versehen, um im Notfall schnelle Rollbacks auf frühere Versionen zu ermöglichen 117
Naming Best Practices 118
Google Tag Manager Naming Conventions Um Tags, Trigger und Variablen über die Namen klassifizieren zu können, empfiehlt es sich, möglichst eindeutige, selbsterklärende Bezeichner innerhalb einer festgelegten Notation zu erstellen. Das gilt auch für Version Names und Notes. 119
Google Tag Manager Naming Conventions • Sowohl Funktion als auch Kontext sollten aus der Benennung klar warden – name and organize your GTM asses with readers in mind! • Dadurch können Aufwände für Dokumentation wie auch Verwaltung reduziert und die Wiederverwendbarkeit erhöht werden. • Was wiederum allen Rollen, ob Entwicklern, Produkt Managern oder Marketing Managern hilft und Testing vereinfacht. • Idealerweise resultiert dies in minimiertem Fehlerrisiko, weniger Zeitaufwand, weniger “Schleifen” und weniger Kosten für Tag Management. 120
Google Tag Manager Naming Conventions Eine wahnsinnig komplexe Notation ist dabei nicht Ziel. Simple Varianten können z. B. So aussehen: • Tag type – Track type – Tag function • Site area – Tag type – Tag function Welche Herangehensweise sich eignet, hängt von den spezifischen Rahmenbedingungen, aber auch persönlichen Präferenzen ab. 121
Google Tag Manager Naming Conventions 122
Google Analytics (Web) Track Types • Pageviews • Events • Transactions* • Social Interactions • User Timings • Decoration für Cross-Domain Tracking *Transactions sind beim Enhanced Ecommerce Tracking kein separater Track/Hit Type mehr – alle Ecommerce Daten werden hier an Pageviews oder Events gekoppelt, es handelt sich um ein anderes „Datenmodell“ 123
Tracking ID Variable 124
Tracking ID – Variable Chaining 125
Reminder: Just an injector… Der Google Tag Manager erfasst keine Daten. Er ist nur „Vehikel“. Alle Dimensionen und Metriken unterliegen immer den Definitionen der entsprechenden Plattform, die sich wesentlich unterscheiden können. Fehlende Expertise bei der Implementierung von Tracking Lösungen wie Google Analytics (z. B. Tracker Names, Dimension Scopes) und fehlende Java. Script Kenntnisse können im Google Tag Manager (und anderen TMS) zu Implementierungsfehlern und damit fehlerhaften Daten führen. 126
Google Analytics Fields/Parameter im GTM Einige wichtige Fields/Parameter: • anonymize. Ip für IP Anonymisierung • cookie. Domain mit Wert „auto“ für Subdomain übergreifendes Google Analytics Cookie • page für den Seitenpfad, insb. bei virtuellen Seitenaufrufen • user. Id für User ID Tracking • transport für „beacon“ – noch nicht in der Auswahl, aber funktioniert 127
Generisches Google Analytics Event Tag Ein effizientes Tag Setup verwendet so viele Tags wie nötig/sinnvoll, aber so wenige wie möglich. Für Google Analytics Events kann ein generisches Event Tag verwendet werden, das Pushs eines dafür definierten Events direkt „verarbeitet“. 128
Generisches Google Analytics Event Tag 129
Erweiterung des generischen Event Tags • Google Analytics Event Daten werden über Lookup Tables auf Basis der mit dem Event Push übergebenen Variable event. Name manuell definiert • Die Werte können also durch beliebige Variablen befüllt werden • Die Lookup Tables verwenden die bisher für das generische Event Tag verwendeten Data Layer Variablen über den Default Value nur noch als Fallback – bzw. für Fälle in denen alle Daten direkt gepusht werden sollen • Diese Data Layer Variablen verwenden einen statischen Default Value 130
Erweiterung des generischen Event Tags Alle ua. Event* Variablen wie z. B. {{ua. Event. Category}} sind Lookup Table Variablen 131
Event mit event. Name Anhand des Inputs {{event. Name}} wird der Output innerhalb der Lookup Tables statisch oder durch Variablen definiert, wobei der Default Value jeweils auf eine Variable wie z. B. {{event. Category}} verweist. 132
Fallback auf Datenschicht Variablen • dsf • Ist kein I/O in den Lookup Tables definiert, wird auf den Wert der jeweiligen Data Layer Variable geprüft • Ist auch hier kein Wert übergeben worden, wird statisch der Wert (not set) definiert • Dadurch werden Inkonsistenzen beim Google Analytics Event Tracking vermieden und Fehler können schneller identifiziert werden 133
Hinweis zum Google Analytics Event Tracking • Event Values werden in Reports aggregiert. Wird ein ansonsten identischer Event mit Value „ 5“ und „ 9“ erfasst, werden in Reports 2 Unique Events mit Durchschnittswert 7 angezeigt. » analyticsedge. com/2014/09/misunderstood-metrics-events/ » analyticsedge. com/2014/09/misunderstood-metrics-unique-events/ • Auch wenn nur Event Kategorie und Aktion Pflichtangaben sind, sollten Label – dann z. B. „(not set)“ o. ä. – und Wert (Standard: 0) immer angegeben werden. Ansonsten werden auf entsprechender Auswertungsebene Datensätze schlicht nicht angezeigt (diese Problematik besteht z. B. auch bei benutzerdefinierten Dimensionen). 134
135
- Slides: 135