Launcher

Wpisz, aby wyszukać podstrony, realizacje i linki.

Preferencje

Koniec wyników

Realizacja

Zakres projektu

Kontekst projektu

Klient prowadzi sklep ecommerce na Shopify. Po wdrożeniu CMP oraz Consent Mode v2 pojawiły się problemy z jakością danych w GA4 i Google Ads: spadki eventów ecommerce, duży udział ruchu Unassigned, brak stabilnych danych z checkoutu oraz rozjazd między realnymi zamówieniami a raportami analitycznymi.

Dodatkowym utrudnieniem był Shopify Checkout Extensibility / Checkout 2.0, gdzie klasyczne wdrożenie GTM przez checkout.liquid nie jest dostępne na standardowym planie. Tracking musiał zostać rozdzielony na storefront i checkout, przy jednoczesnym zachowaniu zgodności z Consent Mode v2 oraz ograniczeniami sandboxa Shopify Web Pixels.

Problem

W początkowej konfiguracji występowało kilka nakładających się problemów:

  • storefrontowy GTM nie otrzymywał pełnych eventów ecommerce w dataLayer,
  • checkout działał w osobnym sandboxie Shopify Custom Pixel,
  • consent z Pandectes był poprawnie widoczny na storefront, ale nie był prawidłowo mapowany w checkout custom pixelu,
  • część eventów checkoutowych wysyłana była jako G100, czyli bez pełnej zgody i bez normalnego kontekstu cookies,
  • GA4 pokazywało duży udział Unassigned oraz (not set) / (not set),
  • eventy typu add_to_cart, view_item, begin_checkout, purchase były niespójne albo niepełne,
  • istniało ryzyko duplikowania zakupów między Google & YouTube App, GTM i custom pixelem.

Zakres prac

Prace objęły pełny audyt i przebudowę warstwy analitycznej sklepu:

  1. Audyt konfiguracji GA4, Google Ads, GTM i Consent Mode v2.
  2. Rozdzielenie infrastruktury trackingowej na dwa kontenery GTM: osobny kontener dla storefrontu i osobny kontener dla checkoutu.
  3. Wdrożenie Shopify Custom Pixel dla Checkout 2.0.
  4. Przygotowanie checkoutowego dataLayer dla GA4 ecommerce.
  5. Naprawa Consent Mode v2 w sandboxie checkoutu.
  6. Odtworzenie brakujących eventów ecommerce na storefront.
  7. Deduplikacja eventów add_to_cart oraz eventów checkoutowych.
  8. Weryfikacja requestów GA4 i Google Ads przez Network, HAR, Tag Assistant i DebugView.
  9. Analiza źródeł Unassigned i problemów z atrybucją.
  10. Uporządkowanie Google Ads, Meta i TikTok pod kątem UTM oraz klasyfikacji kanałów.

Architektura rozwiązania

Finalna infrastruktura została oparta o dwa niezależne kontenery GTM.

Storefront

Storefront obsługiwany jest przez Pandectes CMP oraz kontener GTM ładowany na stronach sklepu przed checkoutem.

Zakres eventów storefrontowych:

  • page_view,
  • view_item,
  • view_cart,
  • add_to_cart,
  • opcjonalnie w przyszłości: view_item_list, select_item, search, remove_from_cart.

Storefront odpowiada za bazowy pomiar GA4, Consent Mode v2 przez Pandectes, utrzymanie atrybucji, Conversion Linker, eventy produktowe i koszykowe oraz przekazanie użytkownika do checkoutu z zachowaniem źródła sesji.

Checkout

Checkout obsługiwany jest przez Shopify Custom Pixel oraz osobny kontener GTM działający w sandboxie Shopify Web Pixels.

Zakres eventów checkoutowych:

  • begin_checkout,
  • add_shipping_info,
  • add_payment_info,
  • purchase.

Checkout custom pixel odpowiada za odczyt zgód z Shopify Customer Privacy API, ustawienie Consent Mode v2 w sandboxie checkoutu, załadowanie checkoutowego GTM, push eventów ecommerce do dataLayer, przekazanie purchase do GA4 i Google Ads, deduplikację eventów oraz poprawne przekazanie transaction_id, value, currency, tax, shipping, coupon i items.

Najważniejsze problemy techniczne i rozwiązania

1. Brak ecommerce eventów na storefront

Po audycie okazało się, że GTM był gotowy do odbierania eventów ecommerce, ale storefront nie pushował ich do dataLayer. W praktyce GA4 widziało page_view, scroll i user_engagement, ale brakowało view_item i add_to_cart.

Rozwiązaniem było wdrożenie własnego storefront bridge’a w theme Shopify, który pushuje eventy ecommerce w formacie zgodnym z GA4:

  • view_item na stronie produktu,
  • add_to_cart przy dodaniu produktu do koszyka,
  • view_cart na stronie koszyka.

Bridge został dodatkowo zabezpieczony przed duplikacją eventów, ponieważ Shopify może równocześnie odpalić submit formularza i AJAX /cart/add.

2. Rozjazd consentu między storefrontem a checkoutem

Na storefront zgody były poprawnie widoczne jako G111, natomiast checkout custom pixel nadal wysyłał eventy jako G100.

