Duplicitní transakce v Google Analytics – jak se jich zbavit
Duplicitní transakce označují stav, kdy jednu objednávku na eshopu uvidíš v Google Analytics několikrát.
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. 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é GA. Avšak v případě ukončené návštěvy (vyprší časový limit, půlnoc, návrat z jiného zdroje) již ne. 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 GTM, 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
1) 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.

2) Založ cookie první strany
Obdobně vytvoř proměnnou cookie.userTransactionIds typu Soubor cookie první strany. Název samotné cookie bude user_transaction_ids.

3) 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.
function() { return /(,|^){{dl.transactionId}}/.test({{cookie.userTransactionIds}}); }

4) 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.
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() + (2*365*24*60*60*1000)); 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=/'; } }; }

5) 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ý trigger 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
Trigger se tak spustí na děkovací stránce a jen pokud ID transakce již v cookie existuje.

6) 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 GA.
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í trigger Transakce již byla odeslána.

Testování
Jak už tomu při práci v Google Tag Manageru bývá, můžeš toho hodně pokazit. Proto rozhodně při realizaci tohoto postupu na zabránění duplicitním transakcí vše testuj. Doporučuji udělat následující:
- Založ paralelní měření návštěvnosti a transakcí do nově založené služby v GA. Služba musí mít identické nastavení jako ta hlavní a to především filtry, časové pásmo a seznam vyloučených odkazujících zdrojů.
- Nech pár dní sbírat data paralelně. Až když máš jistotu, že jsou naprosto identická (stejný počet návštěv, transakcí, duplicitních transakcí), tak pro testovací službu nastav výše popsaný postup.
- Za dalších pár dní zkontroluj, že v testovací službě se již duplicitní transakce neobjevují ale jinak se data shodují se službou hlavní.
- Poté uprav i posílání transakcí do hlavní služby.
- Když i poté vše vypadá dobře, můžeš posílání dat do testovací služby ukončit a smazat ji.
- Nezapomeň průběžně dávat do Google Analytics poznámky o probíhajícím testu. Díky paralelnímu měření do původní GA služby a i do testovací, kde jsou již duplicitní transakce vyloučené, budeš moci z rozdílu v počtu transakcí spočítat procento duplicitních transakcí. 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.”
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 na jiném zařízení. 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.