Cross domain tracking voor Google Analytics

Print

Crossdomain tracking voor www.werkenbijKLANT.nl

Dit artikel beschrijft hoe er binnen een werkenbij omgeving gehandeld moet worden om analytics informatie correct en zonder sessieverlies of verdubbeling over te dragen aan een Connexys sollicitatie formulier. Indien dit niet correct wordt uitgevoerd zal de tracking informatie onbetrouwbaar binnenkomen in Google Analytics. In dit artikel wordt de meting middels Google Analytics beschreven. Voor andere meetsystemen zoals Sitecatalyst of Universal Analytics gelden andere regels. Om crossdomain tracking goed te krijgen zouden de volgende aanpassingen gedaan moeten worden:

  1. Tracking code instellen op www.werkenbijKLANT.nl
  2. Tracking cross iFrame op www.werkenbijKLANT.nl
  3. Tracking code instellen op de sollicitatie pagina binnen connexys
  4. Tracking code instellen op de bedankt pagina binnen connexys

Tracking code instellen op www.werkenbijKLANT.nl

De volgende code moet ingesteld worden op www.werkenbijKLANT.nl:

<script type="text/javascript">
 
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'ACCOUNTCODE']);
_gaq.push(['_setDomainName', 'DOMAIN']);
_gaq.push(['_setAllowLinker', true]);
_gaq.push(['_trackPageview']);
 
(function() {
    var ga = document.createElement('script');
    ga.type =
        'text/javascript';
    ga.async = true;
    ga.src = ('https:' == document.location.protocol ? 'https://ssl' :
        'http://www') + '.google-analytics.com/ga.js';
    var s = document.getElementsByTagName('script')[0];
    s.parentNode.insertBefore(ga, s);
})();
</script>

Tracking cross iFrame op www.werkenbijKLANT.nl

De volgende code moet worden ingesteld op de pagina waar het formulier wordt aangeroepen:

<script type="text/javascript">
_gaq.push(function() {
var pageTracker = _gat._getTrackerByName();
var iframe = document.getElementById('job-apply-iframe');
iframe.src = pageTracker._getLinkerUrl(iframe.src);
});
 
</script>

Waarbij iframe.src in de functie ook vervangen kan worden door een URL naar de sollicitatie pagina, zoals https://www.connexys.nl/KLANTsite/page.html?p_sfw_id=309&adv_adv_id=263&adv_pub_id=1&adv_taal=1&p_taal=1 .

Tracking code instellen op de sollicitatie pagina binnen Connexys

Deze code moet ingesteld worden op de specifieke sollicitatie pagina van de vacature van KLANT.

<script type="text/javascript">
    var _gaq = _gaq || [];
    _gaq.push(['_setAccount', 'ACCOUNTCODE']);
    _gaq.push(['_setDomainName', 'connexys.nl/schemanaam']);
    _gaq.push(['_setAllowLinker', true]);
    _gaq.push(['_trackPageview']);
 
    (function() {
        var ga = document.createElement('script');
        ga.type =
            'text/javascript';
        ga.async = true;
        ga.src = ('https:' == document.location.protocol ? 'https://ssl' :
            'http://www') + '.google-analytics.com/ga.js';
        var s = document.getElementsByTagName('script')[0];
        s.parentNode.insertBefore(ga, s);
    })();
</script>

Tracking code instellen op de bedankt pagina binnen Connexys

Deze code moet ingesteld worden op de specifieke bedankt pagina van de vacature van KLANT.

<script type="text/javascript">
    var _gaq = _gaq || [];
 
    _gaq.push(['_setAccount', 'ACCOUNTCODE']);
    _gaq.push(['_setDomainName', 'connexys.nl/']);
    _gaq.push(['_setAllowLinker', true]);
    _gaq.push(['_trackPageview']);
 
    (function() {
        var ga = document.createElement('script');
        ga.type =
            'text/javascript';
        ga.async = true;
        ga.src = ('https:' == document.location.protocol ? 'https://ssl' :
            'http://www') + '.google-analytics.com/ga.js';
        var s = document.getElementsByTagName('script')[0];
        s.parentNode.insertBefore(ga, s);
    })();
</script>

Verschil tussen Google Analytics en Universal Analytics

Naam

Google Analytics

Universal Analytics

Omschrijving

Source

utmcsr

utm_source

Referral link (waar komt de bezoeker vandaan)

Campaign

utmccn

utrm_campaign

Campagne-gegevens (evt. gevuld met AdSense-data)

Medium

utmcmd

utm_medium

Manier van doorverwijzing vanaf de bron (LinkedIn, Google, Twitter)

Terms

utmctr

utm_term

De zoekwoorden of termen die meegegeven worden.

Content

utmcct

utm_content

De extra data (meestal leeg)

Er is een wezenlijk verschil te herkennen tussen Google Analytics en Universal Analytics. 

Universal Analytics is meer geavanceerd en kan meer historie geven over bezoekers. Universal Analytics houdt per individuele bezoeker een visitor_id bij. Deze id zou de bezoeker ook kunnen onderscheiden over verschillende devices heen. Hiermee wordt dus duidelijk wie eerst mobiel bezocht en daarna middels een laptop.

