A legtöbb Shopify GA4-hibát több párhuzamos mérési forrás okozza. A Google & YouTube integráció, egy GTM-es custom pixel, egy régi theme snippet és a CMP egyszerre is küldhet adatot vagy consent state-et. Először jelöld ki, melyik rendszer felel a GA4 eventekért és melyik a hozzájárulásért, utána rétegenként tesztelj a böngésző Network paneljétől a GA4 riportokig.

Dupla view_item, rejtélyes /web-pixels/.../sandbox/ URL, Lighthouse-ban felbukkanó googletagmanager.com, üres DebugView, miközben a Realtime mégis mutat eventet. Ezek elsőre különálló Shopify-problémáknak tűnnek, pedig ugyanarra a kusza alaphelyzetre vezethetők vissza: nem látod egyben, hány mérési megoldás fut, melyik környezetben futnak, és ki küldi ténylegesen ugyanazt az eseményt.

Ha még csak most kötöd be a mérést, kezdd a Google Analytics 4 bekötése Shopify-ra útmutatóval. Az alábbi hibakeresés akkor jön jól, ha a GA4 már működik, de az adatok duplázódnak, hiányosak vagy egyszerűen nem érted, honnan érkeznek.

Először rajzold fel, mi mér a boltban

Shopify-on legalább négy helyről indulhat Google Analytics- vagy hirdetési mérés. A Google & YouTube sales channel saját Google taget és automatikus ecommerce eventeket adhat. A Customer Events alatt custom pixel vagy app pixel futhat. A theme-ben maradhatott kézzel beillesztett script vagy app embed, miközben egy CMP a consent state-et is kezeli.

A legfontosabb szabály: ugyanazért a GA4 ecommerce eventért egyetlen mérési réteg feleljen. Ha a Google & YouTube integráció már elküldi a view_item eseményt, egy GTM-es ecommerce tag ne küldje el ugyanazt még egyszer ugyanabba a data streambe. A Shopify saját GTM-útmutatója külön figyelmeztet rá, hogy a natív Google Analytics-integráció mellé beépített GTM-es GA4 követés duplikációt okozhat.

Kezdésként készíts leltárt erről az öt területről:

  • Google & YouTube sales channel és a hozzákapcsolt GA4 property;
  • Customer Events alatt található app pixelek és custom pixelek;
  • theme-kód, app embedek és korábbi analytics snippetek;
  • GTM containerek, Google tagek és azok measurement ID-i;
  • CMP, Shopify cookie banner és minden consent-integráció.

Ne csak a theme fájljaiban keress. Egy app vagy Shopify-integráció futás közben is betölthet taget, ezért a forráskód keresése önmagában kevés.

A googletagmanager.com még nem bizonyít GTM-containert

Ha Lighthouse vagy a Network panel googletagmanager.com kérést mutat, attól még nem biztos, hogy valaki klasszikus GTM-containert tett a boltba. A Google tag, vagyis a gtag.js is erről a domainről töltődhet be. A kérés URL-jében lévő azonosító sokkal többet mond:

.../gtm.js?id=GTM-XXXXXX   → Google Tag Manager container
.../gtag/js?id=G-XXXXXXX   → GA4 Google tag
.../gtag/js?id=AW-XXXXXX   → Google Ads tag

Nyisd meg a Chrome DevTools Network paneljét, szűrj gtm.js, gtag/js, collect és googletagmanager kifejezésekre, majd nézd meg az Initiator oszlopot. Ebből kiderülhet, hogy theme script, app, custom pixel iframe vagy más betöltött erőforrás indította a kérést. A measurement ID-t is írd fel; gyakori, hogy nem egyetlen GA4 stream kap adatot.

Ez a módszer a teljesítményvizsgálatnál is hasznos. A Lighthouse csak azt mutatja, hogy egy külső erőforrás betöltődött és mennyibe került. Az Initiator és a request URL segít megtalálni, hogy miért van ott.

Miért jelenik meg sandbox URL a GA4-ben?

A Shopify custom pixel lax sandboxban, egy korlátozott iframe-ben fut. A pixel emiatt nem ugyanazt a böngészőkörnyezetet látja, mint a storefront felső frame-je. A Shopify dokumentációja szerint a sandbox saját window.location értéke a sandbox URL-jét adhatja vissza, mert a pixel nem éri el közvetlenül a top frame-et.

Ezért a page_location értékét ne a sandbox globális window.location.href mezőjéből építsd. A Shopify customer event payloadja top-frame kontextust ad, ezért a standard eventből érkező event.context.window.location.href értéket használd. A sandbox működését a hivatalos Web Pixels dokumentáció részletesen leírja.

