Technikai alapok Szakszó

dataLayer

Szerző: · 7 perc olvasás · Frissítve:
dataLayer - Technikai alapok (szakszó) a tudástárban
dataLayer - Technikai alapok | eClick GEO-audit tudástár

A dataLayer egy globális JavaScript-tömb az oldalon, amin keresztül a weboldal adatokat és eseményeket ad át a tag-kezelő rendszernek. Nem mérőeszköz, hanem adatcsatorna: a kód beleír, a Google Tag Manager pedig kiolvassa és továbbítja a címkéknek.

Hogyan működik

A dataLayer tömböt a GTM-konténer betöltése előtt kell létrehozni. Ezután a kód dataLayer.push() hívásokkal küld bele objektumokat. Egy push kétféle dolgot tartalmazhat:

  • változó: adat, amit a címkék felhasználnak (pl. user_type, page_category, value)
  • event: esemény-név, ami triggert indít a tag-kezelőben (pl. purchase, generate_lead)

A GTM a push pillanatában lefagyasztja az aktuális állapotot, és az arra beállított triggerek elsülnek. Ami korábban bekerült a tömbbe, az később is elérhető marad.

Miért számít a mérésnek

A GA4 e-commerce események gyakorlatilag mind dataLayer-alapúak. A view_item, add_to_cart, begin_checkout és purchase előírt szerkezetű items tömböt vár. Ha a szerkezet elcsúszik, a riportokban nulla bevétel vagy hiányzó terméknév lesz belőle.

A riportokban gyakran azt látjuk, hogy a GTM ott van az oldalon, de dataLayer push egyáltalán nincs. Ilyenkor a mérés kimerül az oldalletöltésben, konverzió nincs.

Mit jelent az AI és a keresők felől

A dataLayer nem SEO-eszköz. Nem indexelhető tartalom, a keresőrobotok és az AI-crawlerek nem olvassák ki belőle a termékadatot. Aki terméknevet, árat vagy készletet csak dataLayerbe tesz, gép számára láthatatlanul teszi: arra a strukturált adat és a JSON-LD való. Van viszont közvetett hatása: a felesleges push-ok és a mögöttük futó szkriptek növelik a TBT és az INP értékét.

Röviden: a dataLayer a saját kódod és a tag-kezelő közötti szerződés, amiben a mezőnevek és az esemény-nevek pontosan számítanak.

Miért fontos

Mérés nélkül nincs döntés

A dataLayer hiánya azt jelenti, hogy nem tudod, melyik kampány hoz vásárlást. A hirdetési költés optimalizálása ilyenkor találgatás. A Google Ads és a Meta konverzió-visszajelzés nélkül rosszabb ajánlatot ad.

Az e-commerce riportok erre épülnek

A GA4 bevétel-riportjai, a termék-teljesítmény és a kosárelhagyási arány mind a dataLayer push-okból jön. Egyetlen elgépelt mezőnév elég, hogy egy teljes riport üres legyen.

Jogi kockázat

A dataLayer-be írt adat gyakran személyes adat: e-mail, telefonszám, rendelésazonosító. Ha ez hozzájárulás előtt továbbmegy egy külső szolgáltatóhoz, az hozzájárulás előtti követés. A Consent Mode éppen ezt hivatott kezelni.

Sebesség

Minden push szinkron feldolgozást indít a GTM-ben. Túl sok esemény, főleg scroll- és egérmozgás-alapú, mérhetően rontja az INP értékét mobilon.

Kikre vonatkozik

  • Webshopok: itt a legkritikusabb. E-commerce mérés dataLayer nélkül nem létezik.
  • Szolgáltatás- és lead-generáló oldalak: űrlapbeküldés, telefonhívás-kattintás, ajánlatkérés eseményekhez kell.
  • Tartalmi oldalak, blogok: elég lehet a beépített GA4-mérés, egyedi dataLayer nem feltétlenül indokolt.
  • Tag-kezelő nélküli oldalak: ha nincs GTM vagy hasonló rendszer, a dataLayer önmagában nem csinál semmit.

Nem vonatkozik staging- és fejlesztői környezetre abban az értelemben, hogy ott élő mérőkódnak nem szabad futnia. A tesztelés külön GTM-környezetben történik.

