Cómo utilizar el rastreo del lado del servidor de Matomo

Utiliza Server Side Tracking en Matomo para mejorar tus analíticas

Con Matomo podemos habilitar el seguimiento analítico del lado del servidor y obtener un seguimiento más preciso y mejorado del tráfico de tu sitio web.

Rastreo del lado del servidor vs. Rastreo del lado del cliente: en resumen

Para explicarlo en pocas palabras, el seguimiento del lado del cliente funciona en el navegador del usuario y generalmente se realiza utilizando Javascript. La ventaja es que es bastante fácil recopilar algunas métricas y también es ligero en el servidor.

Por otro lado, el seguimiento del lado del servidor no utiliza Javascript y es ejecutado directamente por el propio servidor. Podemos utilizar PHP para analizar las peticiones que recibimos de nuestros usuarios.

También existen programas de Log Analytics como Awstats o GoAccess, que analizarán los archivos de registro del servidor para determinar las visitas de los usuarios a nuestras páginas web.

La principal ventaja del tracking del lado del servidor y del análisis de logs es que podemos incluso monitorizar a los usuarios que están haciendo uso de AdBlock o sistemas similares, que impiden que el código Javascript de tracking funcione correctamente.

Cómo configurar el seguimiento del lado del servidor con Matomo

En realidad, utilizar el seguimiento analítico del lado del servidor con Matomo es bastante fácil.

Utilizaremos la librería PHP como ejemplo, ya que es uno de los lenguajes más utilizados a la hora de hacer páginas web.

  1. Descarga MatomoTracker.php y PiwikTracker.php de Github o cualquier otra librería de seguimiento del lado del servidor
  2. Sube los archivos MatomoTracker.php y PiwikTracker.php en tu servidor web, puede ser en la carpeta /public_html/matomo/, utilizando Filezilla o cualquier otro software FTP.
  3. En nuestra aplicación web, añadimos el siguiente código PHP en todas nuestras páginas, o en la plantilla, en función del tipo de herramienta que estemos utilizando
# Archivo template.php o similar, asegúrese de que este código se carga en cada página $matomoSiteId = 1; $matomoUrl = '{url-a-matomo-plataforma}'; $matomoToken = '{inser-auth-token-here}'; $matomoPageTitle = ''; require_once '{path-to-file}/MatomoTracker.php'; try { $matomoTracker = new MatomoTracker($matomoSiteId, $matomoUrl); $matomoTracker->setRequestTimeout(2); $matomoTracker->setTokenAuth($matomoToken); } catch (Exception $e) { } # File page.php, para personalizar el título de la página para Matomo if (!empty($matomoTracker)) { $matomoTracker->doTrackPageView($matomoPageTitle); }

Veamos algunos detalles más:

  • $matomoSiteId es el id del sitio web configurado en Matomo, puedes encontrarlo en los Ajustes yendo a Ajustes > Sitios web > Gestionar
  • $matomoUrl es la url pública utilizada por Matomo, por ejemplo https://matomo.yourwebsite.com
  • $matomoToken es un código aleatorio único que necesita ser configurado (ver el párrafo Configurar el Auth Token)
  • $matomoPageTitle es el título de la página para enviar a Matomo, si estás usando un CMS o Framework tendrás que encontrar una manera de configurar esta variable correctamente, mientras que si estás usando archivos PHP individuales para cada página puedes añadirlo en cada archivo
  • require_once cargará el archivo MatomoTracker.php, sustituye {ruta-a-archivo} con la ruta real para obtener MatomoTracker.php, un ejemplo podría ser /var/www/html/sitio-web.com/vendedor/matomo/MatomoTracker.php
  • $matomoTracker contendrá la clase MatomoTracker con sus propias propiedades y métodos
  • setRequestTimeout se utiliza para dar un tiempo máximo para enviar una solicitud a nuestro Matomo: de lo contrario, si su servidor Matomo no está funcionando, la página se ralentizará mucho
  • setTokenAuth establecerá el Token de Autorización para Matomo
  • doTrackPageView es la función que envía el evento PageView a Matomo, funciona de la misma manera que en el código Javascript. Es obligatorio dar a esta función una cadena para utilizar como título de la página, que luego será utilizado por Matomo en el informe de visitas.
  • el bloque try/catch y el if al final son útiles para evitar que se disparen los Fatal Errors de PHP en caso de que nuestra instancia Matomo no responda

Configurar el token de autenticación

Para configurar el Auth Token en PHP, vaya a la Configuración de Matomo en el menú Configuración > Personal > Seguridad y en la parte inferior encontrará Auth Tokens, pulse en Crear nuevo token.

Create a new Auth Token on Matomo
Crear un nuevo Auth Token en Matomo

Tendrás que introducir de nuevo tu contraseña de administrador , después se te pedirá que des una descripción y que generes el token. Aparecerá una cadena aleatoria y es posible que reciba una notificación de seguridad por correo electrónico.

Insert a description to generate your token
Introduce una descripción para generar tu token

Ejemplo de token: 2a96a7df4c6f09272bf445d1c753d4a8 (cada token es único)

Matomo Auth Token has been generated
Matomo Auth Token ha sido generado

Después de insertar el token en el código PHP podemos probar que el seguimiento está funcionando según lo previsto, viendo el sitio web público y verificando que la sesión está siendo registrada por Matomo.

