+370 650 89811 Konsultacija

GTM data layer WooCommerce: sujungti su GA4 ir Google Ads

GTM data layer WooCommerce: įvykių struktūra, papildinys ar savas kodas, testavimas Preview režimu ir klaidos, gadinančios GA4 bei Google Ads duomenis.

Tomas Bagačiūnas 2026 m. spalio 14 d. 9 min. skaitymo Google Tag Manager

GTM data layer yra JavaScript objektas (window.dataLayer), į kurį WooCommerce parduotuvė sudeda struktūrizuotus e-komercijos duomenis: peržiūrėtą produktą, krepšelio turinį, užsakymo sumą ir prekių sąrašą. Google Tag Manager tuos duomenis perskaito ir vienu metu perduoda ir GA4, ir Google Ads konversijų žymoms. Tai vienintelis būdas, kad abi sistemos rodytų tą pačią pirkimų sumą, nes duomenys rašomi vieną kartą ir iš vieno šaltinio. Šiame straipsnyje surašiau, kokia turi būti įvykių struktūra, kada užtenka papildinio, o kada reikia savo kodo, kaip viską patikrinti Preview režime ir kokias klaidas randu dažniausiai.

Kaip veikia GTM data layer e-komercijoje

Grandinė yra trijų dalių. WooCommerce (per papildinį arba jūsų kodą) tam tikru momentu įvykdo dataLayer.push() su įvykio pavadinimu ir ecommerce objektu. GTM konteineris pagal įvykio pavadinimą paleidžia trigerį, o kintamieji ištraukia reikiamus laukus: sumą, valiutą, užsakymo numerį, prekių masyvą. Tada žymos tuos laukus išsiunčia: GA4 žyma į Analytics, Google Ads žyma į konversijų sekimą ir remarketingo sąrašus.

Svarbiausia idėja: data layer e-komercijoje yra vienas tiesos šaltinis. Jei GA4 papildinys ima duomenis iš vienos vietos, o Google Ads kodas įdėtas tiesiai į temos failą ir skaičiuoja sumą savaip, po mėnesio turėsite dvi skirtingas ataskaitas ir ginčą, kuri teisinga. Kai abi žymos skaito tą patį objektą, skirtumų nelieka. Pagrindus, kaip veikia konteineris, žymos ir trigeriai, aprašiau straipsnyje Google Tag Manager nuo nulio, čia į tai nebegrįšiu.

Kokia turi būti įvykio struktūra

GA4 e-komercija naudoja fiksuotą schemą. Jei laukas pavadintas kitaip, GA4 jo tiesiog nematys, o Google Ads žyma neturės iš kur paimti sumos. Pirkimo įvykis WooCommerce padėkos puslapyje turi atrodyti taip:

  • event: "purchase" – įvykio pavadinimas, pagal kurį GTM paleidžia trigerį;
  • ecommerce.transaction_id – WooCommerce užsakymo numeris, pagal jį GA4 ir Ads atmeta pasikartojimus;
  • ecommerce.value – užsakymo suma skaičiumi (ne tekstu su € ženklu);
  • ecommerce.currency – "EUR", be jos GA4 pajamų ataskaitos lieka tuščios;
  • ecommerce.tax ir ecommerce.shipping – PVM ir pristatymas atskirai;
  • ecommerce.items – masyvas, kuriame kiekviena prekė turi item_id, item_name, price, quantity ir item_category.

Prieš kiekvieną e-komercijos įvykį reikia įvykdyti dataLayer.push({ ecommerce: null }). Be šito GTM sujungia seną ir naują ecommerce objektą, ir į add_to_cart įvykį patenka prekės iš ankstesnio view_item. Tai viena iš dažniausių priežasčių, kodėl GA4 rodo daugiau prekių krepšelyje, nei iš tikrųjų buvo.

Toliau lentelėje – kurie laukai kuriam įrankiui būtini. Pilną GA4 įvykių sąrašą nuo view_item_list iki purchase aprašiau straipsnyje apie GA4 e-komercijos sekimą WooCommerce, todėl čia lieka tik tai, kas svarbu sujungimui.

