Skip to content

Eventos

La plataforma emite CustomEvents del navegador sobre window. Todos los eventos usan el prefijo mindtraining: y su payload siempre está disponible en event.detail.


mindtraining:ready

Se dispara cuando: el script ha terminado de cargar y la API global MindtrainingPlatform está disponible en window.

Cuándo usarlo: es el hook recomendado para llamar a init. Escuchando este evento evitas condiciones de carrera entre la carga del script y la ejecución de tu código de inicialización.

event.detail

CampoTipoDescripción
apiobjectReferencia a window.MindtrainingPlatform
js
window.addEventListener('mindtraining:ready', function (event) {
  // event.detail.api === window.MindtrainingPlatform
  MindtrainingPlatform.init('mindtraining', {
    viewer: { loggedIn: false },
  })
})

¿El script ya estaba cargado? Si registras el listener después de que el script ya se haya ejecutado, el evento no volverá a dispararse. Usa este patrón de guardia:

js
function initializeMindtraining() {
  MindtrainingPlatform.init('mindtraining', {
    viewer: { loggedIn: false },
  })
}

if (window.MindtrainingPlatform) {
  initializeMindtraining()
} else {
  window.addEventListener('mindtraining:ready', initializeMindtraining, { once: true })
}

mindtraining:config

Se dispara cuando: la configuración de la plataforma se actualiza, tanto después del init() inicial como tras cualquier llamada posterior a updateConfig().

Cuándo usarlo: úsalo para reaccionar a cambios de configuración desde fuera de la plataforma, por ejemplo para sincronizar el estado de tu propia UI (como reflejar un cambio de suscripción o de login que la plataforma acaba de recibir).

event.detail

El objeto completo PlatformInitConfig normalizado en el momento del cambio.

CampoTipoDescripción
viewerobjectConfiguración actual del visor/usuario
viewer.userIdstring | nullID del usuario activo
viewer.loggedInbooleanSi el usuario está autenticado
viewer.subscribedbooleanSi el usuario tiene una suscripción activa
uiobjectConfiguración actual de UI
ui.mode'web' | 'app'Modo de renderizado
ui.actionsobjectCallbacks de acciones registradas
accessobjectReglas actuales de acceso por tipo de juego
js
window.addEventListener('mindtraining:config', function (event) {
  const config = event.detail

  console.log('Usuario autenticado:', config.viewer?.loggedIn)
  console.log('Usuario suscrito:', config.viewer?.subscribed)
  console.log('Reglas de acceso activas:', config.access?.games)
})

Eventos de juego y navegación

Los siguientes eventos se emiten durante el juego y la navegación. Úsalos para analítica, tracking, integraciones del host y observabilidad.


mindtraining:game:loaded

Se dispara cuando: una sesión o pantalla de juego está lista para la interacción del usuario.

Cuándo usarlo: úsalo para trackear pageviews internas del juego, medir qué juegos llegan realmente a cargarse o disparar lógica del host en función del tipo de juego.

event.detail

CampoTipoDescripción
gameTypestringTipo de juego (por ejemplo crossword, sudoku)
gameIdstringIdentificador único del juego
variantstringVariante del juego (por ejemplo default, mini)
routestringRuta interna
sourcestringOrigen del juego (por ejemplo today, archive)
js
window.addEventListener('mindtraining:game:loaded', function (event) {
  Analytics.track('mindtraining_game_loaded', event.detail)
})

mindtraining:game:playing

Se dispara cuando: el usuario empieza a interactuar realmente con el juego (por ejemplo, primer movimiento o primera entrada).

Cuándo usarlo: úsalo para distinguir entre un juego cargado y un juego realmente jugado, medir activación o trackear engagement.

event.detail

CampoTipoDescripción
gameTypestringTipo de juego
gameIdstringIdentificador único del juego
variantstringVariante del juego
startedAtstringMarca temporal ISO 8601 del inicio
js
window.addEventListener('mindtraining:game:playing', function (event) {
  Analytics.track('mindtraining_game_playing', event.detail)
})

mindtraining:game:completed

Se dispara cuando: el usuario completa un juego correctamente.

Cuándo usarlo: úsalo para funnels completos, analítica de dificultad o ranking/gamificación del lado host.

event.detail

CampoTipoDescripción
gameTypestringTipo de juego
gameIdstringIdentificador único del juego
variantstringVariante del juego
completedAtstringMarca temporal ISO 8601 de fin
durationMsnumberDuración de la sesión en milisegundos
scorenumberPuntuación final (si aplica)
js
window.addEventListener('mindtraining:game:completed', function (event) {
  Analytics.track('mindtraining_game_completed', event.detail)
})

mindtraining:game:abandoned

Se dispara cuando: el usuario abandona una sesión de juego activa sin completarla.

Cuándo usarlo: úsalo para detectar fricción, medir abandono por juego o variante, o mejorar flujos de retención.

event.detail

CampoTipoDescripción
gameTypestringTipo de juego
gameIdstringIdentificador único del juego
variantstringVariante del juego
durationMsnumberTiempo invertido antes de abandonar
progressnumberProgreso (0–1) en el momento del abandono
js
window.addEventListener('mindtraining:game:abandoned', function (event) {
  Analytics.track('mindtraining_game_abandoned', event.detail)
})

mindtraining:game:state:saved

Se dispara cuando: el estado del juego se persiste (por ejemplo, para la funcionalidad de “continuar jugando”).

Cuándo usarlo: úsalo para trackear retención, flujos de “continuar jugando” o verificar que el estado guardado funciona correctamente.

event.detail

js
window.addEventListener('mindtraining:game:state:saved', function (event) {
  Analytics.track('mindtraining_game_state_saved', event.detail)
})

mindtraining:access:blocked

Se dispara cuando: la plataforma detecta que una superficie (juego de hoy, archivo, etc.) está bloqueada para el usuario.

Cuándo usarlo: úsalo para disparar paywalls contextuales, medir demanda no satisfecha o personalizar mensajes del host según el motivo del bloqueo.

event.detail

js
window.addEventListener('mindtraining:access:blocked', function (event) {
  Analytics.track('mindtraining_access_blocked', event.detail)
  if (event.detail.blockedReason === 'subscription_required') {
    Paywall.show({ context: 'game_archive' })
  }
})

mindtraining:route:changed

Se dispara cuando: cambia la ruta interna de la plataforma (por ejemplo, navegación dentro de la SPA).

Cuándo usarlo: úsalo para pageviews virtuales o para sincronizar analítica con la navegación interna de la plataforma.

event.detail

js
window.addEventListener('mindtraining:route:changed', function (event) {
  Analytics.track('mindtraining_route_changed', event.detail)
})

mindtraining:pageview

Se dispara cuando: la plataforma registra una vista navegable relevante para analítica.

Cuándo usarlo: úsalo para pageview tracking en herramientas analíticas, reporting por sección y tipo de juego o atribución de navegación interna de la SPA.

event.detail

Client integration documentation maintained in-repo.