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.
Relacionado
Proyectos

CactusPlay - Tienda de juegos con una red de colaboradores verificados
Antes: los compradores de la CEI comparaban a mano los precios de PlayStation y Xbox entre vendedores dispersos, y cada pedido lo cumplían los propios fundadores. Después: una tienda con catálogo en vivo y un CRM al que podía sumarse cualquier colaborador verificado con datos de pago turcos para tomar pedidos y ganar con ellos. Resultado: más de 20 000 posiciones por hora, cambios de precio que llegan a la tienda y a Yandex.Market sin intervención humana, y un cumplimiento que ya no depende de un solo par de manos.
Artículos
Que la entrega sea consecuencia del pago, no una tarea que alguien ejecuta
La entrega manual de productos digitales está limitada por el horario laboral y protegida solo por la atención de alguien. Mover la entrega a los eventos del pedido cambia lo que el sistema garantiza, y la API es lo que impide que un segundo canal se convierta en una segunda implementación.
Poner precio a un catálogo contra una tienda que no controlas
Revender significa que tus precios dependen de que otro cambie los suyos. Consultar al cargar la página tumba tu tienda con la suya; una exportación nocturna se queda obsoleta. El camino intermedio es una caché con una estrategia de precio detrás.
Un widget de soporte que ya sabe con quién habla
Pegar un widget de chat en una plantilla funciona hasta que el tema se actualiza, hasta que hay que cambiar un ajuste o hasta que el widget añade una consulta a la base de datos en cada página. Tres decisiones pequeñas lo arreglan todo.
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