Die Datenschicht

Die Datenschicht ist ein Objekt, über das Google Tag Manager und gtag.js Informationen in Tags. Ereignisse oder Variablen können über die Datenschicht übergeben werden. können Trigger auf Basis der Werte von Variablen eingerichtet werden.

Wenn Sie z. B. ein Remarketing-Ereignis wenn der Wert von purchase_total größer als 100 $ist, oder auf Basis des Bestimmte Ereignisse, z.B. wenn auf eine Schaltfläche geklickt wird, so konfiguriert, dass diese Daten für Ihre Tags verfügbar sind. Das Datenschichtobjekt ist die als JSON strukturiert sind. Beispiel:

{
  event: "checkout_button",
  gtm: {
    uniqueEventId: 2,
    start: 1639524976560,
    scrollThreshold: 90,
    scrollUnits: "percent",
    scrollDirection: "vertical",
    triggers: "1_27"
  },
  value: "120"
}

Google-Tags sind so konzipiert, dass sie leicht auf Informationen verweisen können, die in der in einer strukturierten und vorhersehbaren Weise erstellt, anstatt durch Variablen, Transaktionsinformationen, Seitenkategorien und andere verstreute Signale auf Ihrer Seite. Eine Datenschichtimplementierung mit Variablen und damit verknüpfte Werte helfen, sicherzustellen, dass relevante Daten verfügbar sind, wenn Ihr Tags benötigen sie.

Installation

Damit Sie die Tag Manager-Webseite installieren können, müssen Sie eine Datenschicht erstellen. Die Der hervorgehobene Code zeigt, wo die Datenschicht eingerichtet wird, vor dem Tag. Manager wurde geladen.

<script>
window.dataLayer = window.dataLayer || [];
</script>
<!-- Google Tag Manager -->
<script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
})(window,document,'script','dataLayer','GTM-XXXXXX');</script>
<!-- End Google Tag Manager -->

in standardmäßigen gtag.js-Implementierungen, bei denen das Tag das Produkt hinzugefügt und einer Webseite hinzugefügt wurde, ist der Code zum Erstellen der Datenschicht bereitgestellt. Fügen Sie bei benutzerdefinierten Implementierungen des Google-Tags den Datenschichtcode hinzu. am Anfang des Skripts hinzu, wie im folgenden Beispiel gezeigt:

<!-- Google tag (gtag.js) -->
<script async src="https://www.googletagmanager.com/gtag/js?id=TAG_ID"></script>
<script>
  window.dataLayer = window.dataLayer || [];
  function gtag(){dataLayer.push(arguments)};
  gtag('js', new Date());

  gtag('config', 'TAG_ID');
</script>

So werden Informationen in Datenschichten verarbeitet

Nachdem ein Container geladen wurde, werden in Tag Manager alle Daten in der Warteschlange verarbeitet. Push-Nachrichten zu Ebenen. In Tag Manager werden Nachrichten nach dem First-In-First-Out-Prinzip verarbeitet. Basis: Jede Nachricht wird einzeln in der Reihenfolge verarbeitet, in der sie eingegangen ist. Wenn die Nachricht ein Ereignis ist, also alle Tags mit Triggerbedingungen, die erfüllt sind wird ausgelöst, bevor in Tag Manager mit der nächsten Meldung fortgefahren wird.

Wenn ein gtag()- oder dataLayer.push()-Aufruf durch Code auf einer Seite erfolgt, müssen Sie in einem benutzerdefinierten oder in einem benutzerdefinierten HTML-Tag, wird die zugehörige Nachricht in die Warteschlange verarbeitet werden, nachdem alle anderen ausstehenden Nachrichten ausgewertet wurden. Das bedeutet, dass alle sind die aktualisierten Werte für die Datenschicht nicht immer für das nächste Ereignis verfügbar. In solchen Fällen sollten Sie einer Nachricht einen Ereignisnamen hinzufügen, an die Datenschicht gesendet und dann auf den Ereignisnamen benutzerdefinierte Ereignistrigger

Datenschicht mit Event-Handlern verwenden

Das dataLayer-Objekt verwendet einen event-Befehl, um das Senden von Ereignissen zu initiieren.

Das Google-Tag und Tag Manager verwenden eine spezielle Datenschichtvariable namens event, das von JavaScript-Event-Listenern verwendet wird, um Tags auszulösen, wenn ein Nutzer mit Website-Elementen interagiert. Sie möchten z. B. eine Conversion auslösen, Tracking-Tag erfasst, wenn ein Nutzer auf eine Schaltfläche zur Kaufbestätigung klickt. Ereignisse können aufgerufen, wenn Nutzende mit Website-Elementen wie Links, Schaltflächen, Scrollen usw.

