Internet Marketing i Oglašavanje

21/08/2014

Blog

4 komentar/a

AUTOR

Google Analytics specijalist s višegodišnjim iskustvom u analizi i savjetovanju projekata baziranih na Internetu u području turizma, trgovine, zdravlja i financija za EU, Rusiju, Ukrajinu, Kuvajt i SAD.

iFrame Cross domain tracking uz Google Tag Manager i Universal Analytics

Odmah na početku kratko pojašnjenje što je cross domain tracking i kada se koristi.

Cross domain tracking je metoda praćenja korisnika koji je posjetio dvije ili više domena unutar jednog Google Analytics propertya gdje ne postoji mogućnost dijeljenja vrijednosti unutar cookiea koji sadrži unikatni korisnički identifikator – clientID (cid).

Najčešći primjer Cross domain trackinga:
Korisnik dolazi na stranicu domenaA.com no plaćanje vrši na domenaB.com

Ako koristimo klasičnu implementaciju gdje koristimo isti kod na domenaA i domenaB rezultat će biti sve odvojena sessiona gdje će svaki session imati poseban traffic source – užas za izradu izvještaja. (česta pojava je da nam je izvor prihoda naš payment gateway ili booking sustav a to pod svaku cijenu želimo izbjeći)

Ako koristimo modificirani kod, cross domain tracking, imamo samo jedan session i čuvamo inicijalni izvor prometa a time je i kvaliteta izvještaja puno veća.

Jednostavnu verziju implementacije, bez iFramea, vrlo je jednostavno koristiti prema uputama na Lunametrics.com blogu.

iFrame i Booking sustavi

Veliki broj stranica iz turističke djelatnosti koristi baš taj način implementacije booking sustava – iFrameagencije, kampovi, hoteli i sl.  Za iFrame cross domain tracking postoji već par uputa kako bi se trebao raditi no većina ima manu da može spriječiti prikazivanje iFramea što za booking sustav nije prihvatljivo (trenutno najbolje upute Knewledge.com). Iz tog razloga smo i napravili poseban način praćenja baziran na postMessage metodi kako bi izbjegli nuspojave iako sve ispod IE7 nije podržano – eh taj IE.

Vodič GTM i UA iFrame Crossdomain tracking

1. Referral exclusion

Prvi korak je staviti domene koje su uključene u cross domain u referral exclusion list.  U primjeru ćemo koristiti domenaA.com i domenaB.com.

2. GTM container

Postavite GTM container na obje domene! Način kako se implementira GTM možete naći na uputama.

3. Postavke u Google Tag Manageru (GTM rules, Macros, Tags)

Rules
Pravila određuju kada će se neki Tag aktivirati – Tag bez rulea / pravila neće se nikada aktivirati.

1.   sve stranice domenaA
Ovo pravilo će aktivirati Tag samo u slučaju kada hostname stranice sadrži domenaA.

rule GTM domenaA

2.   sve stranice domenaB

Ovo pravilo će aktivirati Tag samo u slučaju kada hostname stranice sadrži domenaB.

rule GTM domenaB

Macro
Makro ovisno o upitu vraća vrijednost a u ovom slučaju koristimo za spremanje UA tracking IDa. Na taj način ne moramo uvijek kopirati vrijednost UA-XXXX-YY (ovu vrijednost naravno morate promijeniti u vaš property ID) već samo koristimo {{UA tracking ID}}.

macro UA tracking ID

Tags
Tagovi su u ovom slučaju naši Universal Analytics tagovi koji šalju podatke Google Analytics serveru. Obzirom da moramo raditi prilično ozbiljnu mofikaciju koda nije moguće koristiti template tagove već moramo napraviti Custom HTML tag. Za naš primjer potrebno je napraviti 2 taga gdje će se jedan aktivirati na domenaA a drugi na domenaB (zato smo i napravili dva pravila / rulea).

1. UA PV domenaA (Universal Analytics Pageview domenaA)

<script>
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){

(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');

ga('create', {{UA tracking ID}}, 'auto');
ga('require', 'displayfeatures');
ga('send', 'pageview');

// Upit o cookie informacijama primamo od domene u definirane u nastavku
var allowedOrigins = ['http://www.domenaB.com', 'https://www.domenaB.com'];
function xDomainHandler(event) {
event = event || window.event;
var origin = event.origin;
var found = false;

for (var i = 0; i < allowedOrigins.length; i++) {
if (allowedOrigins[i] == origin) {

found = true;
break;
}
}
if (!found) return;

if (event.data != 'send_client_id') return;
ga(function(tracker) {
tracker.get('clientId');

var data = {cid: tracker.get('clientId')};
event.source.postMessage(JSON.stringify(data), origin);
});
}
if (window.addEventListener) {
window.addEventListener('message', xDomainHandler, false);
} else if (window.attachEvent) {
window.attachEvent('onmessage', xDomainHandler);
}
</script>

Unutar Taga jedino što se treba promjeniti je www.domenaB.com:

// Upit o cookie informacijama primamo od domene u definirane u nastavku

var allowedOrigins = ['http://www.domenaB.com', 'https://www.domenaB.com'];

Na ovaj tag potrebno je primjeniti pravilo ‘sve stranice domenaA’

2. UA PV domenaB (Universal Analytics Pageview domenaB) – Ovaj tag se aktivira samo u iFrameu

<script>
// Označavamo na kojoj domeni se nalazi stranica koja je učitala iFrame

var topOrigin = 'http://www.domenaA.com';
function xDomainHandler(event) {
event = event || window.event;
var origin = event.origin;
if (topOrigin != '*' && topOrigin != event.origin) {
return;
}
try {
var data = JSON.parse(event.data);
} catch (e) {
return;
}
if (data.cid) {
sendHit(data.cid);

}
}

if (window.addEventListener) {
window.addEventListener('message', xDomainHandler, false);
} else if (window.attachEvent) {
window.attachEvent('onmessage', xDomainHandler);
}

var alreadySent = false;
function sendHit(cid) {
if (alreadySent) return;
alreadySent = true;

var params = {};
if (cid) params['clientId'] = cid;
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');

ga('create', {{UA tracking ID}}, 'auto', params);
ga('require', 'displayfeatures');
ga('send', 'pageview');
}
if (!window.postMessage) {

sendHit();
} else {
top.postMessage('send_client_id', topOrigin);
setTimeout(sendHit, 100);
}

</script>

Morate promijeniti dio koda ‘www.domenaA.com’ kako bi sve funkcioniralo:

// Označavamo na kojoj domeni se nalazi stranica koja je učitala iFrame
var topOrigin = 'http://www.domenaA.com';

4. Publish

Nakon što ste sve postavili obavezno napravite publish spremnika (container).

GTM iframe cross domain final

 

Komentirajte

Your email address will not be published. Required fields are marked *

*

Provjera korisnika *



  1. Postoji li rješenje ako domenaB odbija ubaciti google skripte, a pretpostavimo da se učitava preko iframea? Sam iframe nije jedina opcija, može se ići i na linkanje.



    • Pozdrav Marko,

      ako nemaš mogućnost stavljanja koda na domenuB onda nema smisla ni postavljati crossdomain na bilo koji način.

Newsletter

Primajte svježe internet marketing vijesti u Vaš e-mail sandučić.

Želim se prijaviti!

Escape d.o.o. HR-31000 Osijek - Krapinsko naselje 18 - T +385 31 209 951 - F +385 31 209 952 - kontakt@escapestudio.hr - S escapestudio