Wielu właścicieli sklepów WooCommerce uruchamia kampanie reklamowe na Facebooku i Instagramie, opierając się wyłącznie na danych z panelu Meta Ads Manager. Problem polega na tym, że bez prawidłowo wdrożonej analityki po stronie sklepu, Meta nie wie, co dzieje się po kliknięciu w reklamę. Nie wie, kto oglądał produkt, kto dodał go do koszyka, kto rozpoczął checkout, a kto faktycznie kupił.
Rezultat? Algorytm reklamowy nie ma danych do optymalizacji. ROAS spada. Budżet się przepala. Kampanie targetują osoby, które nigdy nie były blisko zakupu, zamiast tych, którzy porzucili koszyk z konkretnymi produktami.
Dokładnie w takiej sytuacji znalazł się nasz klient – hurtownia narzędzi kosmetycznych działająca na WooCommerce z customowym motywem potomnym opartym o Elementor Hello Theme. Sklep z ponad 200 produktami, aktywną sprzedażą, ale zerową infrastrukturą analityczną po stronie serwisu. Żadnego piksela, żadnego GTM, żadnego feedu produktów.
Cel projektu
Specyfikacja techniczna od klienta była precyzyjna i ambitna:
- Google Tag Manager – jako nadrzędny kontener dla wszystkich tagów.
- Google Analytics 4 – pełny e-commerce tracking przez GTM.
- DataLayer – przesyłanie standardowych parametrów e-commerce z poziomu witryny.
- Meta Pixel (browser-side) – implementacja przez GTM z czterema zdarzeniami zakupowymi.
- Meta Conversions API (server-side) – stabilny tracking omijający blokady przeglądarek i ograniczenia iOS 14+.
- Deduplikacja zdarzeń – z wykorzystaniem unikalnego event_id.
- Feed produktów CSV – do remarketingu dynamicznego.
Kluczowe założenie projektowe: jak najmniej wtyczek, jak najwięcej lekkiego kodu. Sklep WooCommerce potrafi zwolnić do granic użyteczności po instalacji kilku wtyczek do trackingu. Dlatego cała warstwa analityczna została zaimplementowana jako czysty PHP w functions.php motywu potomnego.
Architektura rozwiązania – kod zamiast wtyczek
Standardowe podejście w branży to instalacja 3–4 wtyczek: jedna do GTM, jedna do piksela Facebooka, jedna do GA4, jedna do feedu. Każda z nich ładuje własne skrypty, dodaje zapytania do bazy danych i spowalnia frontend.
Nasze podejście było inne. Cała logika analityczna mieści się w jednym pliku – functions.php motywu potomnego – i składa się z pięciu warstw, które współpracują ze sobą przez wspólny DataLayer.
Warstwa 1: Google Tag Manager jako nadrzędny kontener
GTM został zainstalowany bezpośrednio w functions.php za pomocą hooków wp_head (skrypt) i wp_body_open (noscript). Żadna wtyczka nie była potrzebna – dwie funkcje PHP, łącznie 12 linii kodu.
Wewnątrz kontenera GTM skonfigurowano:
- 1 tag bazowy Google Tag (GA4 config),
- 1 tag bazowy Meta Pixel (base code),
- 4 tagi zdarzeń GA4 (view_item, add_to_cart, begin_checkout, purchase),
- 4 tagi zdarzeń Meta Pixel (ViewContent, AddToCart, InitiateCheckout, Purchase),
- 4 wyzwalacze custom event,
- 9 zmiennych DataLayer.
Łącznie 10 tagów w jednym kontenerze – zarówno Meta jak i GA4 odpalane z tego samego źródła danych.
Warstwa 2: DataLayer – wspólne źródło prawdy dla Meta i GA4
To serce całego wdrożenia. Zamiast budować dwa oddzielne systemy trackingu, zaprojektowaliśmy jeden DataLayer push, który wysyła dane w formatach zrozumiałych zarówno dla Meta Pixel jak i GA4.
Każdy push do dataLayer zawiera:
content_ids,content_name,content_category,content_type,value,currency– dla Meta Pixel,items(tablica obiektów z item_id, item_name, item_category, price, quantity) – dla GA4 e-commerce,event_id– unikalny identyfikator do deduplikacji z CAPI,transaction_id– dla zdarzenia purchase.
DataLayer reaguje na cztery zdarzenia WooCommerce: wyświetlenie produktu, dodanie do koszyka (zarówno AJAX jak i formularz), wejście na stronę checkout i potwierdzenie zamówienia.
Warstwa 3: Meta Pixel z pełnymi zdarzeniami e-commerce
Meta Pixel zainstalowano przez GTM jako tag Custom HTML z priorytetem 100 (żeby ładował się przed tagami zdarzeń). Każde zdarzenie przekazuje pełen zestaw parametrów wymaganych przez specyfikację dynamicznego remarketingu:
Poprawność wdrożenia weryfikowano rozszerzeniem Meta Pixel Helper na każdym kroku ścieżki zakupowej.
Warstwa 4: Google Analytics 4 z tablicą items
GA4 wymaga danych w innym formacie niż Meta – zamiast flat content_ids potrzebuje zagnieżdżonej tablicy items. Dzięki temu, że DataLayer zawiera oba formaty w jednym pushu, tagi GA4 w GTM czytają te same dane co tagi Meta Pixel, ale każdy wyciąga swoje pola.
Zdarzenia GA4 e-commerce: view_item, add_to_cart, begin_checkout, purchase – każde z parametrami items, value, currency i transaction_id (przy purchase).
Warstwa 5: Conversions API – ominięcie blokad przeglądarek
To warstwa, która odróżnia profesjonalne wdrożenie od amatorskiego. Meta Pixel działa w przeglądarce – co oznacza, że adbockery, tryb incognito, polityka prywatności iOS 14+ i blokery cookies mogą go całkowicie wyciąć. Meta szacuje, że bez CAPI tracisz 30–40% danych o konwersjach.
Conversions API wysyła zdarzenia bezpośrednio z serwera PHP do Graph API Meta, omijając przeglądarkę. Implementacja w functions.php:


