Verze 2.0 mého článku o „Eliminace (not set) v Google analytics enhanced ecommerce impressions listu a dalších reportech“
Co získáte?
Proměnnou co říká, přes jaký prvek se uživatel dostal na danou stránku, včetně reloadů a rediretů externí zdrojů a další navigace.
Tuto hodnotu si pak můžete poslat jako custom dimenze nebo content groupingu, případně ji používat v Google analytics enhanced ecommerce detailu.
Příklad:
Uživatel se proklikne přes menu, v následující stránce bude tato informace. „header-menu“
Uživatel přijde z externí zdroje… „trafic-external“
Uživatel příjde z kampaně „trafic-campaign“
Uživatel si znova načte stránku „navigation-reload“
Oproti předchozí verzi funguje i když vytvoříte nové okno, takže se stále zachová cesta stránky.
Co budete potřebovat?
Xpath co jsem vytvořil v tomto článku
Track Browsing Behavior In Google Analytics – od Jethro Nederhof na Simové blogu, co vychází z mého trackování tabu.
Jak to funguje?
Když kliknete vytvoří se v localstorage proměnná co obsahuje cíl kliknutí, aktuální hodnotu URL a pojmenování kliknutí.
Když se načte okno, hledá tuto kombinaci v localstorage, pokud najde vyjme z dat tuto hodnotu a zapíše ji do lokální javascript proměnné.
Pak je tu interpretace další stavů vzniku okna a to je vzato z behaior trackingu.
Kliknutí v localstorage expirtují po 72 hodinách.
Implementace:
Odeslání dat do localstorage
Implementace pro linkclick.
Pravidla: cílová URL obsahuje http a obsahuje doménu daného webu.
<script> (function() { try{ if (window.Storage) { // if localstorage if (localStorage.prev_page_click_ls) var prev_page_click_ls = JSON.parse(localStorage.prev_page_click_ls); else var prev_page_click_ls = []; ItemToPush={ location: window.location.href, name: {{RegEx.FullQuerySelector.toContentType xpath}}, target: {{Click URL}}, created: new Date().getTime() } if (JSON.stringify(prev_page_click_ls).indexOf(JSON.stringify(ItemToPush))==-1 ) { prev_page_click_ls.splice(1, prev_page_click_ls.length - 19); //max limit of array prev_page_click_ls.push(ItemToPush); window.localStorage.setItem("prev_page_click_ls", JSON.stringify(prev_page_click_ls)); } }}catch (err) { window.dataLayer.push({ 'event': "error.html.linkclick.navigationtype2", //mark 'eventCategory': 'error', 'eventAction': 'error.html.linkclick.navigationtype2', 'eventLabel': err.message, 'eventValue': 0, 'eventNonInteraction': true });} })(); </script>
Vytáhnutí dat z localstorage
Je potřeba rozšířit kód od Jethroa, kousek od konce vložit kód.
payload = { tabCount: tabCount, redirectCount: redirectCount, navigationType: navigationType, newTab: newTab === true ? 'New' : 'Existing', tabId: tabId.replace(/_.+/, '') }; //<----- ZDE TO VLOŽIT // Set the data model keys directly so they can be used in the Page View tag window.google_tag_manager[{{Container ID}}].dataLayer.set('browsingBehavior', payload); // Also push to dataLayer window.dataLayer.push({ event: 'custom.navigation', browsingBehavior: payload }); } })(); </script>
Vložit tento kód:
// Behavior Click Tracking // by Marek Lecian v1.2 // var HOSTNAME="mareklecian.cz"; try { if (window.Storage) { if (localStorage.prev_page_click_ls) { prev_page_click_ls = JSON.parse(localStorage.prev_page_click_ls) // remove expired clicks for (var i = prev_page_click_ls.length; i--;) { if (prev_page_click_ls[i].created +expireTabs <= new Date().getTime()) {prev_page_click_ls.splice(i, 1)}} //find click name for (var i = prev_page_click_ls.length; i--;) { if ((prev_page_click_ls[i].target === window.location.href) && (prev_page_click_ls[i].location.split("#")[0] === document.referrer)) {var prev_page_click = prev_page_click_ls.splice(i, 1)[0].name;} } window.localStorage.setItem("prev_page_click_ls", JSON.stringify(prev_page_click_ls)) } } var BehaviorClickTracking; if ((window.location.href.indexOf("gclid")!=-1)||(window.location.href.indexOf("utm_medium")!=-1)){BehaviorClickTracking= "trafic-campaign";} else if (navigationType!=="NAVIGATE") {BehaviorClickTracking="navigation-"+navigationType.toLowerCase();} else if(document.referrer == "") {BehaviorClickTracking= "trafic-direct";} else if(document.referrer.indexOf(HOSTNAME) == -1) {BehaviorClickTracking = "trafic-external";} else if(typeof prev_page_click !== 'undefined') {BehaviorClickTracking =prev_page_click;} else if(!window.Storage){BehaviorClickTracking = "no-localStorage"; } else if(document.referrer.indexOf(HOSTNAME+"/wp-admin") != -1){BehaviorClickTracking = "trafic-internal-admin"; } //wp admin else if((redirectCount>=1)){BehaviorClickTracking = "navigation-redirect"; } else if(document.referrer.indexOf(HOSTNAME) != -1){BehaviorClickTracking = "trafic-internal"; } else{BehaviorClickTracking = "better-list-fail"} payload.navigationType2=BehaviorClickTracking; // Add data to dataLayer push payload }catch (err) { window.dataLayer.push({ 'event': "error.ga.eelist", 'eventCategory': 'error', 'eventAction': 'error.ga.behavior.tracking.html', 'eventLabel': err.message, 'eventValue': 0, 'eventNonInteraction': true }); } ///- Start behavioral click tracking
Zde pozor na nastavení domácí domény… „mareklecian.cz“ tu si změňte podle sebe.
Výsledky:
Za mě velmi dobré. Data jsem trochu zcenzuroval, tjs prázdné řádky.
Buy-to-detail Rate je dočtenost.
Unikátní nákupy jsou počet přečtení článků.
Kvantita je celkový počet přečtených slov.
Avg. QTY je průměrná délka článku v počtu slov.
Postřehy:
Z dat co je zajímavé … řádek 3, „související obsah“ používají uživatelé a docela hodně. 7,15%
(Not set) > 3,4% jsem nezměřil vůbec a vypadá to trochu na divné návštěvníky co neměli local storage, ale mohlo se jednat i o anonymní uživatele, protože tam někdy je localstorage bloknutá.
Navigation-back/forward – Což mě docela zaujalo… je že uživatelé používají navigační tlačítka, dopředu a zpět.
Navigation redirect > Odhalil jsem tak několik zbytečných přesměrování.
Trafic-internal > Zjistil, že máme pár starých landing pages o kterých nikdo nevěděl, ale chodí tam lidi 😀 .
Omezení:
Neumí to trackovát přes různé domény, protože se local storage nepřenáší.
V referralu není #, takže je ho potřeba odřezávat > přepsat si to SPA.
Lidi v anonymním režimu mohou mít bloknutou localstorage.