Hogyan ellenőrzöd

  1. Nyisd meg az oldalt, és indítsd el a böngésző devtools konzolját (F12).
  2. Írd be: dataLayer és nyomj Entert. Ha undefined jön vissza, nincs dataLayer.
  3. Böngéssz végig egy tipikus útvonalat: termékoldal, kosárba tétel, pénztár.
  4. Futtasd újra a dataLayer parancsot, és nézd meg, nőtt-e a tömb.
  5. Kapcsold be a GTM Preview módot (Tag Assistant), és kattints végig ugyanezt. Itt eseményenként látod a változókat.
  6. A GA4 DebugView-ban ellenőrizd, hogy az esemény paraméterekkel együtt megérkezik-e.

Jó jel

  • A dataLayer tömb létezik már az első képernyőn.
  • Kosárba tételkor add_to_cart event jelenik meg, items tömbbel.
  • Az items elemekben van item_id, item_name, price, quantity.
  • A purchase eseményben szerepel transaction_id és value.
  • A currency mező ISO-kód, tehát HUF, nem Ft.

Rossz jel

  • dataLayer is not defined a konzolban, miközben GTM-konténer van az oldalon.
  • A tömbben csak gtm.js és gtm.dom szerepel, saját push nincs.
  • Az items üres tömb, vagy a price szöveg ("12 990 Ft").
  • Ugyanaz a purchase esemény oldalfrissítésre újra elsül.
  • Nyílt e-mail cím vagy telefonszám a push-ban, hash nélkül.

Hogyan javítod

WordPress

  1. Telepíts egy GTM-integrációt (pl. GTM4WP), ne kézzel írd a konténerkódot a sablonba.
  2. A plugin beállításainál kapcsold be a WooCommerce e-commerce adatréteget.
  3. Állítsd be a GA4-kompatibilis esemény-sémát, ne a régi Universal Analytics formátumot.
  4. Gyerektémában ellenőrizd, hogy a sablon nem ír-e felül semmit a wp_head hookban.
  5. Ha egyedi eseményre van szükség, wp_add_inline_script segítségével tedd be, ne a footerbe másolva.

Shopify

  1. A Shopify Customer Events (Pixels) felületén hozz létre custom pixelt, itt van hozzáférés a checkout eseményekhez.
  2. A checkout_completed eseményre kösd rá a purchase push-t.
  3. A theme.liquid-be tett dataLayer nem éri el a checkoutot a legtöbb csomagban, ezzel számolj.
  4. A Shopify.checkout objektumból vedd ki a rendelésazonosítót, ne generálj sajátot.

Unas

  1. Az Unas adminban a Külső szolgáltatások résznél add meg a GTM-konténer azonosítót.
  2. Ellenőrizd a beépített e-commerce adatátadást, mert az Unas alapból küld termékadatot.
  3. Egyedi push-hoz a saját HTML-beszúrási pontokat használd, ne módosítsd a sablonfájlt közvetlenül.

Shoprenter

  1. A Shoprenter adminban keresd a GTM-integrációt, és aktiváld az e-commerce adatréteget.
  2. Ha egyedi sablon fut, a <head> template-be tedd a dataLayer inicializálást, a konténer elé.
  3. A pénztár-lépéseknél ellenőrizd külön, hogy a begin_checkout elsül-e.

Egyedi fejlesztés

  1. A window.dataLayer = window.dataLayer || []; sort tedd a konténerkód elé, a <head> tetejére.
  2. Szerveroldalon állítsd össze az adatobjektumot, ne a DOM-ból kapard össze az árat.
  3. Definiálj egy belső eseménylistát, és tartsd magad hozzá. A GA4 hivatalos esemény-neveit használd.
  4. SPA esetén kézzel küldj virtuális oldalletöltés eseményt minden route-váltásnál.
  5. A purchase push-t csak egyszer engedd lefutni: tárold el a transaction_id-t sessionStorage-ben.

Mit néz ebből a riport

