Effektive Wege zur Verarbeitung von Daten innerhalb der dataLayer

Dieser Artikel richtet sich an technische Nutzer des Google Tag Managers.

In der Welt der Webanalyse und des digitalen Marketings ist der dataLayer ein Schlüsselkonzept, insbesondere bei der Arbeit mit dem Google Tag Manager (GTM). Er ist ein Array, das als zentrales Repository für die Speicherung und Verwaltung der Daten dient, die Sie auf Ihrer Website tracken möchten. Wenn Sie jedoch auf die Daten zugreifen möchten, werden Sie schnell mit dem Problem konfrontiert, dass die Daten dynamisch positioniert sein können und damit die Position bestimmter Datenpunkte möglicherweise nicht konsistent ist. In diesem Artikel werden wir effektive Strategien zur Bewältigung dieser Herausforderungen untersuchen, um sicherzustellen, dass Sie den dataLayer auf die effektivste Weise für Ihren Anwendungsfall nutzen können.

Datenverarbeitung innerhalb der dataLayer

Verstehen der dataLayer-Dynamik

Bevor wir uns mit den Lösungen befassen, ist es wichtig zu verstehen, dass der dataLayer ein Array ist, in dem jedes Element ein Objekt ist, das verschiedene Informationen enthält. Da es sich um ein Array handelt, hängt die Reihenfolge der Objekte davon ab, wann sie dem Array hinzugefügt (gepushed) wurden. Was Sie vom dataLayer abrufen können, hängt von der Website ab – je nachdem, was getracked wird. So könnten beispielsweise Benutzerdaten wie der Login-Status oder der Typ einer Seite (z.B. Produktseite oder Startseite) nützlich sein, um sie aus dem dataLayer abzurufen. Gerade als Marketing-Beratung, die nicht direkt in die Prozesse des Kunden involviert ist, können wir nicht immer wissen, woran die Technik-Teams des Kunden arbeiten oder was sie verändern könnten. Somit können auch Veränderungen am dataLayer vorkommen, auf die wir reagieren müssen. Diese Umstände machen es erforderlich, dass wir uns an die Art und Weise, wie der Kunde Daten bereitstellt, anpassen.

Fall 1: Abrufen von Daten mit verschachtelten und variablen Positionen

Im ersten Fall wollen wir Ihnen zeigen, wie Sie mit inkonsistenten Positionen von Daten innerhalb der dataLayer umgehen können. Wir hatten kürzlich ein Szenario, bei dem die Daten eines Seitentyps und der Login-Status eines Benutzers immer an der ersten Position der dataLayer standen. Das machte es uns leicht, diese Daten zu verwenden, da sie aufgrund der seit Jahren gleichbleibenden Struktur zuverlässig waren. Wir konnten einfach warten, bis die dataLayer verfügbar waren und den ersten dataLayer-Index verwenden. Wir haben diesen Ansatz in verschiedenen Experimenten verwendet, um mit den Daten zu arbeiten.

Dies wurde zum Problem, als der Kunde diese Struktur eines Tages änderte. Die Daten waren immer noch innerhalb des ersten dataLayer-Elements gespeichert. Allerdings waren sie jetzt in einem Array verschachtelt. Die Position dataLayer[0] änderte sich also in dataLayer[0][0], was unseren Ansatz offensichtlich durchkreuzte.

Selbst wenn wir das Array jedes Mal in einer Schleife durchlaufen hätten, wäre es uns nicht möglich gewesen, diese Änderung sofort zu erkennen. Der Hotfix, den wir anwandten, funktionierte nicht lange, denn ein paar Tage später wurde die Struktur erneut geändert. Nun befanden sich die Daten an einem zufälligen Index. Daher haben wir beschlossen, einen robusten Ansatz zu entwickeln. Die Anforderungen waren, dass er in der Lage sein sollte, alle Stellen zu bedienen, an denen wir die dataLayer-Informationen verwendeten. Außerdem sollte er leicht zu aktualisieren sein, damit wir schnell auf Änderungen in der Datenstruktur reagieren können.

