Strona główna / Poradniki

Sklep, którego dataLayer jest pusty

Otwierasz inspektor na działającym sklepie i nic nie przychodzi. Zdarzenia są prawdziwe, wystrzeliły i nie ma ich w window.dataLayer. Cztery platformy kierują je tam, gdzie żadne rozszerzenie nie sięga — i każda ma inne miejsce do czytania.

Objaw dezorientuje, bo cała reszta wygląda poprawnie. Sklep przyjmuje zamówienia, raporty się zapełniają, GA4 pokazuje zakupy. Otwierasz na tej samej stronie inspektor dataLayer, żeby sprawdzić, co pushuje checkout — i lista jest pusta. Nie błędna. Pusta.

Prawie każda odpowiedź na to zakłada pomyłkę: brakuje kontenera, snippet jest nad pushem, warstwa nazywa się inaczej. Czasem tak jest. Na czterech szeroko używanych platformach nie jest żadną z tych rzeczy i żadne wpatrywanie się w window.dataLayer tego nie zmieni, bo zdarzeń tam nie ma.

dataLayer to nie jedyna warstwa danych

Rozszerzenie czytające dataLayer czyta jedną tablicę w oknie nadrzędnym. Ta konwencja należy do GTM. Inne stosy nigdy jej nie przyjęły:

Panel zdarzeń bez żadnych zdarzeń dataLayer, nad komunikatem, że strona używa Shopify Web Pixels, że jej zdarzenia idą przez piaskownicową ramkę pixela zamiast dataLayer strony i że trafienia nadal da się odczytać w Network.
Pusta lista, która mówi, dlaczego jest pusta. Różnica między „nic się nie stało" a „stało się tam, gdzie nie możesz patrzeć" to cały ten poradnik — i dlatego panel poświęca jej cztery linijki.

Panel pokazujący pustą listę na stronie z Tealium nie mówi prawdy. Prawda jest taka, że zdarzenia istnieją i jadą inną drogą. Tag Master nazywa znalezioną obcą warstwę i pisze, czym wysyła — Tealium, przez utag.view() i utag.link() — zamiast zostawiać pustą listę do interpretacji. Przy Adobe Launch idzie krok dalej i czyta wykonane reguły przez hook monitora, który Adobe publikuje dokładnie w tym celu.

Shopify jest najtrudniejszy i najczęstszy

Shopify przeniósł śledzenie do Web Pixels: małych skryptów działających w piaskownicy, z własną szyną zdarzeń i własnym dataLayer. product_added_to_cart, checkout_started i checkout_completed są rozsyłane tam. Nie docierają do okna nadrzędnego i nic działającego w stronie nie może ich subskrybować — ani to rozszerzenie, ani żadne inne. Tak właśnie ma działać piaskownica.

Checkout pogarsza sprawę, bo checkout Shopify zawsze był osobnym kontekstem. Zdarzenie, na którym większości wdrożeń zależy najbardziej — purchase — jest zarazem najdalej poza zasięgiem czegokolwiek, co czyta stronę.

Wyjątkiem jest sklep z Elevarem lub podobnym przekaźnikiem, który publikuje zdarzenia piaskownicy z powrotem na stronie jako dl_purchase, dl_add_to_cart i resztę. Jeśli te nazwy się pojawiają, warstwa jest przekazywana i czytasz kopię — dobrą kopię, ale w innej pisowni.

Gdzie czytać zamiast tego

Na każdej z tych platform zdarzenia i tak zamieniają się w żądania sieciowe, a żądań nie da się schować w piaskownicy przed debuggerem, który patrzy na sieć. Co dostało GA4, jest w trafieniu /g/collect; co dostała Meta — w wywołaniu /tr. Push jest ukryty; skutek nie.

Procedura się więc odwraca. Zamiast czytać push i sprawdzać, czy tag do niego pasował, czytasz trafienie i cofasz się do pytania, czy niosło to, co powinno: właściwą nazwę zdarzenia, wartość, walutę, identyfikator transakcji. Czytanie trafienia GA4 parametr po parametrze to cała umiejętność w takich sklepach, a wypisanie tego, co strona wysłała — sposób, żeby przed startem wiedzieć, które platformy są w grze.

Zanim ruszysz szukać błędu

  1. Ustal, którą warstwę strona naprawdę ma. window.utag, window._satellite, window.adobeDataLayer, window.Shopify — po jednej linijce w konsoli, a odpowiedź zmienia to, co robisz dalej.
  2. Jeśli to Shopify bez przekaźnika, przestań szukać pushów. Idź do sieci.
  3. Jeśli to Tealium albo Launch, zdarzenia są w konsoli debugowania samego dostawcy, a tę można włączyć dla karty, której już używasz.
  4. Dopiero potem, jeśli strona faktycznie jest stroną GTM z prawdziwym dataLayer, traktuj pustą listę jako błąd wart ścigania.

Pusty inspektor to fakt o tym, gdzie są zdarzenia, a nie wyrok o tym, czy istnieją. Sklepy powyżej są powodem, by sprawdzić, z którym z tych dwóch przypadków masz do czynienia.

Pytania

Dlaczego mój dataLayer w Shopify jest pusty?

Bo Web Pixels w Shopify działają w piaskownicy — w osobnej ramce z własnym dataLayer. product_added_to_cart i checkout_completed nigdy nie docierają do okna nadrzędnego, więc żadne rozszerzenie działające w stronie ich nie widzi — to też. Żądania, które wysyłają, nadal są w sieci.

Czy śledzenie checkoutu naprawdę jest niewidoczne?

Niewidoczne są pushe. Checkout Shopify zawsze działał we własnym kontekście, a Web Pixels to sformalizowały. To, co pixele wysyłają na zewnątrz, jest zwykłym ruchem sieciowym i da się odczytać w całości — dlatego w sklepie na Shopify pracuje się na trafieniach, nie na warstwie.

A Tealium i Adobe?

Żadne z nich nie używa tablicy. Tealium wysyła zdarzenia przez utag.link() i utag.view(), Adobe Launch przez _satellite.track(). To wywołania funkcji, więc żadna lista nazw dataLayer do nich nie dosięga. Wyjątkiem jest Launch, który ma udokumentowany hook monitora — przez niego widać, które reguły się wykonały.

Czy pusty dataLayer znaczy, że śledzenie jest zepsute?

Nie, a takie założenie kosztuje najwięcej. Sklep może wysłać bezbłędny zakup do pięciu platform, mając window.dataLayer zupełnie pusty. Zajrzyj do sieci, zanim orzekniesz cokolwiek o warstwie.

Jak to zrobić w panelu →

Reszta tej grupy: Sklepy i ich warstwy danych

Cała grupa Sklepy i ich warstwy danych

Sprawdź na własnej stronie

Tag Master jest darmowy, nie wymaga konta i nie zbiera żadnych danych.

Dodaj do Chrome — za darmo