SlideShare ist ein Scribd-Unternehmen logo
1 von 45
Downloaden Sie, um offline zu lesen
Devenir best friend
forever avec vos
développeurs
Comment faire une implémentation
bulletproof de vos outils de
webanalytics
Aristide Riou | @aristweet
Measure Camp Nantes
05 novembre 2016
Pourquoi cette présentation?
En un mot : nous sous-exploitons les outils de tag management
Et ça m’énerve.
Un peu d’histoire...
Pour les plus jeunes…
Il y a une époque où les plans de
marquage ressemblaient à ça…
Et c’était. Juste. Une fucking tannée.
● Mise en prod pour chaque modification (ou alors modifs
périlleuses dans les filtres de GA, processing rules dans
Omniture... #nostalgie)
● Expertise portée par les développeurs (donc techniques plus ou
moins fiables)
● Recette / QA plus complexe (pas de Data Layer comme couche
intermédiaire “juge de paix”)
● Encore aujourd’hui, difficultés à migrer vers GTM et “nettoyer” des
vieilles implémentations
Et puis les TMS sont arrivés
● “Seamless tracking integration”
● “All in one tag management”
● “A single snippet required”
● “Happiness, success, money and georgious chicks”
Sauf que...ça ne s’est pas vraiment passé comme ça
On a vu arriver 2 types d’approches :
● L’approche “moi pas toucher code site. Internet. HTML. Tout ça”
(80%)
● L’approche “#yolo” (20%)
L’approche “passe plat” (les 80% tristes)
GTM ne fait que transiter les informations
“Ouais mais c’est plus durable”
FAUX! FAUX! ULTRA FAUX!!!
● On appelle une librairie (gtm.js) pour NADA
● On fait porter des informations orientées GA (ou Adobe, AT…) à un
data layer qui est censé être agnostique
● On continue à donner la responsabilité aux développeurs (qui ont
très franchement mieux à faire)
● Certes, on peut faire des fixes...mais du coup, c’est franchement
du bricolage.
L’approche #yolo (les 20% cools, mais un peu fous)
Rien n’est inséré en dur, tout est fait via le TMS.
● Scrapping de contenu pour alimenter des custom dims (header,
h1, h2…) basé sur la structure du DOM.
● Listeners de clics via des classes, des IDs, des attributs CSS divers…
● Tracking d’affichage de pop ins via des fonctions récursives qui
attendent la visibilité d’un élément
● Trucs franchement sales et un peu honteux
Listener de clic basé sur un attribut CSS un peu random
Listener de scroll en se basant sur la position d’un CtA
Scrapping très crado d’evars issues d’Adobe Analytics
C’est franchement fun, mais dangereux
● La structure du DOM peut bouger à tout moment
● Problèmes de performance
● On écoute le résultat, et non la cause (ex : visibilité d’une pop in vs
fonction qui la déclenche en JS)
● Compatibilité (commentaires, Jquery, listeners, isVisible…)
Bilan : avantages et inconvénients des deux méthodes
+ -
Passe plat
● Plus performant (si bien
fait)
● C’est la faute des dèvs si
ça pète
● Peu de flexibilité (ou alors
fixes un peu sales)
● Les dèvs vous détestent
● Zéro intérêt d’utiliser un
TMS
#Yolo
● Indépendance vis-à-vis
des releases
● Fun
● Dépendance vis-à-vis de la
structure de la page
● Performance
● Les dèvs vous détestent
La question qui tue : comment trouver le bon équilibre?
Mon parti pris : approche par élimination
C’est OK de scrapper sauf si le scrapping génère :
● Des problèmes de performance
● Une imprécision dans la mesure
● Des incompatibilités en JS
(ces cas se recoupent très souvent)
● Pas d’autre choix (élément non répercuté en front)
Problèmes de performance (ex : tracking visibilité pop-in)
Problèmes de performance (ex : tracking visibilité pop-in)
Sale (tourne en boucle)
+ dépendance à
Jquery
Imprécision dans la mesure (ex : tracking menu déroulant)
Imprécision dans la mesure (ex : tracking menu déroulant)
On pourrait cibler l’ID pour tracker
le clic, mais…
-Si le volet ne se déroule pas?
-Si on veut juste tracker
l’ouverture, et pas la fermeture?
Imprécision dans la mesure (ex : tracking menu déroulant)
Le Data Layer est alimenté au
moment où se déclenche la fonction
qui déroule la description du produit
Problèmes de compatibilité en JS (ex : temps de chargement)
API Navigation Timing
pas compatible avec
les vieilles versions d’IE
Les console.log font
péter certaines
versions d’IE (et puis il
faut les éviter, c’est un
peu sale de toute
façon)
Problèmes de compatibilité en JS (ex : temps de chargement)
Dans le doute, on wrappe
toutes nos fonctions dans
un try catch, et on loggue
les erreurs
Il nous reste quand même des choses sympas à faire
● Listener des clics via un attribut CSS “data-xxxx” et
querySelectorAll
● Tracking de la visibilité des éléments avec hunt.js
● Scrapping sans scrupule d’éléments forcément durables de la
page : title, meta, URLs…
● Calculs d’éléments de scope user avec le local storage
Les listeners de clics et d’autres trucs (sans Jquery!)
Les listeners de clics et d’autres trucs (sans Jquery!)
Les attributs
‘data-xxxx’ disposent
de leurs propriétés
nativement
récupérables en JS
#pratique
hunt.js, la librairie super cool pour la visibilité des éléments
https://goo.gl/tPzCmo
hunt.js dans la pratique
On commence par
appeler la librairie
au sein de GTM...
hunt.js dans la pratique
...et puis on fait des trucs avec
(ex : scroll jusqu’à la visibilité
d’un élément)
Les éléments du DOM qu’on peut scrapper sans scrupule
Meta robots (utile pour le SEO)
Les éléments du DOM qu’on peut scrapper sans scrupule
● Eléments d’URLs (si elles ne changent pas tous les 4 matins)
● Meta desc (et autres meta…)
● Tracking des 404 (via leur attribut “title”, qui en général ne bouge
pas)
● etc...
Le local storage pour calculer des éléments niveau user
On incrémente un local
storage à chaque action
sociale (tag déclenché en
séquentiel)
Mais je vous vois déjà venir
“Ouais OK t’es bien gentil mais on reste dépendant de la structure du
DOM donc bon moi je veux pas trop m’engager. “
“Et puis bon l’engagement ça m’a toujours fait peur. Regarde, par
exemple avec Cindy qui était en 1ère ES4 4 ça aurait pu marcher, mais
je pense que dans la vie on avait des buts différents, et qu’elle
cherchait vraiment quelque chose sur le long terme”
Tout est possible à une seule condition
DO CU MEN TER
Pas besoin de faire des plans de marquage de 500 pages. Deux
onglets dans une spreadsheet suffisent :
● Alimentation du Data Layer (classique)
● Dépendances front (moins classique, mais pourtant simple)
Doc de l’alimentation du Data Layer
Doc des dépendances front
Pour conclure
● Tout est possible…
● ...à condition de bien documenter…
● ...et d’avoir une gouvernance solide sur ce qui est implémenté en
dur / via GTM.
● Faites faire des code reviews à vos dèvs
Merci !
Aristide Riou | @aristweet

Weitere ähnliche Inhalte

Andere mochten auch

HTTPS The Road To A More Secure Web / SEOCamp Paris
HTTPS The Road To A More Secure Web / SEOCamp ParisHTTPS The Road To A More Secure Web / SEOCamp Paris
HTTPS The Road To A More Secure Web / SEOCamp ParisAysun Akarsu
 
Google AMP 1 an après : quel bilan, quelles perspectives ?
Google AMP 1 an après : quel bilan, quelles perspectives ?Google AMP 1 an après : quel bilan, quelles perspectives ?
Google AMP 1 an après : quel bilan, quelles perspectives ?Virginie Clève - largow ☕️
 
Les défauts de WordPress pour le SEO
Les défauts de WordPress pour le SEOLes défauts de WordPress pour le SEO
Les défauts de WordPress pour le SEODaniel Roch - SeoMix
 
Measuring Content Marketing
Measuring Content MarketingMeasuring Content Marketing
Measuring Content MarketingDavid Iwanow
 
Organiser un projet à l’international : un Pari Fou
Organiser un projet à l’international : un Pari FouOrganiser un projet à l’international : un Pari Fou
Organiser un projet à l’international : un Pari FouOpen-linking
 
Pourquoi mes clients n'appliquent pas mes recommandations SEO (mais pas que ...)
Pourquoi mes clients n'appliquent pas mes recommandations SEO (mais pas que ...)Pourquoi mes clients n'appliquent pas mes recommandations SEO (mais pas que ...)
Pourquoi mes clients n'appliquent pas mes recommandations SEO (mais pas que ...)Thomas BART
 
La mise en cache et ses secrets
La mise en cache et ses secretsLa mise en cache et ses secrets
La mise en cache et ses secretsAymeric Bouillat
 
L'analytics pour les publishers conférence aadf
L'analytics pour les publishers   conférence aadfL'analytics pour les publishers   conférence aadf
L'analytics pour les publishers conférence aadfPrénom Nom de famille
 
Trabajo de atención primaria
Trabajo de atención primariaTrabajo de atención primaria
Trabajo de atención primariaMarcel Miranda
 
Seo camp paris - A chaque enjeu, sa stratégie - Tips & REX
Seo camp paris - A chaque enjeu, sa stratégie - Tips & REX Seo camp paris - A chaque enjeu, sa stratégie - Tips & REX
Seo camp paris - A chaque enjeu, sa stratégie - Tips & REX Intuiti
 
MeasureCamp Paris #3 : session de clôture
MeasureCamp Paris #3 : session de clôtureMeasureCamp Paris #3 : session de clôture
MeasureCamp Paris #3 : session de clôtureNicolas Malo
 
Suivi des conversions avancé avec Google Analytics et Google Tag Manager sur ...
Suivi des conversions avancé avec Google Analytics et Google Tag Manager sur ...Suivi des conversions avancé avec Google Analytics et Google Tag Manager sur ...
Suivi des conversions avancé avec Google Analytics et Google Tag Manager sur ...Bruno Guyot
 
Mise en place d'un suivi des conversions Adwords avancé avec GTM sur Wordpress
Mise en place d'un suivi des conversions Adwords avancé avec GTM sur WordpressMise en place d'un suivi des conversions Adwords avancé avec GTM sur Wordpress
Mise en place d'un suivi des conversions Adwords avancé avec GTM sur WordpressBruno Guyot
 
Installation de Google Tag Manager sur Wordpress et suivi avancé Google Analy...
Installation de Google Tag Manager sur Wordpress et suivi avancé Google Analy...Installation de Google Tag Manager sur Wordpress et suivi avancé Google Analy...
Installation de Google Tag Manager sur Wordpress et suivi avancé Google Analy...Bruno Guyot
 
Top Schools in Dehradun
Top Schools in DehradunTop Schools in Dehradun
Top Schools in Dehradunamit kumar
 
Boarding schools in Dehradun
Boarding schools in DehradunBoarding schools in Dehradun
Boarding schools in Dehradunamit kumar
 

Andere mochten auch (18)

HTTPS The Road To A More Secure Web / SEOCamp Paris
HTTPS The Road To A More Secure Web / SEOCamp ParisHTTPS The Road To A More Secure Web / SEOCamp Paris
HTTPS The Road To A More Secure Web / SEOCamp Paris
 
Google AMP 1 an après : quel bilan, quelles perspectives ?
Google AMP 1 an après : quel bilan, quelles perspectives ?Google AMP 1 an après : quel bilan, quelles perspectives ?
Google AMP 1 an après : quel bilan, quelles perspectives ?
 
Les défauts de WordPress pour le SEO
Les défauts de WordPress pour le SEOLes défauts de WordPress pour le SEO
Les défauts de WordPress pour le SEO
 
Measuring Content Marketing
Measuring Content MarketingMeasuring Content Marketing
Measuring Content Marketing
 
Organiser un projet à l’international : un Pari Fou
Organiser un projet à l’international : un Pari FouOrganiser un projet à l’international : un Pari Fou
Organiser un projet à l’international : un Pari Fou
 
Pourquoi mes clients n'appliquent pas mes recommandations SEO (mais pas que ...)
Pourquoi mes clients n'appliquent pas mes recommandations SEO (mais pas que ...)Pourquoi mes clients n'appliquent pas mes recommandations SEO (mais pas que ...)
Pourquoi mes clients n'appliquent pas mes recommandations SEO (mais pas que ...)
 
Mots-clés, au delà du volume de recherche
Mots-clés, au delà du volume de rechercheMots-clés, au delà du volume de recherche
Mots-clés, au delà du volume de recherche
 
La mise en cache et ses secrets
La mise en cache et ses secretsLa mise en cache et ses secrets
La mise en cache et ses secrets
 
L'analytics pour les publishers conférence aadf
L'analytics pour les publishers   conférence aadfL'analytics pour les publishers   conférence aadf
L'analytics pour les publishers conférence aadf
 
Trabajo de atención primaria
Trabajo de atención primariaTrabajo de atención primaria
Trabajo de atención primaria
 
Seo camp paris - A chaque enjeu, sa stratégie - Tips & REX
Seo camp paris - A chaque enjeu, sa stratégie - Tips & REX Seo camp paris - A chaque enjeu, sa stratégie - Tips & REX
Seo camp paris - A chaque enjeu, sa stratégie - Tips & REX
 
MeasureCamp Paris #3 : session de clôture
MeasureCamp Paris #3 : session de clôtureMeasureCamp Paris #3 : session de clôture
MeasureCamp Paris #3 : session de clôture
 
Suivi des conversions avancé avec Google Analytics et Google Tag Manager sur ...
Suivi des conversions avancé avec Google Analytics et Google Tag Manager sur ...Suivi des conversions avancé avec Google Analytics et Google Tag Manager sur ...
Suivi des conversions avancé avec Google Analytics et Google Tag Manager sur ...
 
Mise en place d'un suivi des conversions Adwords avancé avec GTM sur Wordpress
Mise en place d'un suivi des conversions Adwords avancé avec GTM sur WordpressMise en place d'un suivi des conversions Adwords avancé avec GTM sur Wordpress
Mise en place d'un suivi des conversions Adwords avancé avec GTM sur Wordpress
 
Installation de Google Tag Manager sur Wordpress et suivi avancé Google Analy...
Installation de Google Tag Manager sur Wordpress et suivi avancé Google Analy...Installation de Google Tag Manager sur Wordpress et suivi avancé Google Analy...
Installation de Google Tag Manager sur Wordpress et suivi avancé Google Analy...
 
Seo camp2017 Marguerite Leenhardt
Seo camp2017 Marguerite LeenhardtSeo camp2017 Marguerite Leenhardt
Seo camp2017 Marguerite Leenhardt
 
Top Schools in Dehradun
Top Schools in DehradunTop Schools in Dehradun
Top Schools in Dehradun
 
Boarding schools in Dehradun
Boarding schools in DehradunBoarding schools in Dehradun
Boarding schools in Dehradun
 

Ähnlich wie Devenir best friend forever avec vos développeurs measure camp nantes 2016

45 minutes pour comprendre Google Tag Manager… et aller plus loin ! - Ronan C...
45 minutes pour comprendre Google Tag Manager… et aller plus loin ! - Ronan C...45 minutes pour comprendre Google Tag Manager… et aller plus loin ! - Ronan C...
45 minutes pour comprendre Google Tag Manager… et aller plus loin ! - Ronan C...WebCampDay
 
The worst practices for Magento
The worst practices for MagentoThe worst practices for Magento
The worst practices for MagentoLe Bot Christophe
 
Expresso Rennes Atalante - Html5 / Css3D - 17 sept. 2013
Expresso Rennes Atalante - Html5 / Css3D - 17 sept. 2013Expresso Rennes Atalante - Html5 / Css3D - 17 sept. 2013
Expresso Rennes Atalante - Html5 / Css3D - 17 sept. 2013MBA Multimedia
 
HTML5/CSS3D - Expresso Rennes Atalante - 17 sept. 2013
HTML5/CSS3D - Expresso Rennes Atalante - 17 sept. 2013HTML5/CSS3D - Expresso Rennes Atalante - 17 sept. 2013
HTML5/CSS3D - Expresso Rennes Atalante - 17 sept. 2013Julien LE THUAUT
 
Conférence Shinken à SophiaConf2012 (Jean Gabès)
Conférence Shinken à SophiaConf2012 (Jean Gabès)Conférence Shinken à SophiaConf2012 (Jean Gabès)
Conférence Shinken à SophiaConf2012 (Jean Gabès)Jean Gabès
 
Responsible Design ou Le web moderne à destination de tous
Responsible Design ou Le web moderne à destination de tousResponsible Design ou Le web moderne à destination de tous
Responsible Design ou Le web moderne à destination de tousjwajsberg
 
JavaScript Devoxx France 2013
JavaScript Devoxx France 2013JavaScript Devoxx France 2013
JavaScript Devoxx France 2013Romain Linsolas
 
Réussir son projet Drupal
Réussir son projet DrupalRéussir son projet Drupal
Réussir son projet DrupalAdyax
 
L'impact du Responsive Web Design sur vos équipes projet - Mathieu Parisot - ...
L'impact du Responsive Web Design sur vos équipes projet - Mathieu Parisot - ...L'impact du Responsive Web Design sur vos équipes projet - Mathieu Parisot - ...
L'impact du Responsive Web Design sur vos équipes projet - Mathieu Parisot - ...SOAT
 
Gérer l'inconnu avec peu de moyens par le développement itératif - L'agili...
Gérer l'inconnu avec peu de moyens par le développement itératif - L'agili...Gérer l'inconnu avec peu de moyens par le développement itératif - L'agili...
Gérer l'inconnu avec peu de moyens par le développement itératif - L'agili...Benoit St-André
 
Tester du legacy code, mission impossible ?
Tester du legacy code, mission impossible ?Tester du legacy code, mission impossible ?
Tester du legacy code, mission impossible ?CGI Québec Formation
 
"WP Super Cache Rocket Reloaded…" – WordCamp Bordeaux 2019
"WP Super Cache Rocket Reloaded…" – WordCamp Bordeaux 2019"WP Super Cache Rocket Reloaded…" – WordCamp Bordeaux 2019
"WP Super Cache Rocket Reloaded…" – WordCamp Bordeaux 2019Boris SCHAPIRA
 
Les frameworks flashlike javascript
Les frameworks flashlike javascriptLes frameworks flashlike javascript
Les frameworks flashlike javascriptekito
 
Du JavaScript propre ? Challenge accepted ! @Devoxx France 2013
Du JavaScript propre ? Challenge accepted ! @Devoxx France 2013Du JavaScript propre ? Challenge accepted ! @Devoxx France 2013
Du JavaScript propre ? Challenge accepted ! @Devoxx France 2013Julien Jakubowski
 
Retour d'expérience développement jeux android
Retour d'expérience développement jeux androidRetour d'expérience développement jeux android
Retour d'expérience développement jeux androidjodem
 
Design systems : Bench et reco sur les outils
Design systems : Bench et reco sur les outilsDesign systems : Bench et reco sur les outils
Design systems : Bench et reco sur les outilsIdean France
 
Evolutions et nouveaux outils SEO
Evolutions et nouveaux outils SEOEvolutions et nouveaux outils SEO
Evolutions et nouveaux outils SEODimitri Brunel
 
Meetup Trello Elegantt
Meetup Trello EleganttMeetup Trello Elegantt
Meetup Trello EleganttFastory
 

Ähnlich wie Devenir best friend forever avec vos développeurs measure camp nantes 2016 (20)

45 minutes pour comprendre Google Tag Manager… et aller plus loin ! - Ronan C...
45 minutes pour comprendre Google Tag Manager… et aller plus loin ! - Ronan C...45 minutes pour comprendre Google Tag Manager… et aller plus loin ! - Ronan C...
45 minutes pour comprendre Google Tag Manager… et aller plus loin ! - Ronan C...
 
The worst practices for Magento
The worst practices for MagentoThe worst practices for Magento
The worst practices for Magento
 
Expresso Rennes Atalante - Html5 / Css3D - 17 sept. 2013
Expresso Rennes Atalante - Html5 / Css3D - 17 sept. 2013Expresso Rennes Atalante - Html5 / Css3D - 17 sept. 2013
Expresso Rennes Atalante - Html5 / Css3D - 17 sept. 2013
 
HTML5/CSS3D - Expresso Rennes Atalante - 17 sept. 2013
HTML5/CSS3D - Expresso Rennes Atalante - 17 sept. 2013HTML5/CSS3D - Expresso Rennes Atalante - 17 sept. 2013
HTML5/CSS3D - Expresso Rennes Atalante - 17 sept. 2013
 
Conférence Shinken à SophiaConf2012 (Jean Gabès)
Conférence Shinken à SophiaConf2012 (Jean Gabès)Conférence Shinken à SophiaConf2012 (Jean Gabès)
Conférence Shinken à SophiaConf2012 (Jean Gabès)
 
Responsible Design ou Le web moderne à destination de tous
Responsible Design ou Le web moderne à destination de tousResponsible Design ou Le web moderne à destination de tous
Responsible Design ou Le web moderne à destination de tous
 
JavaScript Devoxx France 2013
JavaScript Devoxx France 2013JavaScript Devoxx France 2013
JavaScript Devoxx France 2013
 
Réussir son projet Drupal
Réussir son projet DrupalRéussir son projet Drupal
Réussir son projet Drupal
 
L'impact du Responsive Web Design sur vos équipes projet - Mathieu Parisot - ...
L'impact du Responsive Web Design sur vos équipes projet - Mathieu Parisot - ...L'impact du Responsive Web Design sur vos équipes projet - Mathieu Parisot - ...
L'impact du Responsive Web Design sur vos équipes projet - Mathieu Parisot - ...
 
Javascript proprement
Javascript proprementJavascript proprement
Javascript proprement
 
Sulu LE CMS Ultime
Sulu LE CMS UltimeSulu LE CMS Ultime
Sulu LE CMS Ultime
 
Gérer l'inconnu avec peu de moyens par le développement itératif - L'agili...
Gérer l'inconnu avec peu de moyens par le développement itératif - L'agili...Gérer l'inconnu avec peu de moyens par le développement itératif - L'agili...
Gérer l'inconnu avec peu de moyens par le développement itératif - L'agili...
 
Tester du legacy code, mission impossible ?
Tester du legacy code, mission impossible ?Tester du legacy code, mission impossible ?
Tester du legacy code, mission impossible ?
 
"WP Super Cache Rocket Reloaded…" – WordCamp Bordeaux 2019
"WP Super Cache Rocket Reloaded…" – WordCamp Bordeaux 2019"WP Super Cache Rocket Reloaded…" – WordCamp Bordeaux 2019
"WP Super Cache Rocket Reloaded…" – WordCamp Bordeaux 2019
 
Les frameworks flashlike javascript
Les frameworks flashlike javascriptLes frameworks flashlike javascript
Les frameworks flashlike javascript
 
Du JavaScript propre ? Challenge accepted ! @Devoxx France 2013
Du JavaScript propre ? Challenge accepted ! @Devoxx France 2013Du JavaScript propre ? Challenge accepted ! @Devoxx France 2013
Du JavaScript propre ? Challenge accepted ! @Devoxx France 2013
 
Retour d'expérience développement jeux android
Retour d'expérience développement jeux androidRetour d'expérience développement jeux android
Retour d'expérience développement jeux android
 
Design systems : Bench et reco sur les outils
Design systems : Bench et reco sur les outilsDesign systems : Bench et reco sur les outils
Design systems : Bench et reco sur les outils
 
Evolutions et nouveaux outils SEO
Evolutions et nouveaux outils SEOEvolutions et nouveaux outils SEO
Evolutions et nouveaux outils SEO
 
Meetup Trello Elegantt
Meetup Trello EleganttMeetup Trello Elegantt
Meetup Trello Elegantt
 

Devenir best friend forever avec vos développeurs measure camp nantes 2016

  • 1. Devenir best friend forever avec vos développeurs Comment faire une implémentation bulletproof de vos outils de webanalytics Aristide Riou | @aristweet Measure Camp Nantes 05 novembre 2016
  • 2. Pourquoi cette présentation? En un mot : nous sous-exploitons les outils de tag management Et ça m’énerve.
  • 3. Un peu d’histoire... Pour les plus jeunes… Il y a une époque où les plans de marquage ressemblaient à ça…
  • 4.
  • 5. Et c’était. Juste. Une fucking tannée. ● Mise en prod pour chaque modification (ou alors modifs périlleuses dans les filtres de GA, processing rules dans Omniture... #nostalgie) ● Expertise portée par les développeurs (donc techniques plus ou moins fiables) ● Recette / QA plus complexe (pas de Data Layer comme couche intermédiaire “juge de paix”) ● Encore aujourd’hui, difficultés à migrer vers GTM et “nettoyer” des vieilles implémentations
  • 6.
  • 7. Et puis les TMS sont arrivés ● “Seamless tracking integration” ● “All in one tag management” ● “A single snippet required” ● “Happiness, success, money and georgious chicks”
  • 8. Sauf que...ça ne s’est pas vraiment passé comme ça On a vu arriver 2 types d’approches : ● L’approche “moi pas toucher code site. Internet. HTML. Tout ça” (80%) ● L’approche “#yolo” (20%)
  • 9. L’approche “passe plat” (les 80% tristes) GTM ne fait que transiter les informations
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15. “Ouais mais c’est plus durable” FAUX! FAUX! ULTRA FAUX!!! ● On appelle une librairie (gtm.js) pour NADA ● On fait porter des informations orientées GA (ou Adobe, AT…) à un data layer qui est censé être agnostique ● On continue à donner la responsabilité aux développeurs (qui ont très franchement mieux à faire) ● Certes, on peut faire des fixes...mais du coup, c’est franchement du bricolage.
  • 16. L’approche #yolo (les 20% cools, mais un peu fous) Rien n’est inséré en dur, tout est fait via le TMS. ● Scrapping de contenu pour alimenter des custom dims (header, h1, h2…) basé sur la structure du DOM. ● Listeners de clics via des classes, des IDs, des attributs CSS divers… ● Tracking d’affichage de pop ins via des fonctions récursives qui attendent la visibilité d’un élément ● Trucs franchement sales et un peu honteux
  • 17. Listener de clic basé sur un attribut CSS un peu random
  • 18. Listener de scroll en se basant sur la position d’un CtA
  • 19. Scrapping très crado d’evars issues d’Adobe Analytics
  • 20. C’est franchement fun, mais dangereux ● La structure du DOM peut bouger à tout moment ● Problèmes de performance ● On écoute le résultat, et non la cause (ex : visibilité d’une pop in vs fonction qui la déclenche en JS) ● Compatibilité (commentaires, Jquery, listeners, isVisible…)
  • 21. Bilan : avantages et inconvénients des deux méthodes + - Passe plat ● Plus performant (si bien fait) ● C’est la faute des dèvs si ça pète ● Peu de flexibilité (ou alors fixes un peu sales) ● Les dèvs vous détestent ● Zéro intérêt d’utiliser un TMS #Yolo ● Indépendance vis-à-vis des releases ● Fun ● Dépendance vis-à-vis de la structure de la page ● Performance ● Les dèvs vous détestent
  • 22. La question qui tue : comment trouver le bon équilibre?
  • 23. Mon parti pris : approche par élimination C’est OK de scrapper sauf si le scrapping génère : ● Des problèmes de performance ● Une imprécision dans la mesure ● Des incompatibilités en JS (ces cas se recoupent très souvent) ● Pas d’autre choix (élément non répercuté en front)
  • 24. Problèmes de performance (ex : tracking visibilité pop-in)
  • 25. Problèmes de performance (ex : tracking visibilité pop-in) Sale (tourne en boucle) + dépendance à Jquery
  • 26. Imprécision dans la mesure (ex : tracking menu déroulant)
  • 27. Imprécision dans la mesure (ex : tracking menu déroulant) On pourrait cibler l’ID pour tracker le clic, mais… -Si le volet ne se déroule pas? -Si on veut juste tracker l’ouverture, et pas la fermeture?
  • 28. Imprécision dans la mesure (ex : tracking menu déroulant) Le Data Layer est alimenté au moment où se déclenche la fonction qui déroule la description du produit
  • 29. Problèmes de compatibilité en JS (ex : temps de chargement) API Navigation Timing pas compatible avec les vieilles versions d’IE Les console.log font péter certaines versions d’IE (et puis il faut les éviter, c’est un peu sale de toute façon)
  • 30. Problèmes de compatibilité en JS (ex : temps de chargement) Dans le doute, on wrappe toutes nos fonctions dans un try catch, et on loggue les erreurs
  • 31. Il nous reste quand même des choses sympas à faire ● Listener des clics via un attribut CSS “data-xxxx” et querySelectorAll ● Tracking de la visibilité des éléments avec hunt.js ● Scrapping sans scrupule d’éléments forcément durables de la page : title, meta, URLs… ● Calculs d’éléments de scope user avec le local storage
  • 32. Les listeners de clics et d’autres trucs (sans Jquery!)
  • 33. Les listeners de clics et d’autres trucs (sans Jquery!) Les attributs ‘data-xxxx’ disposent de leurs propriétés nativement récupérables en JS #pratique
  • 34. hunt.js, la librairie super cool pour la visibilité des éléments https://goo.gl/tPzCmo
  • 35. hunt.js dans la pratique On commence par appeler la librairie au sein de GTM...
  • 36. hunt.js dans la pratique ...et puis on fait des trucs avec (ex : scroll jusqu’à la visibilité d’un élément)
  • 37. Les éléments du DOM qu’on peut scrapper sans scrupule Meta robots (utile pour le SEO)
  • 38. Les éléments du DOM qu’on peut scrapper sans scrupule ● Eléments d’URLs (si elles ne changent pas tous les 4 matins) ● Meta desc (et autres meta…) ● Tracking des 404 (via leur attribut “title”, qui en général ne bouge pas) ● etc...
  • 39. Le local storage pour calculer des éléments niveau user On incrémente un local storage à chaque action sociale (tag déclenché en séquentiel)
  • 40. Mais je vous vois déjà venir “Ouais OK t’es bien gentil mais on reste dépendant de la structure du DOM donc bon moi je veux pas trop m’engager. “ “Et puis bon l’engagement ça m’a toujours fait peur. Regarde, par exemple avec Cindy qui était en 1ère ES4 4 ça aurait pu marcher, mais je pense que dans la vie on avait des buts différents, et qu’elle cherchait vraiment quelque chose sur le long terme”
  • 41. Tout est possible à une seule condition DO CU MEN TER Pas besoin de faire des plans de marquage de 500 pages. Deux onglets dans une spreadsheet suffisent : ● Alimentation du Data Layer (classique) ● Dépendances front (moins classique, mais pourtant simple)
  • 42. Doc de l’alimentation du Data Layer
  • 44. Pour conclure ● Tout est possible… ● ...à condition de bien documenter… ● ...et d’avoir une gouvernance solide sur ce qui est implémenté en dur / via GTM. ● Faites faire des code reviews à vos dèvs
  • 45. Merci ! Aristide Riou | @aristweet