Los contadores de analítica no pertenecen a los archivos del tema
- Publicado el
- • 4 min de lectura•--- vistas
El seguimiento se instala de la forma más rápida disponible, que es un snippet pegado en una plantilla del tema. Esa decisión pasa desapercibida durante meses y luego produce tres problemas distintos, ninguno de los cuales se anuncia.
Desaparece
El código del tema no sobrevive al tema. Una actualización, un cambio a tema hijo, un rediseño, un traspaso, y el contador ya no está. Nada falla. El panel simplemente se queda callado, y para cuando alguien se da cuenta has perdido un mes de datos que no puedes recuperar.
Lo mismo vale para el segundo contador que alguien añadió el año pasado, en otro archivo de plantilla, y que ahora nadie encuentra.
El arreglo es un plugin con pantalla de ajustes: un campo vacío significa que no se emite nada, lo que además te da una forma limpia de mantener muda una copia de pruebas sin tocar código.
Compite con la página
Cargado de la forma habitual, un script de analítica pide la atención del navegador justo en los segundos en que una visita decide si tu sitio va rápido. Estás gastando la capacidad de respuesta durante la carga, que es en sí misma un factor de posicionamiento, en medir esa misma capacidad de respuesta.
Espera a que el navegador esté libre:
if ('requestIdleCallback' in window) {
requestIdleCallback(loadMetrika, { timeout: 2000 });
} else {
setTimeout(loadMetrika, 2000);
}
El temporizador es obligatorio. Sin él, una página que nunca queda libre nunca carga el contador, y habrás dejado de medir en silencio tus páginas con más tráfico, es decir, las que más importan. La rama de respaldo hace falta por el mismo motivo: requestIdleCallback no está en todas partes, y una comprobación de disponibilidad sin alternativa deja un agujero silencioso en los datos en lugar de una degradación elegante.
Cuenta dos veces
Los snippets se pegan dos veces. Alguien lo añade al tema, otra persona lo mete por el gestor de etiquetas, y ahora cada sesión se cuenta por duplicado. El tráfico parece dispararse, y ese salto es indistinguible de uno real hasta que alguien mira el HTML.
Protege la inserción:
for (var j = 0; j < document.scripts.length; j++) {
if (document.scripts[j].src === r) {
return;
}
}
Cinco líneas. Compáralo con una cuarta parte de las decisiones tomadas sobre cifras dobladas.
Escapa todo, incluidos los booleanos
Los identificadores de contador y los valores de las opciones vienen de la base de datos, y a la base la editan personas a través de un formulario. Escapa el identificador y normaliza los booleanos de forma explícita en vez de interpolar lo que PHP tuviera:
$clickmap_value = $clickmap ? 'true' : 'false';
El false de PHP se renderiza como cadena vacía dentro de un objeto literal de JavaScript, lo que es un error de sintaxis, lo que mata el script entero incluyendo cualquier otra cosa que comparta el archivo. Es un detalle pequeño que produce una caída total de la medición, y cuesta mucho detectarlo porque la página sigue viéndose bien.
El bloque libre en head y su coste
Un campo de ajustes cuyo contenido se imprime en <head> cubre etiquetas de verificación del sitio, snippets de plataformas publicitarias y scripts puntuales. Evita que las peticiones rutinarias de marketing sean despliegues, y resulta genuinamente útil.
Conviene ser honesto sobre lo que es: un campo reservado a administradores que inyecta marcado sin escapar en cada página. Es aceptable porque un administrador ya puede editar archivos de plugin, así que no concede ninguna capacidad nueva. Deja de serlo en el momento en que un rol con menos permisos llega hasta él, o el valor procede de algo que no sea una persona tecleando en el admin.
Decide qué estás recogiendo
La repetición de sesión graba lo que hacen las visitas en la página: movimientos, clics, a veces lo que escriben en formularios. Los mapas de clics y el rebote preciso son más suaves, pero siguen siendo datos de comportamiento.
Convertir estas funciones en interruptores tiene un efecto secundario que merece nombrarse: la respuesta a «qué estamos recogiendo» pasa a ser una pantalla que alguien puede mirar, en lugar de una expedición arqueológica por JavaScript minificado. Si tu aviso de privacidad tiene que describir esto, y lo tiene, entonces la configuración debería poder leerla quien lo redacta.
Disponible para colaboración por contrato
Estoy disponible para colaborar por contrato. Si tiene una idea de proyecto interesante, reserve una llamada por Calendly.
Agenda una llamada de 30 min