Piwik es un clon gratuíto y opensource de google analytics (o pretende llegar a serlo). Además los desarrolladores se encargan de tratar que las funcionalidades sean lo más semejantes posible a Google Analytics.
La principal ventaja de Piwik, es que se instala en tu servidor. No es una solución online externa, por lo tanto los datos recogidos siempre serán de tu propiedad.
A lo que íbamos, en este post vamos a ver como realizar el tracking de subdominios y variables personalizadas utilizando el código asíncrono de piwik.
Debemos pegar el siguiente código justo antes de la etiqueta </head>
<!-- Piwik START-->
<script type="text/javascript"> var _paq = _paq || []; (function(){ var u=(("https:" == document.location.protocol) ? "http://estadisticas.librodeapuntes.es/" : "http://estadisticas.librodeapuntes.es/"); _paq.push(['setSiteId', 1]); _paq.push(['setTrackerUrl', u+'piwik.php']);
//Punto 1. Permitimos que los subdominios compartan la misma cookie _paq.push(['setCookieDomain','*.librodeapuntes.es']); //Punto 2. Sobrescribimos el dominio _paq.push(['setDomains','*.librodeapuntes.es']); //Punto 3.Añadimos el dominio al título de las páginas _paq.push(['setDocumentTitle',document.domain + "/" + document.title]); //Punto 4. Ejemplo variable personalizada _paq.push(['setCustomVariable','3','tipo_informacion','librodeapuntes']); //Enviamos la página vista _paq.push(['trackPageView']);
_paq.push(['enableLinkTracking']); var d=document,g=d.createElement('script'), s=d.getElementsByTagName('script')[0]; g.type='text/javascript'; g.defer=true; g.async=true; g.src=u+'piwik.js'; s.parentNode.insertBefore(g,s);})(); </script> <!-- Piwik END -->
Analizamos los puntos interesantes:
//Punto 1. Permitimos que los subdominios compartan la misma cookie
Para poder trazar a los usuarios en Piwik a lo largo de diferentes subdominios (por ejemplo sub1.librodeapuntes.es y sub2.librodeapuntes.es), debemos asegurarnos que el código escribe bajo la misma cookie. Ello se consigue con la orden:
_paq.push([‘setCookieDomain’,’*.librodeapuntes.es‘]);
//Punto 2. Sobrescribimos el dominio
Análogamente, debemos indicar a Piwik, que queremos que guarde la página bajo el dominio superior.
_paq.push([‘setDomains’,’*.librodeapuntes.es‘]);
//Punto 3.Añadimos el dominio al título de las páginas
Para permitir filtrar mejor los resultados, es importante añadir el subdominio al título de las páginas. Ello hace que las páginas se vean como«sub1.librodeapuntes Portada» y «sub2.librodeapuntes Portada» lo que nos permite distinguir entre una u otra.
_paq.push([‘setDocumentTitle’,document.domain + «/» + document.title]);
//Punto 4. Ejemplo variable personalizada
Las variables personalizadas en Piwik están creadas a la imagen de las custom vars de Google Analytics. Es una funcionalidad añadida recientemente y de momento no tienen la misma potencia (por ejemplo no nos permite definir el alcance de la variable, que en analytics nos permite diferenciar entre variables de usuario, de sesión o de página).
Como en Analytics disponemos de 5 variables. En nuestro caso definimos la variable 3, que se llama «tipo_informacion» y que es igual a «librodeapuntes»:
_paq.push([‘setCustomVariable’,’3‘,’tipo_informacion‘,’librodeapuntes‘]);
//Piwik Asynchronous code, tracking subdomains and custom vars
Si os interesa, también podemos incluir el código asíncrono de Piwik para trazar las secciones de un sitio bajo wordpress.
<!– Piwik –>
<script type=»text/javascript»>
var _paq = _paq || [];(function(){
var u=((«https:» == document.location.protocol) ?
«http://estadisticas.librodeapuntes.es/» :
«http://estadisticas.librodeapuntes.es/»);
_paq.push([‘setSiteId’, 1]);
_paq.push([‘setTrackerUrl’, u+’piwik.php’]);
_paq.push([‘setCookieDomain’,’*.librodeapuntes.es’]);
_paq.push([‘setDomains’,’*.librodeapuntes.es’]);
_paq.push([‘setCustomVariable’,’3′,’tipo_informacion’,’librodeapuntes’]);
_paq.push([‘setCustomVariable’,’4′,’seccion’,’
<?php global $post;$categories = get_the_category($post->ID);
$categories[0]->cat_name;if($categoria==»»){echo «Portada»;}
else{echo $categoria;} ?>‘]);
_paq.push([‘setDocumentTitle’,document.domain + «/» + document.title]);
_paq.push([‘trackPageView’]);
_paq.push([‘enableLinkTracking’]);
var d=document, g=d.createElement(‘script’), s=d.getElementsByTagName(‘script’)[0];
g.type=’text/javascript’; g.defer=true; g.async=true; g.src=u+’piwik.js’;
s.parentNode.insertBefore(g,s);})();
</script>
<!– End Piwik Code –>
//Conclusión
Aunque aún le queda un camino muy largo por delante (sobretodo en cuanto a capacidades de reporting), Piwic puede ser una alternativa interesante para sitios pequeños que quieran mantener el control de sus datos.