Autonomía digital y tecnológica

Código e ideas para una internet distribuida

Rastrear las descargas de archivos de un sitio web con un servidor de estadísticas Matomo

Imago voragine.net

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.

Dejar un comentario

No hay comentarios en esta entrada.
*
*

No hay trackbacks