Intégration Kameleoon
Mesurez le premier lancement audio du widget Ekoo avec un objectif personnalisé.
Intégration recommandée
Utilisez l'événement Ekoo played-0 via data-ekoo-on-event. Il confirme le démarrage effectif de la lecture et ne dépend pas de la structure HTML interne du widget.
1. Créer l'objectif dans Kameleoon
- Ouvrez le projet concerné dans Kameleoon.
- Allez dans Paramètres > Objectifs, puis créez un objectif personnalisé, par exemple Ekoo – Lancement audio.
- Relevez l'identifiant numérique de l'objectif.
- Associez cet objectif aux expériences ou personnalisations concernées.
2. Déclencher la conversion depuis Ekoo
Placez ce code avant le script du widget et remplacez uniquement 123456 par l'identifiant de votre objectif Kameleoon.
1(() => {2 const KAMELEOON_GOAL_ID = 123456; // Replace with your custom goal ID34 window.onEkooEvent = function (data) {5 if (data.stats.type !== 'played-0') return;67 if (!window.Kameleoon?.API?.Goals?.processConversion) {8 console.warn('[Ekoo] Kameleoon API is unavailable');9 return;10 }1112 window.Kameleoon.API.Goals.processConversion(KAMELEOON_GOAL_ID);13 };14})();Ajoutez ensuite cet attribut sur l'élément qui initialise le widget Ekoo :
1data-ekoo-on-event="onEkooEvent"3. Vérifier l'intégration
Dans la console du navigateur, vérifiez que l'API de conversion Kameleoon est disponible :
1typeof window.Kameleoon?.API?.Goals?.processConversion2// Expected result: "function"Le résultat attendu est "function". Utilisez ensuite le mode Preview de Kameleoon, lancez une première lecture et contrôlez la conversion sur l'objectif.
Contournement temporaire sans callback Ekoo
Un suivi Kameleoon fondé uniquement sur un sélecteur CSS peut manquer les clics : le bouton Play se trouve dans le Shadow DOM du widget et interrompt la propagation de l'événement. Si vous ne pouvez pas encore ajouter data-ekoo-on-event, utilisez temporairement un listener en phase de capture :
1(() => {2 const KAMELEOON_GOAL_ID = 123456; // Replace with your custom goal ID34 if (window.__ekooKameleoonTrackingInstalled) return;5 window.__ekooKameleoonTrackingInstalled = true;67 const trackedWidgets = new WeakSet();89 function trackPlay(event) {10 const path = event.composedPath?.() || [];11 const isPlayButton = path.some((element) =>12 element?.matches?.('.ekoo-widget-container-picture-button')13 );1415 if (!isPlayButton) return;1617 const widget = path.find((element) => element?.tagName === 'EKOO-WIDGET');1819 if (!widget || widget.classList.contains('playing') || trackedWidgets.has(widget)) {20 return;21 }2223 if (!window.Kameleoon?.API?.Goals?.processConversion) {24 console.warn('[Ekoo] Kameleoon API is unavailable');25 return;26 }2728 trackedWidgets.add(widget);29 window.Kameleoon.API.Goals.processConversion(KAMELEOON_GOAL_ID);30 }3132 document.addEventListener('pointerdown', trackPlay, true);33 document.addEventListener('keydown', (event) => {34 if (event.key === 'Enter' || event.key === ' ') trackPlay(event);35 }, true);36})();Limite du fallback
Cette méthode mesure l'intention de cliquer sur Play, pas la confirmation que l'audio a démarré. Elle doit être remplacée par le callback natif dès que possible.
Comportement attendu
- Une conversion au premier lancement audio.
- Aucune nouvelle conversion lors d'une pause ou d'une reprise.
- Un nouveau widget peut déclencher sa propre conversion.
Pour envoyer également les événements à GTM ou GA4, consultez le guide DataLayer.