ĮvykisLaukai, be kurių neveikiaKas naudoja
view_itemitems[0].item_id, price, currencyGA4 ataskaitos, Ads dinaminis remarketingas
add_to_cartitems, value, currencyGA4 piltuvėlis, Ads „krepšelio“ auditorija
begin_checkoutitems, value, currencyGA4 piltuvėlis, Ads paliktų krepšelių auditorija
purchasetransaction_id, value, currency, tax, shipping, itemsGA4 pajamos, Ads konversija ir pirkėjų auditorija

Ką Google Ads ima iš to paties data layer

Google Ads konversijų žymai GTM konteineryje reikia trijų kintamųjų: konversijos vertės, valiutos ir užsakymo numerio. Visus tris sukuriu kaip „Data Layer Variable“ tipo kintamuosius su keliais ecommerce.value, ecommerce.currency ir ecommerce.transaction_id. Tie patys kintamieji naudojami ir GA4 žymoje, todėl sumos sutampa iki cento.

Užsakymo numeris Ads žymoje yra ne formalumas. Kai pirkėjas po apmokėjimo perkrauna padėkos puslapį arba grįžta į jį iš el. laiško, purchase įvykis įvyksta antrą kartą. Google Ads, matydamas tą patį transaction_id, antrą konversiją atmeta. Be jo kiekvienas perkrovimas tampa nauja konversija, o kampanijos ROAS atrodo geriau, nei yra.

Dinaminiam remarketingui Ads žymai papildomai reikia prekių masyvo su id ir google_business_vertical: "retail". Čia svarbiausia, kad item_id data layer sutaptų su prekės ID Merchant Center feede. Jei feedas naudoja SKU, o data layer – WooCommerce produkto ID, Ads nesugebės sujungti peržiūrėtos prekės su skelbimo kortele. Kaip formuojamas feedas ir kurį identifikatorių rinktis, rašiau straipsnyje apie Merchant Center prekių feedą.

Papildinys ar savas kodas?

Google Tag Manager WooCommerce parduotuvėje galima sujungti dviem būdais. Pirmas – papildinys, kuris pats formuoja data layer pagal WooCommerce puslapius (pvz., GTM4WP). Antras – savo kodas per WooCommerce kablius: woocommerce_thankyou pirkimui, woocommerce_after_single_product produkto peržiūrai, wp_footer krepšeliui ir atsiskaitymui. Rinktis padeda ši lentelė.

KriterijusPapildinysSavas kodas
Diegimo laikas1–2 val.4–8 val. priklausomai nuo įvykių skaičiaus
Standartiniai GA4 įvykiaiYra iš kartoRašomi rankomis
Nestandartinė tema ar krepšelis (AJAX, mini krepšelis, blokinis checkout)Dalis įvykių gali nesuveiktiPritaikoma tiksliai
Papildomi laukai (marža, prekės ženklas, kliento tipas)RibotaBet kokie laukai
Priežiūra atnaujinant WooCommerceAtnaujina papildinio autoriusTikrinu pats po didesnių atnaujinimų
Kam tinkaStandartinė parduotuvė su įprasta temaIndividualus krepšelis, B2B kainos, kelios valiutos

Mano praktikoje daugumai parduotuvių pakanka papildinio, bet jį vis tiek reikia sukonfigūruoti: įjungti e-komercijos įvykius, pasirinkti, kurį identifikatorių siųsti kaip item_id, ir išjungti dubliuojančius įvykius, jei tema jau turi savo GA4 sekimą. Savo kodo imuosi tada, kai krepšelis perrašytas, naudojamas blokinis checkout su papildomais žingsniais arba reikia laukų, kurių papildinys nemoka suformuoti. Dažniausiai tai būna hibridas: papildinys formuoja standartinius įvykius, o vienas trumpas mano fragmentas prideda trūkstamus laukus prie purchase.

Kaip testuoti Preview režimu

