Skip to content

Événements

La plateforme émet des CustomEvents du navigateur sur window. Tous les événements sont préfixés par mindtraining: et leur payload est toujours disponible dans event.detail.


mindtraining:ready

Déclenché quand : le script a fini de se charger et l'API globale MindtrainingPlatform est disponible sur window.

Quand l'utiliser : c'est le hook recommandé pour appeler init. En écoutant cet événement, vous évitez les conditions de course entre le chargement du script et l'exécution de votre code d'initialisation.

event.detail

ChampTypeDescription
apiobjectRéférence vers window.MindtrainingPlatform
js
window.addEventListener('mindtraining:ready', function (event) {
  // event.detail.api === window.MindtrainingPlatform
  MindtrainingPlatform.init('mindtraining', {
    viewer: { loggedIn: false },
  })
})

Le script est déjà chargé ? Si votre listener est enregistré après l'exécution du script, l'événement ne sera plus émis. Utilisez ce pattern de garde :

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

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

mindtraining:config

Déclenché quand : la configuration de la plateforme est mise à jour, à la fois après l'appel initial à init() et après tout updateConfig() ultérieur.

Quand l'utiliser : utilisez cet événement pour réagir aux changements de configuration provenant de l'extérieur de la plateforme, par exemple pour synchroniser votre propre état d'interface.

event.detail

L'objet PlatformInitConfig normalisé complet au moment du changement.

ChampTypeDescription
viewerobjectParamètres courants du visiteur/utilisateur
viewer.userIdstring | nullID de l'utilisateur actif
viewer.loggedInbooleanIndique si l'utilisateur est authentifié
viewer.subscribedbooleanIndique si l'utilisateur a un abonnement actif
uiobjectParamètres d'interface courants
ui.mode'web' | 'app'Mode de rendu
ui.actionsobjectCallbacks d'actions enregistrés
accessobjectRègles d'accès courantes par type de jeu
js
window.addEventListener('mindtraining:config', function (event) {
  const config = event.detail

  console.log('Utilisateur connecté :', config.viewer?.loggedIn)
  console.log('Utilisateur abonné :', config.viewer?.subscribed)
  console.log("Règles d'accès actives :", config.access?.games)
})

Événements de jeu et de navigation

Les événements suivants sont émis pendant le gameplay et la navigation. Utilisez-les pour l'analytics, le tracking, les intégrations host et l'observabilité.


mindtraining:game:loaded

Déclenché quand : une session ou un écran de jeu est prêt pour l'interaction.

Quand l'utiliser : utilisez cet événement pour suivre les pageviews internes, mesurer quels jeux se chargent réellement ou déclencher de la logique côté host selon le type de jeu.

event.detail

ChampTypeDescription
gameTypestringType de jeu (par ex. crossword, sudoku)
gameIdstringIdentifiant unique du jeu
variantstringVariante du jeu (par ex. default, mini)
routestringRoute interne
sourcestringSource du jeu (par ex. today, archive)
js
window.addEventListener('mindtraining:game:loaded', function (event) {
  Analytics.track('mindtraining_game_loaded', event.detail)
})

mindtraining:game:playing

Déclenché quand : l'utilisateur commence à interagir réellement avec le jeu (premier mouvement ou première saisie).

Quand l'utiliser : utilisez cet événement pour distinguer un jeu chargé d'un jeu réellement joué, mesurer l'activation ou suivre l'engagement.

event.detail

ChampTypeDescription
gameTypestringType de jeu
gameIdstringIdentifiant unique du jeu
variantstringVariante du jeu
startedAtstringHorodatage ISO 8601 du début
js
window.addEventListener('mindtraining:game:playing', function (event) {
  Analytics.track('mindtraining_game_playing', event.detail)
})

mindtraining:game:completed

Déclenché quand : l'utilisateur termine un jeu avec succès.

Quand l'utiliser : utilisez cet événement pour les funnels complets, l'analyse de difficulté ou les classements côté host.

event.detail

ChampTypeDescription
gameTypestringType de jeu
gameIdstringIdentifiant unique du jeu
variantstringVariante du jeu
completedAtstringHorodatage ISO 8601 de fin
durationMsnumberDurée de la session en millisecondes
scorenumberScore final (le cas échéant)
js
window.addEventListener('mindtraining:game:completed', function (event) {
  Analytics.track('mindtraining_game_completed', event.detail)
})

mindtraining:game:abandoned

Déclenché quand : l'utilisateur quitte une session de jeu après avoir commencé à jouer et avant de la terminer.

Quand l'utiliser : utilisez cet événement pour détecter des frictions, mesurer l'abandon par jeu ou variante, ou améliorer les parcours de rétention.

event.detail

ChampTypeDescription
gameTypestringType de jeu
gameIdstringIdentifiant unique du jeu
variantstringVariante du jeu
durationMsnumberTemps passé avant abandon
progressnumberProgression (0–1) au moment de l'abandon
js
window.addEventListener('mindtraining:game:abandoned', function (event) {
  Analytics.track('mindtraining_game_abandoned', event.detail)
})

mindtraining:game:state:saved

Déclenché quand : l'état du jeu est persisté (par exemple pour la fonctionnalité « reprendre la partie »).

Quand l'utiliser : utilisez cet événement pour suivre la rétention, les parcours de reprise ou vérifier que la sauvegarde fonctionne.

event.detail

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

mindtraining:access:blocked

