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:
- Tealium przenosi zdarzenia przez
utag.view()iutag.link()— wywołania funkcji, nie tablicę. Jest obiektutag_data, ale trzyma zmienne strony, a nie kolejność tego, co się wydarzyło. - Adobe Launch używa
_satellite.track()i własnych reguł. - Adobe CEDDL używa
digitalData, a nowsza Adobe Client Data Layer —adobeDataLayer.push(): tablica, ale inna. - Commanders Act używa
tc_varsitC.event.
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
- 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. - Jeśli to Shopify bez przekaźnika, przestań szukać pushów. Idź do sieci.
- 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.
- 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.
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