GTM Preview (Tag Assistant) yra pagrindinis įrankis, be kurio data layer diegimo laikau nebaigtu. Eiga, kurią kartoju kiekvieną kartą:

  1. Įjungiu Preview konteineryje ir atidarau parduotuvę per Tag Assistant langą. Kairėje atsiranda visų puslapio įvykių sąrašas.
  2. Pereinu visą pirkimo kelią: kategorija, produktas, įdėjimas į krepšelį, krepšelis, atsiskaitymas, apmokėjimas testiniu būdu. Kiekviename žingsnyje sąraše turi atsirasti atitinkamas įvykis: view_item_list, view_item, add_to_cart, begin_checkout, purchase.
  3. Atidarau „Data Layer“ skirtuką prie kiekvieno įvykio ir tikrinu laukus: ar value yra skaičius, ar currency yra EUR, ar items ne tuščias, ar variacijos atveju item_id rodo variaciją, o ne tėvinį produktą.
  4. Tikrinu „Tags“ skirtuką: prie purchase turi suveikti ir GA4 žyma, ir Google Ads konversijų žyma, o „Variables“ skirtuke jų kintamieji turi rodyti tas pačias reikšmes.
  5. Perkraunu padėkos puslapį ir žiūriu, ar purchase nesuveikia antrą kartą. Jei suveikia, papildinyje įjungiu apsaugą nuo dubliavimo arba kode tikrinu užsakymo meta lauką.
  6. GA4 DebugView lange patikrinu, kad įvykiai atėjo su parametrais, o Google Ads konversijų skiltyje po kelių valandų – kad konversija užfiksuota su teisinga suma.

Testinį užsakymą po patikros atšaukiu arba trinu, kad nepatektų į WooCommerce ataskaitas. Jei parduotuvė naudoja Consent Mode, visą ciklą kartoju du kartus: sutikęs su slapukais ir atsisakęs. Antru atveju GA4 žyma turi veikti tik ribotu režimu, o Ads konversija – be slapukų, kaip aprašyta straipsnyje apie slapukų sutikimą pagal BDAR.

Dažnos klaidos, kurias randu audituodamas

  • Trigeris ant puslapio peržiūros, o ne ant įvykio. GA4 purchase žyma paleidžiama pagal URL /order-received/, bet suveikia anksčiau, nei papildinys spėja įvykdyti push(). Rezultatas: konversija be sumos. Trigeris turi būti „Custom Event“ su pavadinimu purchase.
  • Du sekimo šaltiniai. Tema ar atskiras GA4 papildinys siunčia savo įvykius, o GTM – savo. GA4 rodo dvigubai daugiau pirkimų. Kaip teisingai sutvarkyti vieną šaltinį, aprašiau straipsnyje apie GA4 konfigūraciją WordPress svetainėje.
  • Suma su PVM vienoje žymoje, be PVM kitoje. Sutarkite iš anksto: GA4 value paprastai yra bendra užsakymo suma, o tax ir shipping eina atskirai. Ads žymai perduokite tą patį value, ne kitą kintamąjį.
  • Nesutampantys prekių ID. Data layer siunčia WooCommerce ID, Merchant Center – SKU. Dinaminis remarketingas „veikia“, bet rodo ne tas prekes arba nerodo nieko.
  • Kintamasis ne „Version 2“. Senas Data Layer Variable formatas nemoka skaityti įdėtų objektų, todėl ecommerce.items grąžina undefined.
  • Tuščias items masyvas variacijoms. Dalis papildinių prie variacinio produkto neperduoda pasirinktos variacijos. Tikrinkite Preview lange būtent su variaciniu produktu.
  • Konteineris paskelbtas be versijos aprašymo. Po pusmečio niekas nebežino, kodėl kuri žyma pridėta. Kiekvienas „Publish“ – su trumpa pastaba, ką keitėte.

Bendra taisyklė: kiekviena iš šių klaidų matoma Preview režime per penkias minutes, bet ataskaitose išlenda tik po kelių savaičių, kai kampanijų biudžetas jau paskirstytas pagal klaidingus skaičius.

