Intégration DataLayer
Poussez les événements Ekoo dans le dataLayer pour les exploiter dans GTM et GA4.
Qu'est-ce que le dataLayer ?
Le dataLayer est un tableau JavaScript standard que Google Tag Manager lit pour détecter et traiter des événements. Chaque appel à dataLayer.push() ajoute un objet dans ce tableau ; GTM intercepte automatiquement cet ajout et déclenche les balises associées.
C'est le mécanisme standard pour faire communiquer votre site avec GTM et, par extension, avec GA4 et tous vos outils de mesure.
Initialiser le dataLayer
Avant de pousser des événements, assurez-vous que le tableau existe. Cette ligne peut être placée n'importe où avant votre premier push() :
1window.dataLayer = window.dataLayer || [];Note
Si GTM est déjà installé sur votre site, il initialise le dataLayer pour vous. L'initialisation conditionnelle window.dataLayer = window.dataLayer || [] est néanmoins recommandée pour éviter toute erreur si GTM n'a pas encore chargé.
Pousser tous les événements
L'approche la plus simple : chaque événement Ekoo est envoyé dans le dataLayer. Vous filtrerez ensuite côté GTM si nécessaire.
1function onEkooEvent(data) {2 window.dataLayer = window.dataLayer || [];3 window.dataLayer.push({4 event: 'ekoo_' + data.stats.type.replace('-', '_'),5 ekoo_event_type: data.stats.type,6 ekoo_widget_type: data.stats.widget,7 ekoo_review_id: data.audioId,8 ekoo_product_id: data.productRef,9 ekoo_source: data.source,10 ekoo_reached: data.stats.reached || null11 });12}Pousser uniquement certains événements
Si vous souhaitez limiter le volume de données envoyées à GA4, filtrez directement dans votre callback. L'exemple ci-dessous ne pousse que played-0 (lancement) et played-100 (écoute complète) :
1function onEkooEvent(data) {2 const tracked = ['played-0', 'played-100'];3 if (!tracked.includes(data.stats.type)) return;45 window.dataLayer = window.dataLayer || [];6 window.dataLayer.push({7 event: 'ekoo_' + data.stats.type.replace('-', '_'),8 ekoo_event_type: data.stats.type,9 ekoo_widget_type: data.stats.widget10 });11}Astuce
Vous pouvez adapter la liste tracked à vos besoins. Par exemple, ajoutez 'printed' pour suivre les impressions, ou 'played-50' pour mesurer l'engagement intermédiaire.
Structure de l'événement dans le dataLayer
Voici le détail de chaque propriété poussée dans le dataLayer :
| Propriété | Type | Description |
|---|---|---|
event | string | Nom de l'événement GTM, ex. ekoo_played_0. Sert de déclencheur dans GTM. |
ekoo_event_type | string | Nom original de l'événement Ekoo, ex. played-0. |
ekoo_widget_type | string | Toujours standalone avec widget-4.0.0-standalone.js. Les valeurs carousel et list ne sont disponibles qu'avec widget-3.1.0.js. |
ekoo_review_id | string | Identifiant de la review audio en cours de lecture. |
ekoo_source | string | Domaine source de la page contenant le widget. |
ekoo_reached | number | null | Pourcentage de progression atteint (25, 50, 75, 100). null pour les événements sans progression (printed, played-0). |
Vérifier les événements dans la console
Ouvrez la console développeur de votre navigateur (F12) et exécutez la commande suivante pour afficher uniquement les événements Ekoo présents dans le dataLayer :
1console.table(window.dataLayer.filter(e => e.event?.startsWith('ekoo_')));Vous devriez voir un tableau avec chaque événement poussé, ses propriétés et leurs valeurs. C'est le moyen le plus rapide de valider votre intégration avant de passer à GTM.
Conventions de nommage
Respectez ces trois règles pour garantir la compatibilité avec GA4 et la lisibilité de vos rapports :
- Toujours préfixer avec
ekoo_pour distinguer les événements Ekoo de vos autres événements - Utiliser des underscores (
_) et jamais de tirets — GA4 rejette les noms contenant des tirets - Nommer les propriétés de manière cohérente :
ekoo_event_type,ekoo_widget_type,ekoo_review_id,ekoo_source
Attention
window.dataLayer.push() ne lance pas d'erreur si le dataLayer n'existe pas encore, mais l'événement sera perdu. Initialisez toujours le dataLayer avant votre première utilisation.