Close

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.

Opakované transakce v Google Analytics
Opakované transakce v Google Analytics

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:

  1. po odeslání transakce se uloží cookie s číslem objednávky
  2. při každém odesílání transakce se nejprve kontroluje, zda již cookie s číslem objednávky neexistuje
  3. 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.

Nastavení dl.transactionId
Nastavení dl.transactionId

2) Založ cookie první strany

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

Nastavení cookie.userTransactionIds
Nastavení cookie.userTransactionIds

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}});
}
Nastavení js.isTransactionIdInCookie
Nastavení js.isTransactionIdInCookie

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=/';
    }
  };
}
Nastavení js.hitcallbackSetTransactionCookie
Nastavení js.hitcallbackSetTransactionCookie

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

  1. Page URL contains /objednavka-odeslana
  2. js.isTransactionIdInCookie equals true

Trigger se tak spustí na děkovací stránce a jen pokud ID transakce již v cookie existuje.

Nastavení triggeru Transakce již byla odeslána
Nastavení triggeru Transakce již byla odeslána

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.

Nastavení hitCallbacku
Nastavení hitCallbacku

U značky ještě přidej blokující trigger Transakce již byla odeslána.

Nastavení značky pro odeslání transakce
Nastavení značky pro odeslání transakce

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í:

  1. 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ů.
  2. 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.
  3. 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í.
  4. Poté uprav i posílání transakcí do hlavní služby.
  5. Když i poté vše vypadá dobře, můžeš posílání dat do testovací služby ukončit a smazat ji.
  6. 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.