Matomo es el servidor de estadísticas de código abierto más usado en sitios web. Es relativamente fácil de instalar y actualizar en un servidor propio. Es una solución poco exigente en cuanto a recursos de hardware, y tiene una comunidad sólida y un modelo de negocio que hace el proyecto viable económicamente. Permite almacenar los datos de visitas a un sitio web, que contienen datos sensibles, en un servidor propio, y evita los problemas de privacidad de soluciones como Google Analytics.
Matomo no rastrea las descargas de archivos por omisión. Para almacenar los datos de descargas junto a las visitas de los archivos HTML de un sitio web hay que hacer dos pequeñas modificaciones en el código de la web: introducir ciertos atributos en los enlaces de descarga y añadir un pequeño código JavaScript en las páginas con enlaces.
Modificar los enlaces de descarga
En los enlaces de descarga de los PDF o imágenes hay que incluir una clase que definirá los enlaces a rastrear, y ciertos meta datos usando atributos estándares data-* que contendrán información adicional a enviar al servidor de estadísticas para tener informes más completos y legibles. Por ejemplo:
<a href="/archivos/informe.pdf" class="track-pdf" data-name="Informe importante" data-size="2048">Descargar informe</a>
Incluir el código de rastreo de los archivos descargables
El siguiente código JavaScript escucha eventos de click en los enlaces etiquetados con la clase adecuada y envía los datos al servidor de estadísticas:
document.querySelectorAll('.track-pdf').forEach(function (el) {
el.addEventListener('click', function () {
var name = el.dataset.name || 'PDF';
var size = parseInt(el.dataset.size) || 0;
_paq.push(['trackEvent', 'PDF Downloads', 'Download', name, size]);
});
});
Este código está pensado para archivos PDF. Si se quiere tener diferentes eventos para diferentes tipos de archivo, por ejemplo PDF e imágenes por separado, la clase de los enlaces dependerá del tipo de archivo y se incluirán dos código JavaScript diferentes, cada uno escuchando la clase adecuada.