Fontos: egy sandbox URL-lel érkező második view_item még nem azonosítja automatikusan a hibás komponenst. Azt bizonyítja, hogy legalább egy hit iframe-környezetből kapott rossz page_location értéket. Ha a helyes URL-lel küldött event közben továbbra is megmarad, akkor valószínűleg két külön küldési útvonalad van. Előbb az egyik forrást kapcsold ki tesztkörnyezetben, majd ismételd meg ugyanazt a termékoldal-megnyitást.

Így szűrd ki a duplikált ecommerce eventet

A duplikációt kontrollált teszttel érdemes felderíteni. Nyiss inkognitóablakot, kapcsold ki a böngészőbővítményeket, töröld a consent állapotot, majd egyetlen termékoldalt tölts be. A Network panelen keresd meg az összes GA4 collection requestet, és hasonlítsd össze az alábbi mezőket:

Mező Mit árul el?
Measurement ID (tid) Ugyanabba a GA4 data streambe mennek-e a hitek?
Eventnév (en) Valóban ugyanaz az ecommerce event duplázódik-e?
Page location (dl) Storefront vagy pixel sandbox adta-e az URL-t?
Client és session azonosító Ugyanahhoz a böngészőhöz és sessionhöz kapcsolódnak-e?
Initiator Melyik script vagy iframe indította a requestet?
Ecommerce payload Ugyanazt a terméket és értéket küldi-e mindkét hit?

Ezután végezz kizárásos tesztet. Először állítsd le a GTM-ből küldött GA4 ecommerce taget, miközben a natív integráció marad. Utána fordítva is tesztelj, ha a környezeted biztonságosan engedi. Ne több változtatást publikálj egyszerre, mert utána nem tudod, melyik oldotta meg a hibát.

A purchase külön figyelmet érdemel. A GA4 a tranzakcióazonosító alapján képes kiszűrni bizonyos ismételt vásárlási eventeket, de ez nem javítja meg a teljes implementációt, és a view_item vagy add_to_cart események duplázódását sem oldja meg. A cél továbbra is az, hogy egy üzleti eseményből egy szándékos GA4 event szülessen.

A Consent Mode nem consent banner és nem teszi automatikusan jogszerűvé a mérést. A banner vagy CMP begyűjti a látogató döntését, a Google Consent Mode pedig ezt a döntést közli a Google tagekkel. Shopify-on ehhez még hozzáadódik a Customer Privacy API és a pixel manager jogosultsági rendszere.

Építs egyértelmű felelősségi láncot:

látogató döntése
→ CMP vagy Shopify cookie banner
→ Shopify Customer Privacy állapot
→ egyetlen Google Consent Mode integráció
→ az engedélyezett GA4 és hirdetési tagek

A Google Consent Mode dokumentációja szerint a tageknek előbb default állapotot kell kapniuk, majd a látogatói döntéskor update-et. GTM-ben ehhez lehetőleg CMP-template-et vagy a Tag Manager consent API-it használd. A gtag('consent', ...) hívások kézi szétszórása a theme-ben, a GTM-ben és a custom pixelben időzítési versenyt és egymásnak ellentmondó állapotokat hozhat.

Az „egy default” jó architekturális cél, de technikailag nem szó szerinti törvény. A Google támogat régióspecifikus defaultokat is, ahol több default hívás lehet szándékos, és a specifikusabb régió érvényesül. A valódi hibát az jelenti, ha egymástól független rendszerek ugyanarra a látogatóra eltérő consent state-et állítanak, például az egyik denied, a másik rögtön granted értéket.

A basic és advanced Consent Mode között is van különbség. Basic módban a Google tagek hozzájárulás előtt blokkolva maradnak, így adat sem megy a Google felé. Advanced módban denied állapot mellett cookie nélküli mérések is távozhatnak. A Google Consent Mode útmutatója mindkettőt támogatja; azt, hogy a te boltodban melyik fér bele, a jogalapod, a CMP működése, a célpiac és a saját adatvédelmi álláspontod alapján kell eldöntened. Ezt jogásszal vagy adatvédelmi szakértővel érdemes véglegesíteni.

Miért üres a DebugView, ha az event mégis megérkezik?

A GA4 DebugView csak debug módban küldött eventeket mutat. Ha a Shopify custom pixel iframe-ben fut, a Tag Assistant nehezebben kapcsolódhat hozzá; a Google szerint iframe-ben betöltött tag debugolásához a Tag Assistant böngészőbővítményre is szükség lehet. Consent tool, ad blocker vagy a sandbox időzítése tovább bonyolíthatja a képet.

Ezért az üres DebugView nem bizonyítja, hogy a GA4 event nem ment ki. A Network panelen ellenőrizd, hogy történt-e kérés a GA4 collection endpointra, helyes-e a measurement ID, az eventnév és a payload. A sikeres HTTP-válasz azt mutatja, hogy a kérés elhagyta a böngészőt; önmagában nem garantálja, hogy minden paraméter helyes és a riportban a várt módon jelenik meg.

