Jak se zbavit duplicitních transakcí v Google Analytics
Duplicitní transakce označují stav, kdy jednu objednávku na eshopu uvidíš v Google Analytics několikrát.
Tato situace občas nastává v Universal Analytics (Google Analytics 3). Novější GA4 si již umí s duplicitními transakcemi poradit.
Zda se tvého eshopu tento problém týká zjistíš nejsnáze tak, že si do svého účtu přidáš vlastní přehled pro duplicitní transakce. Klikni na tento odkaz a vyber si své Google Analytics.
Pokud v přehledu uvidíš u jednotlivých ID transakce ve sloupci Transakce čísla vyšší než 1, máš problém.
Některé transakce se ti totiž započítávají opakovaně a to navyšuje jak reportovaný počet transakcí, tak tržby.
V rámci jedné návštěvy dokáží duplicitní transakce odhalit a eliminovat samotné Google Analytics. Avšak v případě ukončené návštěvy již ne (více v článku o definici návštěvy). Proto musíš přijít na řadu ty a tento problém řešit.
Samotné řešení je však technicky náročnější a proto pokud je podíl duplicitních transakcí minimální, doporučuji ti se s tím radši smířit.
Pokud máš ale rád přesnost, mám pro tebe návod.
Jak se zbavit duplicitních transakcí v Google Analytics
Zcela ideální je zadat vývojáři eshopu, aby celou záležitost s několikanásobnými objednávkami vyřešil on.
Stačí totiž, aby děkovací stránka, která obsahuje konverzní kódy, nešla zobrazit vícekrát. Kreativitě se meze nekladou a tak je možné si informaci o odeslaných konverzních kódech uložit do databáze a při opakovém načtení stránky již konverzní kódy neposílat. Nebo ihned po odeslání konverzních kódů uživatele přesměrovat na jinou stránku.
My si ale dnes ukážeme postup pracující s cookie a Google Tag Manageru, který mi ve většině případů problém s opakovaným odesláním transakce vyřeší. V krátkosti spočívá v:
- po odeslání transakce se uloží cookie s číslem objednávky,
- při každém odesílání transakce se nejprve kontroluje, zda již cookie s číslem objednávky neexistuje,
- pokud cookie s číslem objednávky již existuje, transakce se znova nepošle.
Nastavení krok po kroku
Jak už tomu při práci v Google Tag Manageru bývá, můžeš toho hodně pokazit. Proto tento postup na zabránění duplicitním transakcí řeší celý proces včetně testování.
1) Založ paralelní měření návštěvnosti a transakcí
Vytvoř si v Google Analytics novou službu pro testování. Služba musí mít identické nastavení jako ta hlavní a to především nastavení služby, limit relace, limit kampaně a seznam vyloučených odkazujících zdrojů. U výběru dat pak shodně nastav všechna nastavení výběru dat, filtry a aktivuj elektronický obchod,
V GTM vytvoř paralelní měření návštěvnosti a transakcí do nově založené služby v GA. Bude stačit:
- nakopírovat proměnnou UA settings a změnit v ní UA id na službu, kterou jsi před chvíli založil,
- vytvořit kopii značky UA – Pageview a změnit v ní UA settings na testovací,
- vytvořit kopii značky UA – Transaction a také změnit UA settings.
Ostatní značky jako různé posílání eventů atp. kopírovat nemusíš. Nově vytvořené značky a proměnné jasně označ v názvu slovem TEST řešení duplicitních transakcí.
2) Ověř shodu dat
Po 5-7 dnech zkontroluj, že v původní službě i v tvé testovací máš nasbírané zcela stejné údaje. Sedět by měli především uživatelé, návštěvy, transakce a počty duplicitních transakcí.
Pokud se čísla shodují, můžeš pokračovat.
3) Vytvoř dataLayer proměnnou transactionId
Ze všeho nejdříve si v Google Tag Manageru založ proměnnou s názvem dl.transactionId. Ta bude odkazovat na proměnnou v dataLayeru, ve které se skrývá ID objednávky na stránce s poděkováním za nákup.
Možná už takovou proměnnou v GTM máš, jen je jinak pojmenovaná. V tom případě použij ji a jen ve všech následujících kódech uprav odkaz na tuto proměnnou.
4) Založ cookie první strany
Obdobně vytvoř proměnnou cookie.userTransactionIds typu Soubor cookie první strany. Název samotné cookie bude user_transaction_ids.
5) Vytvoř vlastní JavaScript kód pro kontrolu cookie
Tato funkce ti vrátí true, pokud na dané stránce již existuje cookie a obsahuje ID transakce, kterou chceš odeslat. To využiješ tak, že pokud tato funce vrátí true, zablokuješ další odeslání transakce.
Vytvoř novou proměnnou, pojmenuj ji js.isTransactionIdInCookie, typ vyber Custom JavaScript a vlož do ní kód.
1 2 3 |
function() { return /(,|^){{dl.transactionId}}/.test({{cookie.userTransactionIds}}); } |
Pokud jsi proměnné v předchozích krocích pojmenoval jinak, tak uprav jejich název v kódu.
6) Založ vlastní JavaScript kód pro nastavení cookie
Poslední proměnnou je JavaScript s názvem js.hitcallbackSetTransactionCookie, který po úspěšném odeslání transakce vytvoří cookie s ID transakce.
Navíc budeš předpokládat, že uživatel může nakoupit na eshopu vícekrát a tak ID každé další transakce přidáš do cookie místo toho, abys zakládal cookie novou nebo ji přepsal.
Vytvoř proměnnou js.hitcallbackSetTransactionCookie typu Custom JavaScript a vlož do ní kód.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
function() { return function() { var d, expires; var cvalue = ''; // Run the code only if a transaction is found in the data layer if ({{dl.transactionId}}) { d = new Date(); d.setTime(d.getTime() + 63072000000); expires = 'expires='+d.toUTCString(); // If the cookie already exists, append not overwrite if ({{cookie.userTransactionIds}}) { cvalue = {{cookie.userTransactionIds}} + ','; } document.cookie = 'user_transaction_ids=' + cvalue + {{dl.transactionId}} + '; ' + expires + '; path=/'; } }; } |
Názvy proměnných v kódu uprav, pokud jsi je pojmenoval jinak.
7) Vytvoř blokující pravidlo
Protože chceš zabránit odeslání transakce v případě, že cookie s ID transakce již existuje, vytvoř si blokující pravidlo.
Předpokládej, že stránka s poděkováním za objednávku se nachází na adrese /objednavka-odeslana. Vytvoř nové pravidlo spouštění s názvem Transakce již byla odeslána, typem Zobrazení stránky a přidej dvě podmínky
- Page URL contains /objednavka-odeslana
- js.isTransactionIdInCookie equals true
Pravidlo spouštění se tak aktivuje na děkovací stránce a jen pokud ID transakce již v cookie existuje.
8) Uprav spouštění značky s odesláním transakce
Nyní máš vše připraveno a již stačí pouze změnit podmínky pro spouštění značky odesílající transakci do Google Analytics. Pamatuj, že jako první vše nastavuješ jen u testovací značky.
Nejprve u značky v Další nastavení přidej nové pole k nastavení. Do pole hitCallback vyplň hodnotou {{js.hitcallbackSetTransactionCookie}}.
Čili po úspěšném odeslání transakce se spustí funkce js.hitcallbackSetTransactionCookie a ta vytvoří cookie.
U značky ještě přidej blokující pravidlo spouštění Transakce již byla odeslána.
9) Zkontroluj, že v testovací službě se duplicity neobjevují
Počkej dalších pár dní a zkontroluj, že v testovací službě se již duplicitní transakce neobjevují, ale jinak se počty návštěv a uživatelů shodují se službou hlavní.
Pokud tomu tak je, tak uprav i posílání transakcí do hlavní služby (krok 8).
Spočítej si, o kolik se liší počet transakcí v původní a testovací službě. Toto číslo udává, o kolik předtím Google Analytics transakce kvůli duplicitám nadhodnocovaly.
Do GA je pak o tom vhodné dát poznámku. Něco jako „Implementováno řešení duplicitních transakcí. Dle testu lze očekávat 11% propad v počtu transakcí a tržeb od dnešního dne.“
10) Finální ověření a ukončení testu
Když za několik dní vše vypadá dobře a v hlavní službě se již duplicitní transakce neobjevují. Můžeš test ukončit. To spočívá v:
- smazání testovací značky UA – Transaction,
- smazání testovací značky UA – Pageview,
- smazání testovací proměnné UA settings,
- smazání testovací služby v Analytics.
Závěr
Ze zkušenosti mohu říci, že i při správné implementaci se ještě tu a tam duplicitní transakce objeví. Toto řešení totiž nepostihne situaci, kdy si děkovací stránku někdo otevře v jiném prohlížeči nebo smaže cookies. Avšak duplikovanost transakcí se výrazně sníží na nevýznamné hodnoty.
Celý tento postup na eliminaci duplicitních transakcí vychází ze článku #GTMTips: Prevent Repeat Transactions. Díky za inspiraci, Simo.
Pokud ti něco nefunguje či máš otázku, dej mi vědět. Rád poradím.
Mohlo by tě zajímat
Nebo se pro inspiraci podívej do rozcestníku článků.