Google Analytics zonder javascript

noscript.pngHeb je het gevoel dat je een deel van je bezoekers niet meet, of dat een deel je site niet optimaal kan gebruiken omdat ze javascript uit hebben staan? Meet dit dan door met Google Analytics. Zonder javascript een javascript gebaseerde teller aanroepen? Ja, dat kan.

Hoe meet Google Analytics

Het javascript bestand van Google Analytics (urchin.js of ga.js) verzamelt allerlei gegevens: referral, cookies, account ID, URL, enz. Vervolgens wordt een plaatje op de te meten pagina gezet die van de Google server gehaald word. In de URL van dat plaatje staan weer al die verzamelde gegevens, en op basis daarvan kan Google een meting uitvoeren. Het gaat dus allemaal om dat plaatje dat eigenlijk de gegevens verstuurd. De truc is om dat plaatje met een andere taal dan javascript te maken.

PHP in plaats van javascript

Allereerst credits voor Peter van de Graaf die een tijdje geleden een post op zijn weblog (link verwijderd: site bestaat niet meer) maakte over de exacte techniek die benodigd is. Met PHP worden zo veel mogelijk gegevens verzameld die een aanroep aan Google Analytics mogelijk maken. Vervolgens wordt vanaf de webserver het Google Analytics plaatje opgevraagd en is de meting gereed.

Enkele aanpassingen
Ik heb een paar wijzigingen doorgevoerd om een aantal redenen. Allereerst doe ik de aanroep naar het plaatje niet vanuit mijn server, maar laat ik het plaatje gewoon meeladen in de pagina. Mijn bezoekers vragen dus vanaf hun eigen pc dat plaatje op, dit levert mij weer extra gegevens op zoals bijvoorbeeld de Geografische locatie en Service provider. Daarnaast gebruik ik het script binnen <noscript> elementen als backup voor het reguliere meetscript. Peter gaf een oplossing om iets zoals bijvoorbeeld een RSS feed zonder javascript te meten, ik wil graag de bezoekers die geen javascript hebben meten.

Het script ziet er als volgt uit (kan direct onder het reguliere script geplaatst worden):

<noscript>
<?php
$var_utmac = 'UA-XXXXX-1';
$var_utmhn = 'voorbeeld.nl'; // domein
$var_utmn = rand(1000000000,9999999999); // random nummer
$var_cookie = rand(10000000,99999999); //random cookie nummer
$var_random = rand(1000000000,2147483647); //nummer onder 2147483647
$var_today = time();
$var_referer = $_SERVER['HTTP_REFERER']; //referer url
if ($var_referer == '') { $var_referer = '-'; }
$var_uservar='-'; // de user defined
$var_utmp='/jstracker' . $_SERVER['REQUEST_URI']; // mapje tracker om alles in te meten
$urchinUrl='http://www.google-analytics.com/__utm.gif?utmwv=3&utmn=' . $var_utmn . '&utme=&utmcs=-&utmsr=-&utmsc=-&utmul=-&utmje=0&utmfl=-&utmdt=-&utmhn=' . $var_utmhn . '&utmhid=' . $var_utmn . '&utmr=' . $var_referer . '&utmp=' . $var_utmp . '&utmac=' . $var_utmac . '&utmcc=__utma%3D' . $var_cookie . '.' . $var_random . '.' . $var_today . '.' . $var_today . '.' . $var_today . '.2%3B%2B__utmz%3D' . $var_cookie . '.' . $var_today . '.2.2.utmcsr%3D(direct)%7Cutmccn%3D(direct)%7Cutmcmd%3D(none)%3B%2B__utmv%3D' . $var_cookie . '.' . $var_uservar . '%3B';
echo ' <img src="' . $urchinUrl . '" border="0" />';
?>
</noscript>

Let op: in de $var_utmp heb ik de map /jstracker voor de pagina URL's gezet. Dit geeft mij de mogelijkheid om deze map met javascriptloze bezoekers in een apart profiel bij te houden. Aangezien enkele data niet goed gemeten kan worden mag het mijn hoofdprofiel niet verstoren. Ik raadt een ieder aan een soortgelijke oplossing te hanteren, ga niet je hoofdprofiel verruïneren.

Resultaat

Ik weet nu dat ongeveer 2,5% van mijn bezoekers javascript uit heeft staan. Dit is een deel die voorheen niet bestond, en elk stukje extra informatie over je sitebezoekers is mooi meegenomen.

Click to activate social bookmarks