Daarnaast worden niet alleen verschillende scripts en bibliotheken gebruikt, maar de link moet ook anders opgebouwd worden. In het geval van een "normale" Google Analytics verwerking is een link als onderstaande voldoende (tracking-ID's en andere standaard-argumenten weggelaten).

__utmz=41498916.1415183051.1.1.utmcsr=google|utmccn=(organic)|utmcmd=organic

Uitleg van deze data: "De gebruiker met ID <ID> komt binnen vanaf een organische Google-link zonder gekoppelde campagne." Deze data alleen is voor Universal Analytics niet genoeg. Om Universal Analytics goed te laten werken moet er meer meegegeven worden dan alleen de standaard Google Analytics-argumenten. Onderstaande correcte argumenten-lijst is voor Universal Analytics van toepassing (opnieuw de overige parameters even weggelaten):

__utmz=74519697.1415183395.1.1.utmcsr=google|utmccn=(organic)|utmcmd=organic|utmctr=(not%20provided)&utm_source=google&utm_medium=organic&utm_campaign=(organic)

Uitleg van deze data: "De gebruiker met ID <ID> komt binnen vanaf een organische Google-link zonder gekoppelde campagne, en deze site maakt gebruik van Universal Analytics om Analytics bij te houden." Als de site gebruik maakt van Universal Analytics moeten dus beide parameter-types worden meegegeven, anders werkt de tracking niet zoals het hoort.

Zoektermen tracken
Google Analytics levert de mogelijkheid om zoektermen te tracken. Echter, de zoektermen vanaf hun eigen zoekmachine worden daarin niet meegenomen. Dit heeft te maken met beveiliging die Google kortgeleden introduceerde voor hun zoekgebruikers. Zoals in deze blogpost (https://blog.kissmetrics.com/unlock-keyword-not-provided/) wordt uitgelegd worden Google-zoektermen (utmctr of utm_term) niet meegegeven op de volgende momenten:

  • Als de gebruiker is ingelogd met zijn Google-account (account policy). De gebruiker kan nu alleen zoeken via HTTPS.
  • Als de niet-ingelogde gebruiker via de HTTPS-variant van Google zoekt. Deze variant wordt tegenwoordig standaard aangeboden, en kan alleen worden omzeild door zelf geforceerd naar de HTTP-variant te gaan.

Bijna geen enkele gebruiker zoekt dus via Google zonder HTTPS.

Combinatie met SSL
Sites die volgens de HTTP-specificatie SSL toestaan beschermen alle data-verzoeken die van en naar de server lopen. Voordat Google gebruik maakte van HTTPS werd de complete zoekterm-URL meegegeven aan de aan te roepen pagina. Deze vormde de basis van de Analytics-functionaliteit rond zoekterm-tracking. Sinds Google via HTTPS alleen de verwijzende host meegeeft (bijv. http://www.google.com/, meer niet) hebben ze hun eigen keyword-tracking aangepast. De "(not provided)" zoekterm kan in dit geval niet goed omzeild worden, maar in de blog van hierboven wordt wel aangegeven hoe het via Google Webmaster Tools gecontroleerd worden.

Code voor het implementeren van deze functionaliteit voor webbouwers
NB.
In verband met de cookie-wetgeving dient de bezoeker geïnformeerd te worden over het gebruik van tracking-cookies.

1. Het inladen van de pagina (PHP):
Bij het inladen van de pagina dient onderstaande code te worden gehanteerd. Hier worden de utm_ argumenten die expliciet aan de pagina worden meegegeven direct opgeslagen als cookie voor later gebruik. Ook is jQuery vereist.

foreach($_GET as $k => $g){
	if(strpos($k, "utm_") !== false){
		setcookie($k, $g);
	}
}

2. Javascript moet worden geplaatst in de <head>:
Onderstaande code introduceert de standaard Google Analytics bibliotheek en koppelt een tracking-ID aan de huidige sessie.

 
<script src="https://ssl.google-analytics.com/ga.js" type="text/javascript"></script>
<script>
var currentLink = window.location.href;
var _gaq = _gaq || [];
var pageTracker = _gat._getTrackerByName();
pageTracker._getLinkerUrl(currentLink);
</script>
 

3. Iframe cross-domain tracking dient meegegeven te worden (onderin de <body> plaatsen):

$('iframe').each(function() {
	var iframe_link = $(this).attr("src");
	var _gaq = _gaq || [];
	var pageTracker = _gat._getTrackerByName();
	var iurl = pageTracker._getLinkerUrl(iframe_link);
	var start_csr = iurl.indexOf("utmcsr=") + 7;
	var end_csr = iurl.indexOf("|", start_csr);
	var tReferer = iurl.substring(start_csr, end_csr);
	var referer = tReferer;
	var extraParams = {};
	var values = {};
	var cookie = $.cookie("__utmz");
	if (cookie) {
		var z = cookie.split('.');
		if (z.length >= 4) {
			var y = z[4].split('|');
			for (i = 0; i < y.length; i++) {
				var pair = y[i].split("=");
				values[pair[0]] = pair[1];
			}
		}
		extraParams = {
			"utm_source": values['utmcsr'], 
			"utm_medium": values['utmcmd'], 
			"utm_campaign": values['utmccn']
		};
	}
	console.log(values);
	if (typeof $.cookie('utm_source') !== 'undefined' && $.cookie('utm_source').length > 0) {
		referer = $.cookie('utm_source');
		extraParams["utm_source"] = $.cookie('utm_source');
	}
	if (typeof $.cookie('utm_medium') !== 'undefined' && $.cookie('utm_medium').length > 0) {
		extraParams["utm_medium"] = $.cookie('utm_medium');
	}
	if (typeof $.cookie('utm_campaign') !== 'undefined' && $.cookie('utm_campaign').length > 0) {
		extraParams["utm_campaign"] = $.cookie('utm_campaign');
	}
	var extraParamString = "";
	for(var dt in extraParams){
		var current = extraParams[dt];
		extraParamString += '&' + dt + '=' + current;
	}
	iurl = iurl.replace(tReferer, referer);
	$(this).attr("src", iurl + "&referer=" + referer + extraParamString);
});
 

Bronnen

Hebt u meer vragen? Een aanvraag indienen

Opmerkingen