Jak správně navrhnout dataLayer pro e-commerce měření v GA4, Google Ads a Meta Ads
Dobrý dataLayer není seznam náhodných proměnných v GTM. Je to dohoda mezi webem, analytikou, reklamními systémy a vývojem.
Krátká odpověď
Dobrý dataLayer není seznam náhodných proměnných v GTM. Je to dohoda mezi webem, analytikou, reklamními systémy a vývojem. Pro e-commerce má nést stabilní obchodní data: ID produktu, cenu, množství, měnu, hodnotu, ID objednávky, položky a jednoznačný identifikátor události. Teprve z této vrstvy se mají mapovat události do GA4, Google Ads a Meta Ads.
Proč dataLayer řešit jako kontrakt, ne jako improvizaci
Největší chyba v e-commerce měření je spoléhat na to, že GTM „nějak vytáhne“ cenu z HTML, název produktu z nadpisu a ID objednávky z textu na děkovací stránce. Takové měření funguje do prvního redesignu, změny šablony nebo A/B testu. Správný dataLayer má být nezávislý na vzhledu stránky. Web do něj pošle strukturovaná data a GTM je pouze převezme, validuje a odešle dál.
V praxi to znamená, že vývojář nemá implementovat „GA4 kód“. Má implementovat datovou vrstvu s jasnými eventy. Marketing potom v GTM rozhodne, které platformy z daného eventu dostanou signál. Díky tomu lze jeden nákup poslat do GA4 jako purchase, do Google Ads jako nákupní konverzi a do Mety jako Purchase bez toho, aby každá platforma měla vlastní neudržovatelný snippet v šabloně.
Minimální návrh eventů
Pro běžný e-shop má smysl začít těmito eventy: view_item, add_to_cart, view_cart, begin_checkout, add_shipping_info, add_payment_info a purchase. U každého eventu by mělo být pole items. U nákupu navíc transaction_id nebo order_id, value, currency a ideálně také event_id pro deduplikaci serverových a browserových událostí.
Ne každý e-shop potřebuje všechny mezikroky hned. Pokud je rozpočet malý a měření se staví poprvé, důležitější je mít neprůstřelný purchase a add_to_cart než deset polofunkčních eventů. U větších účtů ale mezikroky pomáhají analyzovat funnel, tvořit remarketingová publika a ladit produktový feed.
Doporučená struktura payloadu
DataLayer by měl posílat obchodní realitu, ne marketingové názvy. Produktové ID má odpovídat identifikátoru ve feedu a interním systému. Cena má být číslo, ne text „1 290 Kč“. Měna má být ISO kód, například CZK nebo EUR. Hodnota objednávky má být definovaná jednotně: ideálně hodnota položek bez dopravy a daně, zatímco shipping a tax se posílají samostatně tam, kde to platforma podporuje.
Pozor na kategorie. item_category až item_category5 v GA4 mají smysl jen tehdy, když je kategorie konzistentní. Pokud se jednou posílá „Boty > Dámské“ a jindy „damske-boty“, reporty budou vypadat technicky správně, ale analyticky budou rozbité.
Příklad dataLayer eventu
Ukázka není univerzální šablona pro každý e-shop, ale dobrý směr pro zadání vývojáři:
window.dataLayer = window.dataLayer || [];
window.dataLayer.push({
event: 'ecommerce_purchase',
event_id: 'ord_12345_purchase',
ecommerce: {
transaction_id: '12345',
currency: 'CZK',
value: 2580.00,
shipping: 99.00,
tax: 447.00,
coupon: 'JARO10',
items: [
{
item_id: 'SKU-001',
item_name: 'Běžecké boty Alpha',
item_brand: 'Alpha',
item_category: 'Obuv',
item_category2: 'Běh',
price: 1290.00,
quantity: 2
}
]
}
});Co z toho mapovat do platforem
Do GA4 se mapují doporučené názvy eventů: ecommerce_purchase v dataLayeru se v GTM přepošle jako purchase. Do Google Ads se obvykle neposílá celý seznam položek, pokud nejde o specifickou implementaci s cart data, ale hodnota, měna a transaction_id jsou zásadní. Do Mety se posílá Purchase, hodnota, měna, content_ids, contents a event_id. Pokud používáte Pixel i Conversions API, event_id musí být shodné pro browserovou i serverovou verzi stejné události.
DataLayer by neměl obsahovat e-mail, telefon nebo jiné osobní údaje v čitelné podobě. Pokud se řeší enhanced conversions nebo advanced matching, pracuje se s tím řízeně, přes podporované mechanismy, hashing a s ohledem na souhlas a právní základ.
Kontrolní checklist před publikací
Každý event spusťte v GTM Preview a ověřte, že proměnné existují ve chvíli, kdy tag pálí. Ověřte, že purchase nevystřelí dvakrát po refreshi děkovací stránky. Ověřte, že transaction_id je unikátní. Ověřte, že item_id odpovídá feedu. Ověřte, že value a currency nejsou prázdné. Ověřte, že stejná objednávka má stejná čísla v e-shopu, GA4 a reklamních systémech s očekávanými rozdíly v atribuci.
Když se mění šablona e-shopu, dataLayer musí být součástí regresního testu. Jinak se může stát, že reklama běží dál, ale algoritmus se najednou učí z prázdných hodnot nebo duplicitních nákupů.
FAQ
Časté otázky
Další článek
GCLID FBCLID li_fat_id UTM parametry
GCLID, FBCLID, li_fat_id a UTM parametry: proč nejsou totéž a jak je neztratit
UTM parametry a click ID mají úplně jinou funkci. UTM je lidsky čitelný popis kampaně pro analytiku, reporting a sjednocení zdrojů.
Hledáte někoho, kdo to vezme za vás?
Chcete ověřit, jestli váš e-shop posílá do reklamních systémů správná data? Uděláme technický audit dataLayeru, GTM a konverzí.