¿Puedo utilizar Javascript y Server Side Tracking?

Sí, tendrá que eliminar o comentar la línea de Javascript que envía el evento PageView a Matomo, de lo contrario encontrará vistas duplicadas. He probado esta posibilidad y realmente puede ocurrir que tengas visitas duplicadas si utilizas el pageview tracking tanto con Javascript como con PHP.

Ejemplo de código:

var _paq = window._paq = window._paq || []; /* métodos del tracker como "setCustomDimension" deben ser llamados antes que "trackPageView" */ _paq.push(['enableHeartBeatTimer', 15]); // La siguiente línea ha sido eliminada para evitar visitas duplicadas // _paq.push(['trackPageView']); _paq.push(['enableLinkTracking']); (function() { var u = "https://matomo.yourwebsite.com/"; _paq.push(['setTrackerUrl', u + 'matomo.php']); _paq.push(['setSiteId', '1']); var d = document, g = d.createElement('script'), s = d.getElementsByTagName('script')[0]; g.type = 'text/javascript'; g.async = true; g.src = u + 'matomo.js'; s.parentNode.insertBefore(g, s); })();

Verás que también he usado enableHeartBeatTimer, es una función que permite hacer un seguimiento más preciso del tiempo que pasa un usuario en la página, enviando una petición de ping a Matomo cada N segundos (mínimo 15). Echa un vistazo también a la documentación de Javascript para Matomo.

También puedes configurar el seguimiento de eventos en Matomo, como cuando quieres saber en qué enlaces están haciendo clic tus usuarios.

Tenga en cuenta que algunos modos de seguimiento serán bloqueados por la funcionalidad Do Not Track en Firefox y otros navegadores, o por herramientas de bloqueo de anuncios.

AdBlocker y Do Not Track

La mayoría de los AdBlockers (AdBlock, uBlock y similares) bloquearán el rastreo inicializado por Matomo. Por ejemplo, la palabra "matomo" puede estar prohibida, por lo que cualquier recurso como matomo.js o matomo.php no se cargará.

Al mismo tiempo, el modo Do Not Track de Firefox bloqueará algunos tipos de rastreadores, si el navegador del usuario lo utiliza y si el servidor utiliza el encabezado relativo.

He probado ambos casos y pueden resolverse con el seguimiento del lado del servidor. Aún así, el uso de Javascript para rastrear algunas acciones o eventos será bloqueado de todos modos. Es posible que desee configurar su seguimiento de eventos en el lado del servidor, pero esto requerirá más trabajo.

Puede construir sus enlaces con un único archivo php llamado link.php y este se encargará de redirigir al usuario a la página correcta. Antes de hacerlo, podría enviar un evento a Matomo en PHP. El principal problema de este enfoque es que claramente hará más difícil la gestión de enlaces y recursos, y requerirá más entrada de datos por tu parte.

Cuestiones de privacidad

Rastrear a aquellos que no desean ser rastreados es una mala idea, pero no necesariamente tenemos que renunciar a controlar nuestras opiniones.

Debemos hacer todo lo posible por respetar la privacidad de los usuarios. Si sólo recogemos datos agregados con fines estadísticos, no habrá problemas, pero en caso de que queramos realizar remarketing y perfilación, tendremos que pedir el consentimiento explícito al usuario, y activar el rastreo sólo después de recibirlo.

Como ejemplo, podríamos configurar una página PHP para requerir el consentimiento y establecer una cookie técnica si se da.

Después verificaremos que la cookie se ha establecido y, en ese caso, iniciaremos el seguimiento:

if (!empty($_COOKIE['matomoTrackingConsent'])) { # Archivo template.php o similar, asegúrese de que este código se carga en cada página $matomoSiteId = 1; $matomoUrl = 'https://matomo.yourwebsite.com'; $matomoToken = '2a96a7df4c6f09272bf445d1c753d4a8 '; $matomoPageTitle = 'Título de la página'; require_once '/var/www/html/yourwebsite/vendor/matomo/MatomoTracker.php'; try { $matomoTracker = new MatomoTracker($matomoSiteId, $matomoUrl); $matomoTracker->setRequestTimeout(2); $matomoTracker->setTokenAuth($matomoToken); } catch (Exception $e) { } # Archivo page.php, para personalizar el título de la página para Matomo if (!empty($matomoTracker)) { $matomoTracker->doTrackPageView($matomoPageTitle); } }

Claro que haciendo esto podríamos perder el primer acceso, porque no podemos activar el seguimiento antes de que el usuario haya dado su consentimiento para ello.

Conclusiones

¡Ahora su Matomo Server Side Tracking está configurado!

¡Si te ha gustado este artículo, sígueme en Facebook y suscríbete a nuestro canal de Youtube! ¡Si necesitas soporte escríbeme en el chat o por email!

Deja un comentario

Todos los comentarios estarán sujetos a aprobación después de ser enviados. Es posible que se publiquen después de varias horas.

Puedes usar un apodo al azar, es útil para que al menos pueda responder a tus comentarios. Y si eliges enviar tu correo electrónico, puedes recibir una notificación cada vez que responda a tu comentario.

Aún no se han escrito comentarios sobre este artículo. ¡Sé el primero en compartir tu opinión!

*