Hier ist ein angepasstes Skript, das den dataLayer auf die notwendigen Daten überprüft. Zunächst haben wir ein Intervall verwendet, um die Daten abzufragen, bis der dataLayer verfügbar ist. So können wir kontinuierlich nach den letzten Änderungen suchen.

  1. Die Intervallverzögerung ist relativ niedrig angesetzt, da wir wissen, dass die Daten schnell aufgefüllt werden. Sollte dies die Leistung der Website beeinträchtigen, können wir das leicht ändern.
  2. Der Code innerhalb des Intervalls prüft zunächst, ob der dataLayer verfügbar ist, indem er das Muster “early return” verwendet.
  3. Dann haben wir eine Variable, die anzeigt, ob der aktuelle Eintrag unseren Bedingungen entspricht.
  4. In der For-Schleife können wir die verschiedenen Sonderfälle definieren, die jeder dataLayer haben könnte. Wir haben unseren Spezialfall hinzugefügt, der ein Array als Eintrag berücksichtigt. Allerdings nur für die erste Position, um Ressourcen zu sparen.
  5. Für jeden Eintrag prüfen wir dann mit der Funktion “checkDataLayerReady”, ob die notwendigen Eigenschaften vorhanden sind.
  6. Sobald dies der Fall ist, senden wir ein CustomEvent mit den Daten, damit der Listener sie direkt verwenden kann. Zusätzlich speichern wir die Daten in einer globalen Variable, um sicherzustellen, dass die Daten auch für den Code verfügbar sind, der nach dem Auslösen des Ereignisses ausgeführt wird.
  7. Beachten Sie, dass wir vor dem Senden des Ereignisses und dem Speichern der Daten diese auch kanonisieren können. Für den Fall, dass sich die Datenstruktur vollständig ändert, können wir sie hier kanonisieren, damit der Code, der die Daten später verarbeitet, nicht geändert werden muss.

Fall 2: Optimierung der Effizienz

Im vorherigen Szenario wurden in jedem Intervallzyklus alle Elemente geprüft, die derzeit in dem dataLayer gespeichert sind. Wenn Sie sicher sind, dass sich zwischen den Intervallzyklen nichts ändert, können Sie den Index, den Sie als nächstes prüfen wollen, auch im Array speichern. Auf diese Weise vermeiden Sie das Durchlaufen von Schleifen über Elemente, die Sie zuvor überprüft haben, und steigern so die Leistung bzw. reduzieren den Ressourcenverbrauch.

Der folgende Code verwendet ähnliche Konzepte wie das vorherige Beispiel. Daher sind diese Teile nur mit Kommentaren versehen.

  1. Im Code erstellen wir zunächst eine Variable, die den Index des dataLayers darstellt, den wir als nächstes prüfen müssen. Im Moment ist das 0, da wir noch nichts geprüft haben.
  2. Wir verwenden wieder ein Intervall, um kontinuierlich die neuesten Änderungen an dem dataLayer zu überprüfen.
  3. Innerhalb jedes Intervalls prüfen wir die neuen Elemente im dataLayer.
  4. Wir speichern absichtlich die Länge des dataLayers als den nächsten zu prüfenden Index. Wenn sich der dataLayer nicht ändert, gibt es keinen Wert bei diesem Index. Da wir aber bereits den letzten Index des Arrays im vorherigen Intervall geprüft haben, wollen wir den nächsten im aktuellen Intervall prüfen. Wenn es keine neuen Daten gibt, kommen wir dementsprechend auch nicht in die Schleife.
  5. Als Sicherheitsmechanismus habe ich auch einen Timeout hinzugefügt, um dieses Intervall nach 5 Sekunden zu stoppen, da ich weiß, dass die gewünschten Daten vorher verfügbar sein sollten. Wenn das in Ihrem Anwendungsfall nicht der Fall ist, können Sie dies weglassen. Hier könnte es sinnvoll sein, die Intervallverzögerung zu erhöhen, um Ressourcen zu sparen.

Zusammenfassung

Der dataLayer im GTM oder der Adobe Analytics dataLayer sind leistungsfähige Werkzeuge in Ihrem Analyse-Arsenal, aber ihre dynamische Natur kann Herausforderungen bei der Datenabfrage mit sich bringen. Wenn Sie die oben beschriebenen Strategien verstehen und umsetzen, können Sie sicherstellen, dass Ihre Datenerfassung sowohl effizient als auch aussagekräftig ist, sodass Sie fundierte Entscheidungen auf der Grundlage genauer Daten treffen können. Ganz gleich, ob Sie mit verschachtelten Strukturen zu tun haben oder die Effizienz eines einzelnen Lesevorgangs anstreben – diese Techniken werden Ihnen helfen, die Komplexität der dataLayer-Verwaltung effektiv zu bewältigen. Die hier gezeigten Fälle stellen Lösungen für aktuelle Probleme dar, mit denen wir konfrontiert waren. Allerdings gibt es weitaus mehr Möglichkeiten, die dataLayer effektiv zu überprüfen, abhängig vom Anwendungsfall, den Sie untersuchen.

Simon Giglhuber

Simon Giglhuber ist Experimentation-Entwickler bei Up Reply. Er ist mit Tools wie Optimizely und Dynamic Yield vertraut und hat bei der Optimierung der Online-Schnittstelle für unsere Kunden geholfen. In seinen Blogeinträgen wird sich Simon auf JavaScript-technische Details und Frontend-Aspekte konzentrieren, die für effektive A/B-Tests und Personalisierung unerlässlich sind.

Lassen Sie uns Ihr E-Commerce-Business auf die nächste Stufe heben

Erschließen Sie neue Möglichkeiten und definieren Sie die Kundenerfahrung neu durch personalisierte, datengetriebene Strategien mit Up Reply.