GA4 DataLayer / GTM
Modul DataLayer automaticky odosiela ecommerce udalosti GA4 do dátovej vrstvy (dataLayer). Podporuje Google Tag Manager (GTM) aj priamu integráciu gtag.js. Skripty sa načítavajú s atribútom defer pre minimálny vplyv na Web Vitals.
Zapnutie modulu
Section titled “Zapnutie modulu”Prejdite do WooCommerce > Polski > Moduly obchodu a zapnite GA4 DataLayer / GTM (ID modulu: datalayer).
Konfigurácia
Section titled “Konfigurácia”Nastavenia modulu sa ukladajú v možnosti polski_datalayer. Prejdite do WooCommerce > Polski > Moduly obchodu > GA4 DataLayer / GTM.
Dostupné nastavenia
Section titled “Dostupné nastavenia”| Nastavenie | Formát | Popis |
|---|---|---|
gtm_container_id | GTM-XXXXXXX | Identifikátor kontajnera Google Tag Manager |
ga4_measurement_id | G-XXXXXXXXXX | Identifikátor merania GA4 (pre režim gtag.js) |
use_sku_as_id | boolean | Použiť SKU namiesto ID produktu ako item_id |
Režimy prevádzky
Section titled “Režimy prevádzky”Google Tag Manager - zadajte gtm_container_id. Modul vloží snippet kontajnera GTM (skript v <head> a noscript v <body>). Ecommerce udalosti sa dostávajú do window.dataLayer.
gtag.js - zadajte ga4_measurement_id (bez GTM). Modul načíta skript gtag.js priamo od Google a odošle udalosti cez gtag('event', ...).
Môžete použiť oba režimy súčasne, vtedy sa udalosti dostávajú do dataLayer (GTM) aj priamo do GA4.
Ecommerce udalosti
Section titled “Ecommerce udalosti”Modul odosiela nasledujúce udalosti v súlade so špecifikáciou GA4 Enhanced Ecommerce:
view_item_list
Section titled “view_item_list”Zobrazenie zoznamu produktov (stránka kategórie, výsledky vyhľadávania, stránka obchodu).
dataLayer.push({ event: 'view_item_list', ecommerce: { item_list_id: 'category_tricka', item_list_name: 'Tričká', items: [ { item_id: 'SKU-001', item_name: 'Polo tričko', item_category: 'Tričká', price: 89.99, index: 0 } ] }});view_item
Section titled “view_item”Zobrazenie stránky jednotlivého produktu.
dataLayer.push({ event: 'view_item', ecommerce: { currency: 'PLN', value: 89.99, items: [ { item_id: 'SKU-001', item_name: 'Polo tričko', item_category: 'Tričká', price: 89.99, quantity: 1 } ] }});add_to_cart
Section titled “add_to_cart”Pridanie produktu do košíka. Udalosť sa odosiela cez AJAX po kliknutí na tlačidlo Pridať do košíka (na stránke produktu aj v zozname).
dataLayer.push({ event: 'add_to_cart', ecommerce: { currency: 'PLN', value: 89.99, items: [ { item_id: 'SKU-001', item_name: 'Polo tričko', item_category: 'Tričká', price: 89.99, quantity: 1 } ] }});remove_from_cart
Section titled “remove_from_cart”Odstránenie produktu z košíka.
dataLayer.push({ event: 'remove_from_cart', ecommerce: { currency: 'PLN', value: 89.99, items: [ { item_id: 'SKU-001', item_name: 'Polo tričko', price: 89.99, quantity: 1 } ] }});begin_checkout
Section titled “begin_checkout”Začatie procesu zadávania objednávky (vstup na stránku pokladne).
dataLayer.push({ event: 'begin_checkout', ecommerce: { currency: 'PLN', value: 179.98, items: [/* produkty z košíka */] }});purchase
Section titled “purchase”Dokončenie objednávky (stránka poďakovania). Udalosť sa odosiela len raz na objednávku (zabezpečené cez cookie).
dataLayer.push({ event: 'purchase', ecommerce: { transaction_id: '12345', currency: 'PLN', value: 179.98, tax: 33.55, shipping: 9.99, items: [/* produkty z objednávky */] }});Snippet kontajnera GTM
Section titled “Snippet kontajnera GTM”Po zadaní gtm_container_id modul automaticky vloží kód kontajnera GTM:
V sekcii <head> (hook wp_head, priorita 1):
<script defer>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.defer=true;j.src='https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);})(window,document,'script','dataLayer','GTM-XXXXXXX');</script>Po otvorení <body> (hook wp_body_open):
<noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-XXXXXXX"height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>Výkon a Web Vitals
Section titled “Výkon a Web Vitals”Modul je optimalizovaný pre Core Web Vitals:
- Defer - skripty GTM a gtag.js sa načítavajú s atribútom
defer, neblokujú vykresľovanie stránky - Inline dataLayer - ecommerce údaje sa vkladajú ako inline JSON, bez dodatočných HTTP dopytov
- Lazy events - udalosti
add_to_cartaremove_from_cartsú registrované cez delegáciu udalostí (jeden listener na dokumente) - No layout shift - GTM noscript snippet má nulové rozmery, nespôsobuje CLS
Identifikátor produktu
Section titled “Identifikátor produktu”Predvolene sa ako item_id používa ID produktu WooCommerce (post ID). Zapnite možnosť Použiť SKU ako ID (use_sku_as_id), aby sa namiesto toho odosielalo SKU produktu.
Keď produkt nemá priradené SKU, modul použije ID produktu ako fallback.
Údaje variantných produktov
Section titled “Údaje variantných produktov”Pre variabilné produkty (variable products) modul odosiela údaje vybraného variantu:
item_id- SKU variantu (alebo ID variantu)item_variant- názov vybraných atribútov (napr. “Červený / XL”)price- cena variantu
// Úprava údajov produktu pred odoslaním do dataLayeradd_filter('polski/datalayer/item_data', function (array $item_data, \WC_Product $product): array { $item_data['item_brand'] = $product->get_attribute('marka'); return $item_data;}, 10, 2);
// Vypnutie konkrétnej udalostiadd_filter('polski/datalayer/event_enabled', function (bool $enabled, string $event_name): bool { if ($event_name === 'view_item_list') { return false; } return $enabled;}, 10, 2);
// Úprava údajov udalosti purchaseadd_filter('polski/datalayer/purchase_data', function (array $data, \WC_Order $order): array { $data['ecommerce']['coupon'] = implode(',', $order->get_coupon_codes()); return $data;}, 10, 2);Ladenie
Section titled “Ladenie”Režim náhľadu GTM
Section titled “Režim náhľadu GTM”Použite Tag Assistant na náhľad udalostí v reálnom čase. Otvorte Tag Assistant, pripojte sa k doméne obchodu a prejdite celým nákupným procesom.
Konzola prehliadača
Section titled “Konzola prehliadača”Skontrolujte obsah dataLayer v konzole:
console.table(window.dataLayer);DebugView GA4
Section titled “DebugView GA4”V Google Analytics 4 prejdite do Admin > DebugView, aby ste videli udalosti v reálnom čase zo zariadenia so zapnutým režimom debug.
Riešenie problémov
Section titled “Riešenie problémov”Udalosť purchase sa neodosiela - skontrolujte, či stránka poďakovania nie je cachovaná. Vypnite cache pre endpoint order-received.
Chýbajú udalosti add_to_cart - uistite sa, že AJAX WooCommerce funguje správne. Skontrolujte konzolu prehliadača na chyby JavaScriptu.
Duplikáty udalostí purchase - modul po odoslaní udalosti nastaví cookie polski_datalayer_order_{id}. Ak je cookie blokované, udalosť sa môže zopakovať.
GTM snippet sa nenačítava - skontrolujte, či šablóna volá wp_head() a wp_body_open().
Nahlasovanie problémov: github.com/wppoland/polski/issues