A stabil hibakeresési sorrend így néz ki:

  1. Ellenőrizd a Shopify customer eventet és a belőle képzett payloadot.
  2. Nézd meg, hogy a GTM trigger valóban lefutott-e, amennyiben GTM-et használsz.
  3. Keresd meg a GA4 collection requestet a Network panelen.
  4. Ellenőrizd a measurement ID-t, eventnevet, URL-t, consent paramétereket és ecommerce adatokat.
  5. Nézd meg a Realtime riportot, debug módban pedig a DebugView-t.
  6. A standard riportok kiértékelésével várd meg a feldolgozást.

Ha a Network panelen két view_item requestet látsz, az duplikáció akkor is, ha a DebugView csak az egyiket mutatja. Ha egyetlen requestet látsz, de a DebugView üres, akkor előbb a debug jelölést és az iframe-es Tag Assistant kapcsolatot vizsgáld.

Az Unassigned nem önálló Shopify-hiba

A GA4 akkor sorolja Unassigned csatornába a forgalmat, ha a source és medium nem illeszkedik a default channel group szabályaihoz, vagy hiányzik a session azonosításához szükséges információ. Ilyet okozhat például, ha egy event a Google tag inicializálása előtt fut le, hiányzik a session_start, hibás a kampányparaméterezés, vagy az event másik mérési útvonalon érkezik, mint a session kezdete.

A dupla consent default vagy a sandbox URL tehát lehet ugyanannak a rossz architektúrának a tünete, de egyikből sem következik automatikusan az Unassigned pontos oka. Vizsgáld meg session szinten a session_start, page_view, source, medium és landing page adatokat. Előbb állítsd helyre az eventek sorrendjét és az egyetlen mérési gazdát, majd friss adaton nézd meg, csökkent-e az Unassigned aránya.

Milyen Shopify GA4-architektúrát választanék?

Egy átlagos Shopify-boltnál a Google & YouTube integráció a legegyszerűbb kiindulópont. Automatikusan kezeli a támogatott ecommerce eventek egy részét, és kevesebb saját kódot kell karbantartanod. Ha egyedi eventek, több marketingplatform vagy részletes data layer miatt GTM kell, akkor dokumentáld pontosan, mely eventeket veszi át a GTM, és szüntesd meg az átfedést a natív GA4-küldéssel.

Custom pixel esetén a Shopify customer event legyen a bemenet, és abból képezd a platformoknak szánt payloadot. A consent döntés maradjon a CMP és a Shopify Customer Privacy réteg feladata. A GTM vagy Google tag ezt az állapotot egyetlen, kijelölt integráción keresztül kapja meg. Így a rendszer nem feltétlenül lesz egyszerű, de megmarad az a tulajdonsága, ami mérésnél mindennél fontosabb: végig tudod követni, honnan indult és hová érkezett egy event.

GYIK

Miért látok googletagmanager.com kérést, ha nincs GTM-em?

A Google tag, vagyis a gtag.js is betöltődhet a googletagmanager.com domainről. A request URL-jében nézd meg, hogy GTM-, G- vagy AW- azonosító szerepel-e, majd ellenőrizd az Initiator mezőt.

Miért küld sandbox URL-t a Shopify custom pixel?

A custom pixel iframe-sandboxban fut, ezért a saját window.location értéke a sandbox címére mutathat. A storefront URL-jét a Shopify customer event context objektumából vedd át.

Használhatom egyszerre a Google & YouTube integrációt és a GTM-et?

Igen, de előre oszd fel a felelősséget. Ha mindkettő ugyanazt a GA4 ecommerce eventet küldi ugyanabba a data streambe, duplikált mérésed lesz.

Egyetlen Consent Mode default hívás lehet az oldalon?

Általában egy kijelölt integráció kezelje a default és update állapotokat. Régióspecifikus konfigurációban több default is lehet szándékos, ezért a hívások számánál fontosabb, hogy ne legyen köztük logikai ellentmondás.

A Network panelen látható GA4 request bizonyítja, hogy jó a mérés?

Azt bizonyítja, hogy a böngésző elküldött egy kérést. A measurement ID-t, az eventnevet, a consent state-et és az ecommerce paramétereket is ellenőrizned kell, majd a Realtime, DebugView és feldolgozott riportokban is nézd meg az eredményt.

Gyuri

Gyuri

Hugyecz György – keresőoptimalizálási szakértő és a TotalStudio egyik tulajdonosa. Weboldalaknál és webáruházaknál elsősorban SEO-val, tartalomfejlesztéssel és technikai auditokkal foglalkozik, emellett fizetett hirdetésekkel (Google Ads, Meta), szövegírással és általános tanácsadással is; aktívan érdeklődik és használja a különböző AI-megoldásokat.

Profil