Repetición de sesión (replay)
La tercera capa de medición permite ver, como en un vídeo, cómo un alumno usó una pantalla: dónde pinchó, dónde se quedó parado, dónde se atascó. Es la herramienta de soporte para entender por qué a un jubilado de 67 años "no le funciona" algo que sobre el papel funciona.
Complementa a las otras dos capas: la medición por alumno dice qué pasó; la repetición muestra cómo pasó.
Herramienta muy sensible — con guardarraíles
Grabar cómo navega una persona es delicado. Por eso esta capa nace con enmascarado de datos personales desde el primer día, residencia en la UE, y apagada por defecto. Lee la sección de privacidad entera antes de usarla.
Qué graba, y qué no
- Graba solo a alumnos que han iniciado sesión dentro del Campus. El equipo (tutores, gestores, admins) no se graba nunca.
- No graba todo el rato. La grabación arranca apagada y solo se enciende en las pantallas de fricción —el grabador de audio, el reproductor de vídeo y la subida de archivos—, que es donde el público suele atascarse. Navegar el catálogo o los avisos no graba nada.
- Además, una pequeña muestra aleatoria (~10 %) de sesiones, como red para pillar fallos inesperados fuera de esas pantallas.
Por qué así, y no "grabar todo"
Grabar a los 17.000 alumnos enteros costaría cientos de euros al mes. Grabando solo la fricción + esa muestra nos quedamos dentro del tramo gratuito de la herramienta (PostHog). Es una decisión de coste tan deliberada como la de privacidad.
Dónde se ven las grabaciones: en el panel de PostHog (servidor de la UE, Frankfurt). Como cada sesión se asocia al alumno, soporte puede buscar las grabaciones de un alumno concreto. Se guardan 30 días y luego se borran solas.
Privacidad: lo innegociable
El enmascarado es selectivo: la interfaz fija (títulos de lección, botones, menús) se ve —si no, la grabación no serviría—, y se tapa todo lo que sea un dato personal.
- Todo lo que el alumno escribe en cualquier campo va tapado siempre.
- Se enmascara el texto de: nombre y email del alumno, la marca de agua del vídeo (que lleva nombre + email), los mensajes del chat y el texto de feedback.
- Las imágenes sensibles (foto de perfil/avatar, imágenes del chat) se ocultan enteras — una cara identifica más que un nombre.
- No se graba nada del tráfico de red: ninguna respuesta de servidor entra en la grabación.
Regla de mantenimiento — cada pantalla nueva
El enmascarado es "todo visible salvo lo que marquemos". Eso significa que la cobertura es responsabilidad nuestra: cualquier pantalla nueva del Campus del alumno que muestre datos personales debe marcarse para taparse. Una pantalla PII nueva sin marcar es una fuga. Existe un inventario de superficies a enmascarar en el código (src/lib/analytics/replay-config.ts) que hay que ampliar al añadir una.
Base legal
La base para grabar es el interés legítimo (mejorar el producto para un público que se atasca), y debe estar declarada en la política de privacidad. Encender la herramienta sin esa declaración publicada no está permitido.
Errores: dónde se miran
La repetición de sesión es solo para ver la grabación. Los errores de la pantalla del alumno no se cuentan aquí: la fuente de verdad de los errores es la medición por alumno (el evento "Error en su pantalla", que va a la base de datos del Campus). La grabación sirve para ver el fallo; el registro del error sirve para contarlo y buscarlo.
Cómo se enciende (y se apaga)
Está apagada por defecto. Encenderla es una decisión de dirección, no un ajuste suelto, porque implica empezar a grabar a personas reales:
- Provisionar la clave de PostHog en Vercel.
- Confirmar la retención de 30 días en el panel de PostHog.
- Publicar la política de privacidad.
- Activar la grabación en el panel de PostHog.
Para revertir: quitar la clave y volver a desplegar, o apagar el interruptor en PostHog. Hay un runbook con el paso a paso (posthog-replay-activacion-runbook.md en el repositorio del Campus).
Cómo funciona por dentro (equipo técnico)
Cliente posthog-js montado solo en el layout del Campus del alumno (campus/layout.tsx); hace identify(user_id) para poder buscar por alumno. Toda la política —enmascarado, host EU fijo (no configurable, para que no pueda apuntar a EE. UU.), muestreo < 1, disparo por fricción, red OFF a dos niveles, inventario PII— está codificada como datos con tests en src/lib/analytics/replay-config.ts (buildReplayConfig), de modo que debilitar la privacidad rompe un test en vez de llegar a producción. La feature está tras el flag NEXT_PUBLIC_POSTHOG_KEY: sin clave, no inicializa nada.
Resumen: dónde se ve cada cosa
| Quiero… | Dónde |
|---|---|
| Ver cómo un alumno usó una pantalla | Panel de PostHog (UE), buscando por ese alumno |
| Contar/investigar errores de pantalla | Medición por alumno — evento "Error en su pantalla" |
| Encender o apagar la grabación | Panel de PostHog + clave en Vercel (decisión de dirección) |