Hierzu wird dataLayer.push() aufgerufen, wenn ein Ereignis erfolgt. Die Syntax zum Senden eines Ereignisses mit dataLayer.push() lautet so:

dataLayer.push({'event': 'event_name'});

Dabei ist event_name ein String, der das Ereignis beschreibt, z. B. 'login'. purchase oder search.

Mit dataLayer.push() können Sie Ereignisdaten senden, wenn eine von Ihnen gewünschte Aktion eintritt zu messen. Um beispielsweise ein Ereignis zu senden, wenn ein Nutzer auf eine Schaltfläche klickt, ändern Sie den onclick-Handler der Schaltfläche zum Aufrufen von dataLayer.push():

<button onclick="dataLayer.push({'event': 'login'});">Button 1</button>

Sie können Datenschichtvariablen dynamisch an die Datenschicht übergeben, um Informationen wie in einem Formular eingegebene oder ausgewählte Werte, Metadaten, mit einem Video, das sich der Besucher ansieht, der Farbe eines Produkts (z.B. eines Autos) die durch den Besucher angepasst werden, die Ziel-URLs von angeklickten Links usw.

Wie bei Ereignissen wird diese Funktionalität durch Aufrufen der push() API erreicht um Datenschichtvariablen in der Datenschicht hinzuzufügen oder zu ersetzen. Die grundlegende Syntax für So legen Sie dynamische Datenschichtvariablen fest:

dataLayer.push({'variable_name': 'variable_value'});

Dabei ist 'variable_name' ein String, der den Namen der Datenschicht angibt festzulegende Variable und 'variable_value' ist eine Zeichenfolge, die den Wert die festzulegende oder zu ersetzende Datenschichtvariable.

Beispiel: Sie können eine Datenschichtvariable mit einer Farbeinstellung festlegen, mit einem Tool zur Produktanpassung interagiert, können Sie Datenschichtvariable:

dataLayer.push({'color': 'red'});

Ein Push, mehrere Variablen

Sie können mehrere Variablen und Ereignisse gleichzeitig senden:

dataLayer.push({
  'color': 'red',
  'conversionValue': 50,
  'event': 'customize'
});

Datenschichtvariablen beibehalten

Um die Datenschichtvariablen zwischen Webseiten beizubehalten, rufen Sie danach dataLayer.push() auf. dass die Datenschicht bei jedem Laden der Seite instanziiert wurde. mit der Datenschicht verknüpfen. Wenn diese Datenschichtvariablen für das Taggen wenn der Container geladen wird, fügen Sie einen dataLayer.push()-Aufruf oberhalb des Tag Manager-Containercode wie unten gezeigt.

<script>
window.dataLayer = window.dataLayer || [];

dataLayer.push({
 'event': 'Pageview',
 'pagePath': 'https://www.googleanalytics.dev/pancakes',
 'pageTitle': 'Pancake Event Signup',
 'visitorType': 'customer'
});
</script>
<!-- Google Tag Manager -->
<script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
})(window,document,'script','dataLayer','GTM-XXXXXX');</script>
<!-- End Google Tag Manager -->

Jede im Datenschichtobjekt deklarierte Variable bleibt nur so lange bestehen, wie bleibt der Besucher auf der aktuellen Seite. Relevante Datenschichtvariablen auf verschiedenen Seiten (z. B. visitorType) muss auf jeder Seite in der Datenschicht deklariert werden. Seite Ihrer Website. Auch wenn Sie nicht denselben Satz Variablen die Datenschicht auf jeder Seite verwenden, sollten Sie eine einheitliche Namenskonvention verwenden. In Mit anderen Worten: Wenn Sie die Seitenkategorie auf der Anmeldeseite mithilfe einer Variablen pageCategory aufgerufen haben, sollten Ihre Produkt- und Kaufseiten das pageCategory ebenfalls.

Fehlerbehebung

Im Folgenden finden Sie einige Tipps zur Fehlerbehebung bei Datenschichten:

Überschreiben Sie die Variable window.dataLayer nicht:Wenn Sie die Daten verwenden, Ebene direkt hinzufügen (z.B. mit dataLayer = [{'item': 'value'}]) werden alle vorhandene Werte in dataLayer. Bei Tag Manager-Installationen sollten Die Datenschicht so weit oben wie möglich über dem Container Snippet mit window.dataLayer = window.dataLayer || []; verwenden. Nachdem dataLayer deklariert wurde, verwenden Sie dataLayer.push({'item': 'value'}), um weitere Werte hinzuzufügen, und wenn diese müssen die Werte für Tag Manager verfügbar sein, wenn die Seite geladen wird. dataLayer.push()-Aufruf muss sich oberhalb des Tag Manager-Containercodes befinden: gut.