Oznaczało to, że Pandectes poprawnie ustawiał zgodę na storefront, ale checkoutowy custom pixel nieprawidłowo mapował status zgody odczytany z Shopify Customer Privacy API.

Pierwotnie pixel sprawdzał tylko konkretne pola:

  • analyticsProcessingAllowed,
  • marketingAllowed.

Po debugowaniu okazało się, że mapping musi być odporniejszy i obsługiwać różne nazwy pól oraz wartości logiczne/stringowe. Po poprawce checkout zaczął poprawnie wysyłać:

  • analytics_storage: granted,
  • ad_storage: granted,
  • ad_user_data: granted,
  • ad_personalization: granted.

Efekt: checkoutowe eventy zaczęły wychodzić jako G111, a nie G100.

3. Duży udział Unassigned w GA4

W GA4 pojawił się gwałtowny wzrost ruchu Unassigned. Analiza wykazała kilka potencjalnych źródeł:

  • opóźnienia w przetwarzaniu GA4,
  • cookieless pingi z Consent Mode Advanced,
  • brak UTM w kampaniach Meta/TikTok,
  • checkoutowe eventy wysyłane wcześniej z niepełnym consentem,
  • możliwe problemy z cross-domain i linkerem.

Wykonano test z własnym UTM:

utm_source=test&utm_medium=cpc&utm_campaign=test_attr

Test potwierdził, że po poprawkach sesja przechodziła przez storefront, koszyk, checkout i purchase z zachowaniem tego samego sid, co wskazywało, że mechanika linkera i sesji działa poprawnie.

Dodatkowo zidentyfikowano, że część Unassigned wynikała prawdopodobnie z braku poprawnego tagowania Meta/TikTok oraz opóźnionej klasyfikacji danych w GA4.

4. Ryzyko duplikacji purchase

W konfiguracji wyłączono Google & YouTube App jako źródło Google tracking, aby uniknąć podwójnego wysyłania purchase.

Finalnie purchase do GA4 i Google Ads wysyłany jest wyłącznie przez checkoutowy Custom Pixel + GTM.

Sprawdzono również sygnały zgód wymagane przez Consent Mode v2:

  • ad_storage,
  • analytics_storage,
  • ad_user_data,
  • ad_personalization.

Po poprawce checkoutowego pixela requesty zaczęły zawierać poprawny consent state, co powinno poprawić diagnostykę Google Ads i komunikaty typu “Ads measurement consent signals need attention”.

Wynik

Po wdrożeniu poprawek:

  • GA4 otrzymuje poprawne eventy storefrontowe: view_item, add_to_cart, view_cart,
  • checkout wysyła begin_checkout, add_shipping_info, add_payment_info, purchase,
  • eventy ecommerce zawierają poprawne items, value, currency, transaction_id,
  • add_to_cart nie dubluje się przy jednym kliknięciu,
  • checkoutowe eventy po akceptacji zgody wychodzą jako G111, nie G100,
  • purchase jest wysyłany do GA4 i Google Ads z pełnym consentem,
  • tracking został rozdzielony logicznie na storefront i checkout,
  • ograniczono ryzyko duplikowania konwersji,
  • przygotowano podstawę do dalszej optymalizacji UTM i atrybucji kampanii Meta/TikTok.

Finalna architektura

Storefront
Pandectes CMP
-> GTM Storefront
-> GA4 page_view / view_item / add_to_cart / view_cart
-> Google Ads base tag
-> Conversion Linker

Checkout
Shopify Custom Pixel
-> Shopify Customer Privacy API
-> Consent Mode v2 update
-> GTM Checkout
-> GA4 begin_checkout / add_shipping_info / add_payment_info / purchase
-> Google Ads purchase conversion

Technologie

  • Shopify
  • Shopify Checkout Extensibility / Checkout 2.0
  • Shopify Custom Pixel
  • Shopify Web Pixels API
  • Shopify Customer Privacy API
  • Google Tag Manager
  • Google Analytics 4
  • Google Ads
  • Consent Mode v2
  • Pandectes GDPR CMP
  • Meta Ads
  • TikTok Ads
  • JavaScript
  • Liquid
  • HAR / Network debugging
  • Google Tag Assistant
  • GA4 DebugView

Kluczowe wnioski

Największym wyzwaniem nie było samo wysłanie eventów do GA4, ale poprawne zsynchronizowanie trzech warstw:

  1. consentu,
  2. ecommerce dataLayer,
  3. atrybucji kampanii.

W Shopify Checkout 2.0 tracking checkoutu działa w izolowanym sandboxie, dlatego nie można zakładać, że zgoda i dataLayer ze storefrontu będą automatycznie dostępne w checkout. W praktyce wymaga to osobnego Custom Pixela, osobnego GTM-a i świadomego mapowania zgód z Shopify Customer Privacy API.

Projekt pokazał również, że wzrost Unassigned w GA4 nie zawsze oznacza jeden konkretny błąd. Może być sumą opóźnień GA4, Consent Mode Advanced, braku UTM-ów w kampaniach social, problemów z linkerem oraz błędnego consent mappingu w checkout.

WhatsApp