Déclenché quand : la plateforme détecte qu'une surface (jeu du jour, archive, etc.) est bloquée pour l'utilisateur.

Quand l'utiliser : utilisez cet événement pour déclencher un paywall contextuel, mesurer une demande non satisfaite ou adapter les messages du host.

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

Déclenché quand : la route interne de la plateforme change (par ex. navigation dans la SPA).

Quand l'utiliser : utilisez cet événement pour des pageviews virtuelles ou pour synchroniser l'analytics avec la navigation interne.

event.detail

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

mindtraining:pageview

Déclenché quand : la plateforme enregistre une vue navigable pertinente pour l'analytics.

Quand l'utiliser : utilisez cet événement pour le suivi des pageviews, le reporting par section et type de jeu, ou l'attribution de la navigation interne.

event.detail

ChampTypeDescription
pathnamestringChemin de route actuel
titlestringTitre de la page
gameTypestringType de jeu, le cas échéant
gameIdstringIdentifiant du jeu, le cas échéant
variantstringVariante du jeu, le cas échéant
sourcestringSource de la vue (par exemple today, archive)
js
window.addEventListener('mindtraining:pageview', function (event) {
  Analytics.track('mindtraining_pageview', event.detail)
})

mindtraining:user:action

Déclenché quand : l'utilisateur effectue une interaction clé (par exemple cliquer sur l'archive ou sélectionner un jeu).

Quand l'utiliser : utilisez cet événement pour suivre les clics pertinents, lancer des expérimentations ou instrumenter l'UI sans raccorder chaque bouton depuis le host.

event.detail

ChampTypeDescription
actionstringIdentifiant de l'action (par exemple click_archive)
locationstringEmplacement dans l'UI (par exemple home_header)
gameTypestringType de jeu, le cas échéant
variantstringVariante du jeu, le cas échéant
indexnumberPosition zero-based du bloc/élément de jeu cliqué dans la liste rendue, le cas échéant
urlstringURL externe sélectionnée depuis la navigation, le cas échéant

Valeurs actuelles de action :

ValeurSignification
click_playL'utilisateur clique sur un CTA pour jouer ou ouvrir un jeu
click_archiveL'utilisateur clique sur un CTA d'archive ou d'historique
click_startL'utilisateur démarre un jeu depuis l'écran intermédiaire
click_backL'utilisateur clique sur un CTA de retour ou de navigation
click_navL'utilisateur clique sur un lien de navigation externe

Valeurs actuelles de location :

ValeurSurface
home_block_gameCarte ou bloc de jeu sur l'accueil
home_block_dynamic_gamesBloc dynamique de jeux sur l'accueil
historical_game_blockBloc de jeux historiques ou récents
intermediate_game_screenÉcran intermédiaire affiché avant l'entrée dans un jeu
game_navigationEn-tête de navigation dans le jeu
site_navMenu de navigation du site
game_navigation_menuMenu de navigation dans le jeu
js
window.addEventListener('mindtraining:user:action', function (event) {
  Analytics.track('mindtraining_user_action', event.detail)
})

mindtraining:share:requested

Déclenché quand : l'utilisateur tente de partager du contenu depuis la plateforme.

Quand l'utiliser : utilisez cet événement pour l'analytics d'intention de partage ou pour le relier au flux de partage natif du host.

event.detail

ChampTypeDescription
gameTypestringType de jeu
gameIdstringIdentifiant du jeu
urlstringURL à partager
titlestringTitre à partager
js
window.addEventListener('mindtraining:share:requested', function (event) {
  Analytics.track('mindtraining_share_requested', event.detail)
})

mindtraining:error

Déclenché quand : une erreur de flux, de chargement ou d'interaction pertinente pour le host se produit.

Quand l'utiliser : utilisez cet événement pour l'observabilité, les alertes ou une UI de repli côté host.

event.detail

ChampTypeDescription
scopestringPortée de l'erreur (par exemple game-load)
codestringCode d'erreur (par exemple GAME_DATA_FETCH_FAILED)
messagestringMessage lisible
recoverablebooleanIndique si l'utilisateur peut récupérer de l'erreur
js
window.addEventListener('mindtraining:error', function (event) {
  Analytics.track('mindtraining_error', event.detail)
  if (!event.detail.recoverable) {
    ErrorUI.show(event.detail)
  }
})

Événements recommandés pour l'analytics

Une approche pratique pour l'analytics du host consiste à écouter :

  1. mindtraining:ready - pour savoir quand l'initialisation est sûre
  2. mindtraining:config - pour suivre les changements de configuration
  3. mindtraining:game:loaded - pour mesurer les chargements de jeux
  4. mindtraining:pageview - pour suivre les pageviews
  5. mindtraining:game:playing - pour mesurer l'activation
  6. mindtraining:game:completed - pour mesurer les complétions
  7. mindtraining:access:blocked - pour mesurer la demande bloquée
  8. mindtraining:error - pour surveiller les erreurs
js
window.addEventListener('mindtraining:game:loaded', function (event) {
  Analytics.track('mindtraining_game_loaded', event.detail)
})
window.addEventListener('mindtraining:game:playing', function (event) {
  Analytics.track('mindtraining_game_playing', event.detail)
})
window.addEventListener('mindtraining:pageview', function (event) {
  Analytics.track('mindtraining_pageview', event.detail)
})
window.addEventListener('mindtraining:access:blocked', function (event) {
  Analytics.track('mindtraining_access_blocked', event.detail)
})

Client integration documentation maintained in-repo.