Beim dataLayer-Objektnamen wird zwischen Groß- und Kleinschreibung unterschieden: Wenn Sie versuchen, eine Variable oder Ereignis ohne passendes Gehäuse, funktioniert das Drücken nicht.

datalayer.push({'pageTitle': 'Home'});    // Bad (datalayer in lowercase)
dataLayer.push({'pageTitle': 'Home'});    // Good (dataLayer in camel case)

dataLayer.push muss mit gültigen JavaScript-Objekten aufgerufen werden. Alle Datenschicht Variablennamen in Anführungszeichen gesetzt werden.

dataLayer.push({new-variable: 'value'});      // Bad - no quote marks
dataLayer.push({'new-variable': 'value'});    // Good - proper quote marks

Achten Sie auf einheitliche Variablennamen auf allen Seiten:Wenn Sie unterschiedliche Variablen verwenden, auf verschiedenen Seiten nach dem gleichen Konzept suchen, können Ihre Tags immer an allen gewünschten Orten ausgelöst werden.

Schlecht:

// Homepage:
dataLayer.push({'visitorType': 'low-value'});

// Checkout Page:
dataLayer.push({'visitor_type': 'high-value'});

Gut:

// Homepage:
dataLayer.push({'visitorType': 'low-value'});

// Checkout Page:
dataLayer.push({'visitorType': 'high-value'});

Datenschicht umbenennen

Der Standardname des Datenschichtobjekts, der vom Google-Tag oder Tag Manager ist dataLayer. Falls Sie für Ihr Konto einen anderen Namen verwenden möchten, können Sie den Parameterwert der Datenschicht in Ihrem Google-Tag oder Tag Manager-Container-Snippet mit dem Namen Ihrer Wahl.

gtag.js

Fügen Sie der URL den Suchparameter „l“ hinzu, um den neuen Namen der Datenschicht festzulegen. z.B. l=myNewName Alle Instanzen von dataLayer im Google-Tag aktualisieren in den neuen Namen ein.

<!-- Google tag (gtag.js) -->
<script async src="https://www.googletagmanager.com/gtag/js?id=TAG_ID&l=myNewName"></script>
<script>
  window.myNewName = window.myNewName || [];
  function gtag(){myNewName.push(arguments);}
  gtag('js', new Date());

  gtag('config', 'TAG_ID');
</script>

Tag Manager

Ersetzen Sie den Wert des Datenschichtparameters (unten hervorgehoben) in Ihrem Container. Snippet mit dem Namen Ihrer Wahl.

<!-- Google Tag Manager -->
<script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
})(window,document,'script','myNewName','GTM-XXXXXX');</script>
<!-- End Google Tag Manager -->

Nach der Umbenennung werden alle Verweise auf die Datenschicht (bei der Deklaration der Daten) oberhalb des Snippets oder beim Senden von Ereignissen oder dynamischen Datenschichtvariablen mit dem Befehl .push()) angepasst werden, um Ihre Benutzerdefinierter Name der Datenschicht:

<script>
  myNewName = window.dataLayer || [];
  myNewName.push({'variable_name': 'variable_value'});
</script>

Benutzerdefinierte Datenschichtmethoden

Wenn Sie eine Funktion per Push an die Datenschicht übertragen, wird sie mit diesem Wert aufgerufen: ein abstraktes Datenmodell. Dieses abstrakte Datenmodell kann Werte für einen Schlüssel abrufen und festlegen Wertspeicher und bietet außerdem eine Möglichkeit, die Datenschicht zurückzusetzen.

set

Mit der Funktion set für das abstrakte Datenmodell können Sie Werte festlegen, über get.

window.dataLayer.push(function() {
  this.set('time', new Date());
});

get

Mit der Funktion get für das abstrakte Datenmodell können Sie Werte abrufen, festgelegt wurden.

window.dataLayer.push(function() {
  const existingTime = this.get('time');
  if (existingTime !== null) {
    // Change behavior based on whether or not this value exists...
  } else {
    // ...
  }
})

Zurücksetzen

Mit der Funktion reset für das abstrakte Datenmodell können Sie die Daten im der Datenschicht. Das ist besonders nützlich, wenn eine Seite geöffnet bleibt und die Daten mit der Zeit immer größer werden. Wenn Sie die Datenschicht zurücksetzen möchten, verwenden Sie den folgenden Code:

window.dataLayer.push(function() {
  this.reset();
})