Kaip galiu padėti

GA4 ir Google Tag Manager diegimą WooCommerce parduotuvei darau kaip vieną darbą: konteineris, e-komercijos įvykiai, data layer, Google Ads konversijų žymos ir Consent Mode. Kaina – 140 €, papildomi įvykiai ar nestandartiniai laukai – 30 €/val. Į naujus vidutinio dydžio e-parduotuvės projektus šis sekimas jau įeina. Jei parduotuvė jau turi sekimą, bet GA4 ir Ads skaičiai nesutampa, pirmiausia pereinu Preview ciklą ir surašau, kas konkrečiai neveikia. Daugiau apie paslaugą – Google Tag Manager diegimas.

Dažniausiai užduodami klausimai

Kas yra GTM data layer paprastais žodžiais?

Tai JavaScript objektas puslapyje, į kurį svetainė sudeda struktūrizuotus duomenis: kokį produktą lankytojas peržiūrėjo, ką įsidėjo į krepšelį, už kiek nupirko. Google Tag Manager tuos duomenis perskaito ir perduoda GA4, Google Ads ar kitiems įrankiams. Svetainė duomenis rašo vieną kartą, o kas juos naudoja, sprendžiama GTM konteineryje.

Ar WooCommerce pati siunčia duomenis į data layer?

Ne. WooCommerce be papildinio dataLayer objekto nekuria. Reikia arba GTM papildinio WooCommerce parduotuvei, arba savo kodo, kuris per WooCommerce kablius suformuoja įvykius. Abu variantai veikia, skiriasi tik lankstumas ir kiek reikia prižiūrėti.

Ar Google Ads konversijoms reikia atskiro data layer?

Nereikia. Google Ads konversijos žyma ima tą patį purchase įvykį: sumą, valiutą ir užsakymo numerį. Svarbu tik, kad GTM kintamieji būtų nukreipti į tuos pačius laukus, kuriuos naudoja GA4, tada abi sistemos rodys tą pačią sumą.

Kodėl GA4 ir Google Ads rodo skirtingą pirkimų sumą?

Dažniausios priežastys trys: Google Ads žyma siunčia sumą su PVM ir pristatymu, o GA4 be jų; purchase įvykis dubliuojasi perkrovus padėkos puslapį ir tik viena sistema atmeta pasikartojantį užsakymo numerį; arba Consent Mode leidžia vienai žymai veikti be sutikimo, o kitai ne. Visas tris matote Preview režime.

Kaip patikrinti data layer be tikro pirkimo?

Įjunkite mokėjimo būdą „apmokėjimas gavus“ arba testinį mokėjimų režimą, atlikite užsakymą ir stebėkite GTM Preview langą. Purchase įvykis turi atsirasti vieną kartą padėkos puslapyje su teisinga suma ir prekių sąrašu. Testinį užsakymą po to atšaukite, kad nepatektų į ataskaitas.

Ar data layer reikia keisti, kai pridedu naują mokėjimo ar pristatymo būdą?

Paprastai ne. Data layer ima sumas iš užsakymo objekto, todėl naujas mokėjimo būdas automatiškai patenka į tuos pačius laukus. Pakeitimo reikia tik tada, kai keičiasi pats padėkos puslapis, pavyzdžiui, mokėjimų tarpininkas nukreipia į kitą URL ir purchase įvykis nebesuveikia.

Norite pradėti?

Paverskime jūsų idėjas realybe

Papasakokite apie projektą — pirmoji konsultacija nemokama. Atsakau per vieną darbo dieną.

  1. Atsakau per 1 d. d.El. paštu arba skambučiu — kaip jums patogiau
  2. 20 min pokalbisIšsiaiškiname tikslus, apimtį ir terminus
  3. Pasiūlymas raštuFiksuota kaina ir terminas, be įsipareigojimų
Be įsipareigojimų
☎ Skambinti Kaina Užklausa