Az audit megnézi, hogy létezik-e dataLayer objektum az oldalon, és van-e benne tényleges push a GTM saját eseményein túl. Azt is jelzi, ha tag-kezelő van, de adatréteg nincs mellette. A mérés tartalmi helyességét a riport nem ellenőrzi, mert ahhoz végig kell kattintani a vásárlási folyamatot.

Gyakori hibák

  • A dataLayer inicializálás a GTM-konténer után van: a konténer betöltéskor üres tömböt lát, az első push-ok elvesznek.
  • Elgépelt vagy egyedi esemény-nevek: a addtocart vagy AddToCart nem egyezik a GA4 által várt add_to_cart névvel, a riport üres marad.
  • Az ár szövegként kerül be: a "12 990 Ft" érték összegezhetetlen, a bevétel nulla lesz.
  • Személyes adat hash nélkül: nyers e-mail cím a push-ban GDPR-kockázat, és a Consent Mode sem véd meg tőle.
  • Duplikált purchase esemény: oldalfrissítésre újra elsül, a bevétel többszöröződik a riportban.
  • dataLayer.push() helyett felülírás: a dataLayer = [{...}] értékadás kidobja a korábbi tartalmat és leválasztja a GTM figyelőjét.
  • A termékadat csak a dataLayerben él: a keresők és az AI-crawlerek ebből semmit nem látnak, a Product séma pótolhatatlan.

Technikai példa

Helyes inicializálás, a konténerkód előtt, a <head> tetején:

<script>
  window.dataLayer = window.dataLayer || [];
  window.dataLayer.push({
    "page_type": "product",
    "user_logged_in": false
  });
</script>
<!-- Google Tag Manager konténerkód ide jön -->

GA4-kompatibilis kosárba tétel esemény. A currency ISO-kód, az árak számok:

{
  "event": "add_to_cart",
  "ecommerce": {
    "currency": "HUF",
    "value": 12990,
    "items": [
      {
        "item_id": "SKU-4417",
        "item_name": "Tolmacs fejhallgato",
        "item_category": "Audio",
        "price": 12990,
        "quantity": 1
      }
    ]
  }
}

Gyors ellenőrzés a böngésző konzoljában. Kiírja az összes eddigi esemény nevét:

dataLayer.map(function(e) { return e.event; })

Ha a válasz csak gtm.js, gtm.dom és gtm.load elemeket tartalmaz, saját mérés nincs az oldalon.

Gyakori kérdések

Kell dataLayer, ha csak a GA4 alapmérést használom?
Ha csak oldalletöltést akarsz mérni, nem kell. A GA4 alapból méri az oldalmegtekintést, a görgetést és a kimenő kattintásokat. Amint konverziót, űrlapbeküldést vagy vásárlást is mérnél, dataLayer nélkül nem jutsz megbízható adathoz.
A dataLayer segít a Google-rangsorolásban?
Nem. A keresőrobotok nem használják rangsorolásra, terméktartalmat sem olvasnak ki belőle. A gépi értelmezhetőséghez JSON-LD strukturált adat kell. Közvetve annyi a hatás, hogy a sok push lassíthatja az oldalt.
Mi a különbség a dataLayer és a GTM között?
A dataLayer az adat, a GTM a feldolgozó. A dataLayer egy tömb, ami önmagában semmit nem küld sehova. A GTM olvassa ki belőle az értékeket, és dönti el, melyik címke sül el.
Tehetek e-mail címet a dataLayerbe?
Technikailag igen, jogilag kockázatos. Ha személyes adat kerül bele, az minden GTM-ben futó címke számára elérhető lesz. Ha mindenképp szükséges, SHA-256 hash-elve add át, és csak érvényes hozzájárulás után.
Miért nulla a bevétel a GA4-ben, ha a purchase esemény látszik?
A leggyakoribb ok, hogy a value mező szövegként érkezik, vagy hiányzik a currency. Nézd meg a GA4 DebugView-ban a paraméterek típusát. A másik tipikus ok az elcsúszott items szerkezet.

Források

Kapcsolódó fogalmak

A te oldaladon hogy áll a(z) „dataLayer”?

Futtass egy SEO-auditot: pontszám, fejlesztői ítélet, a leggyorsabb javítások, és minden tételhez bizonyíték.

Ingyenes SEO-audit indítása