Article écrit par Aristide Riou, consultant satyrique mais cordial
Après avoir passé 2 ans (presque) sans écrire (Webalab, petit ange parti trop tôt 👼 ), empêtré que j’étais entre la segmentation EAN des produits humides du monde du petfood, les financements OPCO pour des formations GA4, et trop de clics sur des boutons “Continuer sans accepter”, je voulais revenir au turbin par un post “coup de gueule” sur l’état de l’industrie de la webanalytics (j’espère secrètement faire le buzz et générer un reach digne d’un influenceur en morning routine via le WebTrois). Et plus particulièrement, je veux parler des tensions qui existent autour de Google Analytics.
Alors je ne m’exprimerai pas (sur ce post en tout cas) sur le cas de la licéité de GA et de la communication toujours parfaitement limpide de la CNIL à ce sujet. Tout a été écrit sur le sujet, et la situation est de toute façon beaucoup trop floue pour que mon post ne soit pas obsolète mardi prochain.
Non, pour une fois, faisons abstraction de cette affaire, et contentons nous de parler de l’outil en lui-même. Parce que pour le coup, il y a des choses à dire.
“MER IL ET FOU”
Ensemble, nous allons faire une expérience sociale : prenez votre navigateur préféré (sauf si c’est Safari, dans ce cas allez juste réfléchir au moment où vous avez commencé à perdre votre dignité), allez sur le réseau social de votre choix, et cherchez “Google Analytics 4”. Je suis prêt à parier la qualification en Ligue Europa du Stade Rennais FC que plus de 80% des posts qui le mentionnent contiennent une proportion non négligeable d’expressions autour de “cet outil incompréhensible de ses grands morts je comprends rien où est le taux de rebond mdr”. Le champ lexical peut varier, mais vous avez l’ambiance.
Est ce que que GA4, est, comme l’affirment 97% des internautes (qui sont pourtant des gens très civilisés), une sombre purge? Un outil amené du tréfonds des enfer par Satan lui-même? Le pire fléau qu’ait connu l’humanité depuis le Fiat Multipla?
D’un côté, il y a cette interface. Ces rapports à l’ergonomie digne des meilleures releases d’impots.gouv.fr. Cette reporting identity que tout le monde comprend parfaitement (non) et qui est rétroactive (peut-être). Ces “seuils” qui s’immiscent dans vos rapports tels des démarcheurs téléphoniques qui veulent voler vos crédits CPF. Cette rétention des données passée à 2 mois sans préavis “parce que pourquoi pas” (source : la doc). Cette légendaire cardinalité qui décide que 50 000 valeurs uniques, c’est déjà pas mal. Ces rapports limités à 500 lignes parce que votre ordinateur n’est sans doute pas assez puissant pour lire un CSV de 504 commandes e-commerce. Consent Mode qui sert sûrement à quelque chose. Je crois.
Donc oui. Il y a comme qui dirait “2 3 trucs qui déconnent”.
SELECT * FROM HOPE
Et pourtant, GA4 offre une opportunité incroyable. Vous n’êtes pas sans le savoir, il est possible, pour un coût souvent très raisonnable, d’avoir accès aux données brutes de GA4 via BigQuery. Prenons un poil de recul sur le sujet : j’ai eu la chance de travailler dans différentes entreprises (Ouest France, notamment) où le carnet de chèques de la Direction était assez fourni pour se payer un GA360, et d’avoir accès aux données brutes dans UA. Mais j’ai aussi connu des cas où des sites n’avaient pas les moyens, et devaient mettre en place ce genre d’exports à la mano. Et autant vous dire que c’était une sacrée usine à gaz. A base de génération de timestamps à la volée. A base d’exports batchés pour contourner les limites de l’API. A base de “oui parfois c’est quand même échantillonné”. Un enfer, que je vous dis.
Et donc, GA4 arrive. Et dans GA4, vous n’avez plus besoin de payer un montant à 6 chiffres pour avoir accès à ce privilège. Entre temps, le pseudo SQL bizarre des débuts de BQ a laissé sa place à… bah, à du SQL tout ce qu’il y a de plus standard. A titre perso, je me suis sérieusement mis à BigQuery au moment où cette syntaxe est revenue “dans les clous”. Avec mon niveau de SQL dont le sommet datait des tuto du Site du Zéro en 2011, j’ai réussi à me mettre dedans en moins de 10 heures de pratique.
Alors oui, il faut comprendre comment marche UNNEST (la fonction, pas l’agence, sinon il y a un Notion pour ça). Oui, il faut réfléchir 3 secondes et demi pour intégrer le concept des Window functions. En effet, il faut accepter que vos requêtes sans le LIMIT ou WHERE qui vont bien peuvent être une cause de rupture de période d’essai tout à fait valable.
Mais croyez moi, si j’ai réussi à le faire, vous aussi vous pouvez y arriver.
Et quand vous allez réaliser que vous pourrez dans un premier temps récupérer vos rapports standards avec des requêtes très simples, mais surtout aller beaucoup plus loin, de façon très personnalisée, et vous affranchir des indicateurs certes malins, mais surtout ultra arbitraires, de GA3, vous vous rendrez compte à quel point vous disposez d’un outil avec un potentiel fou.
GA3, petit ange pas encore parti (mais trop tard)
Mais je sais que j’aurai beau m’agiter comme un diable, vous (et quand je dis vous, je pense toi, toi, et puis surtout, toi, là, au fond, aussi) restez fermement convaincus que “le SQL, c’est un truc de dev”. Et puis, surtout, vous m’avancerez l’argument, a priori tout à fait valable, que, après tout, dans GA3, vous aviez ces informations sans problème, en cliquant sur des boutons, et sans avoir besoin de vérifier que vous aviez bien échappé une quote dans votre requête pour ne pas faire péter le nom de la table et vous prendre dans les chicots une erreur SQL de l’enfer. Et c’est vrai que cliquer sur des boutons, c’est bien.
Et pourtant, dans GA3 :
- Vous vouliez avoir la récurrence des events au niveau utilisateur? Ah oui mais non il y avait les événements uniques, mais c’était sessionisé, pas au niveau de l’utilisateur.
- Vous vouliez avoir les custom dimension de base dans un rapport? Ah non mon bon Monsieur, il faut faire un custom report pour ça.
- Vous vouliez savoir combien de fois un goal était rempli par session? Il fallait aller dans l’admin (si vous aviez assez de droits) pour savoir comment était paramétré le goal. Et ensuite aller voir le nombre de vues uniques, ou d’événements uniques. C’est d’une logique implacable, je ne vois pas le problème.
- Vous vouliez 4 “slots” pour qualifier vos événements? Non mon bon Monsieur, ici c’est “Category / Action / Label”, c’est tout et c’est bien suffisant. Et puis quoi encore, vous vous croyez sur Cdiscount ou quoi?
- Et sinon, vous saviez ce qui se passait quand vous regardiez la métrique “session” sur une dimension de scope utilisateur? Probablement pas. Parce que personne n’a jamais rien compris au mélange des scopes.
- L’attribution des impressions sur les produits est à la session. C’est comme ça. Enhanced e-commerce, tout ça tout ça.
- Vous voulez partager un rapport? Pratique, l’URL le deeplinke! Ah, vous avez mis un segment dans le rapport? Ah bah du coup non. Enfin sauf si c’était un segment natif. Ou partagé. Mais ça dépend de vos droits.
- Ah oui, et cette combinaison d’un filtre et d’un data import qui marche dans certaines vues, fait il y a 6 ans par votre agence, et que vous n’osez pas supprimer de peur de tout casser, parce que le processing des données dans les vues GA3 reste ce qu’il y a de plus proche de la magie vaudou dans le monde réel?
Bref, j’ai beau ressentir une certaine tristesse face à la mise à la retraite de GA3, il est difficile de faire abstractions de ces usines à gaz qui ont été empilées les unes au dessus des autres au fil des années, et notamment l’esclavagisme de la sessionisation à tout va (c’est pas moi qui le dis). Le fond de ma pensée, c’est que nous avons tous (et moi le premier) développé un vrai syndrome de Stockholm vis à vis d’UA, où nous prenions pour acquis beaucoup d’éléments certes bien pratiques, mais qui étaient en réalité d’une logique plus que douteuse. Et que GA3 est au final un outil qui “fait son âge” pour prendre une expression très ringarde, parce que son data model date d’une époque où porter son téléphone portable à antenne à sa ceinture était perçu comme une pratique cool.
A contrario, le SQL, utilisé dans BQ donc, est un langage qui existe depuis plus de 30 ans, et dont les fondations n’ont pas bougé depuis. A partir du moment où vous traitez des données de votre outil d’analytics granulaires, vous rentrez dans une logique normalisée où vous pourrez très bien requêter de la même façon données CRM, logs serveur, j’en passe, et des meilleures. Ce que vous apprenez aujourd’hui vous servira encore probablement dans 10 ans. Et le jour où vous passerez de GA à Adobe, même s’il faudra refaire le schéma en entrée, la logique sera la même.
Peut-être même que votre Directeur Du Contrôle de Gestion viendra enfin manger à côté de vous à la cantine en se disant enfin que “les trucs de l’internet, là, c’est sérieux en fait”. Parce que lui, il aime les cross join (et aussi les cravates à pois, mais c’est une autre histoire). Et que le jour où vous vous commencerez à travailler avec les outils qu’utilisent les vrais adultes tels que DBT ou autres Airflow, vous serez dans un univers déjà un peu familier.
Accessoirement, ce n’est un secret pour personne : plus aucun ingénieur chez Google ne veut travailler sur la codebase Universal, dont certaines briques ont parfois pas loin de 30 ans, et certaines erreurs effarantes de design de leur part (le nombre de vues totalement open bar à tout hasard) font perdre des flots d’argent à Google (une PME en difficulté).
SARL Dumont Maçonnerie, Powered by the Blockchienne
Bien sûr, j’ai eu à de nombreuses reprises l’occasion de tenir ce discours lors de mes formations GA4 octroyées depuis l’année dernière au travers de notre beau pays, de Rennes à Strasbourg en passant par les Sables d’Olonne, et même des villes situées à proximité de la Bretagne comme Nantes (code postal 44000). Et le contre argument numéro 1, que j’entends tout à fait, surtout lorsque je parle à des agences, est le suivant :
“Ouais nan mais t’as vu, mon client il a un retainer mensuel chez moi de 34,99€ TTC, et la dernière fois que je lui ai parlé de GA il m’a demandé s’il pouvait connaître les numéros de fax des utilisateurs du site. C’est pas demain la veille que je vais lui faire faire du SQL, mon petit bonhomme.”
On peut donc aborder le sujet par différents angles :
- Avez-vous vraiment envie de parler de data à des clients qui ont 34,99€ à consacrer par mois à leur stratégie digitale?
- S’ils ne regardent leurs données GA que 3 fois par an, et qu’ils vont de toute façon voir les mêmes rapports à chaque fois, est-ce si compliqué de faire un petit Looker Studio de derrière les fagots pour les contenter? Ledit Looker Studio étant alimenté par BigQuery? Et que vous pourrez répliquer à l’INFINI en le facturant 11€ par mois de “frais de maintenance” (merci de faire des air quotes avec vos doigts pour vivre le moment à fond)
- L’interface fera très certainement le job pour des besoins de reporting aussi basiques
- Oh et puis merde, mettez Matomo
“Jveux un scooter où je fugue”
Alors, oui, je sais que vous êtes tous d’accord avec moi (ou alors que vous avez ragequit il y a bien longtemps pour retourner sur vos rapports ContentSquare qui, eux, vous donnent de vrais insights), mais je parlais de crise d’adolescence, et j’ai un peu dérivé. Revenons donc au sujet initial :
Les outils d’analytics, dans le sillage de Google Analytics et autres Webtrends (rire nerveux), ont été créés par des équipes marketing. A une époque où mettre un petit bout de JS dans les pages d’un site web était à la limite du hack, et n’était potentiellement même pas pris en compte par tous les navigateurs. A une époque où collecter de la donnée comportementale des utilisateurs était le summum de l’audace, bien avant l’iPhone, le Metaverse, et les vendeurs de formation en Immobilier Locatif à 997€.
Aujourd’hui, que vous le vouliez ou non, les données d’analytics sont des données qui doivent répondre au même schéma que votre logiciel d’enregistrement de caisse, vos ventes de voiture en concession, ou les données d’horodatage de vos employés dans le parking (je force peut-être un peu sur le dernier point, mais on se comprend). A ce titre, regardons un peu ce qui se passe avec les données que vous collectez dans GA 3 :
- Après que le hit soit envoyé depuis le navigateur, il est processé par les règles de calcul de Google, et possiblement invalidé. Et bien sûr, vous savez voir “à l’instinct” que votre tag d’ajout panier est incorrect dans le network puisque la valeur de la clé “quantity” est mise sous forme de string, et non pas de float. C’est tout de même une évidence, tout le monde sait ça. Ajouter un contrôle des hits sur le front, ça serait vraiment overkill.
- Si vous avez activé la détection du spam dans votre vue, les hits seront purement et simplement exclus. Vous n’avez aucun moyen de savoir comment fonctionne ce filtre, bien évidemment.
- Peut-être que vous avez du data import. Peut-être que ce data import est pris en compte au moment de la collecte, peut-être rétroactivement. Peut-être pas.
- Vous pouvez très bien créer une règle de nommage de vos events dans GTM. Ou bien le faire via des filtres de réécriture dans l’admin de vos vues. Et bien sûr, c’est mieux de faire un combo des deux. Parce que vous êtes un vrai. Un dur. Un vieux de la vieille.
Vous avez compris l’idée : en termes de “data lineage” (j’utilise des termes de data eng pour m’intégrer socialement chez UnNest) c’est juste une énorme purge, qui, telle la Sagrada Familia ou le 11 du Paris Saint Germain, a été construite de façon chaotique au fil des années.
Et cela marche dans l’autre sens! C’est à dire que ce truc mystérieux qui s’appelle 𝔏'𝔦𝔫𝔱𝔢𝔯𝔫𝔢𝔱 est peut-être même déjà en train d’être pris en compte dans les modèles de données des outils modernes tels que SAP et consorts.
Don’t be evil
Finalement, et même si je suis plutôt vindicatif dans l’histoire, je pense que s’il y a bien un coupable dans l’histoire, ce n’est pas le Colonel Moutarde, mais bien Google lui-même.
Alors oui, je l’ai dit, j’éprouve une infinie gratitude relativement au fait que les données brutes de GA dans BQ soient accessibles à tous à tous ceux qui ont une carte bleue. En revanche, je pense que la roadmap de GA4, depuis sa beta, est d’une clarté digne de la saison 7 de Game of Thrones (enfin surtout la fin, le début est correct mais bon à partir de l’épisode 4 c’est vraiment nimp, mais je m’égare) : il est de notoriété publique que Google parle soit aux gens du marketing (ceux qui dépensent 67 milliards d’euros par an sur Google Ads pour acheter des conversions qu’ils auraient de toute façon obtenues), soit aux gens de la tech (ceux qui ne disent pas “Kubernetes” mais “K8S” parce que ce sont des vrais).
Et chez Google, dire “oui bah on est sympas on a mis les données brutes à dispo dans BigQuery”, eh bien ce n’est pas ça qui aide à montrer aux annonceurs qu’ils ont raison de faire confiance à Google pour leurs campagnes de notoriété (dont le KPI est le nombre de notoriétés par habitant, source rapports internes et confidentiels©️).
Bref, cela n’engage que moi, mais si j’étais à la place de Sundar Pichai, je ferai 3 choses :
- Supprimer la partie interface de GA4. Genre globalement. Tout brûler et l’oublier à jamais.
- En contrepartie, rendre gratuit et systématique l’export vers BQ, ou tout du moins accorder un quota généreux de stockage et de requêtes par pure charité chrétienne.
- Utiliser uniquement Looker Studio via BQ en guise d’interface, en mettant à dispo un template par défaut qui reprend les rapports les + courants de GA3 histoire de ne pas trop paniquer les gens, et de leur mettre le pied à l’étrier du SQL de façon bienveillante
(Oui, je sais, je serai un Sundar Pichai un peu plus dark et radical que le vrai Sundar Pichai. Et d’ailleurs, ma 2nde mesure serait de remplacer tous les résultats de SERP à vocation commerciale par un lien disant “allez voir sur Reddit, de toute façon tout le reste des résultats sont générés par ChatGPT ou de mauvais rédacteurs et blindés de lien d’affiliation”)
Le beurre et l’argent du beurre (et les billets)
Bien sûr, je vous vois venir, avec vos sabots de la taille d’un 45 tonnes :
“Ouais mais chez Cogip 2000 on a Piano, et l’interface elle est trop cool. Nous on peut cliquer sur des boutons. Et en plus ils sont copains avec la CNIL, nananère”
Bien sûr, vous avez de l’argent, et oui, dans Piano (qui vous coûte un billet) vous pouvez aussi récupérer les infos en cliquant sur des boutons. Les boutons, c’est bien. Piano, c’est bien. Et dans Piano, vous avez aussi les données brutes dans Snowflake (qui vous coûte un second billet, ce qui fait au total deux billets), qui est un peu comme BQ. Et vous pourrez même faire une formation à vos collègues de l’équipe 𝔾𝕣𝕠𝕨𝕥𝕙 𝕙𝕒𝕔𝕜𝕚𝕟𝕘 𝕞𝕒𝕣𝕜𝕖𝕥𝕚𝕟𝕘 🚀🚀🔥🔥 qui eux-mêmes sont des énormes fans du clic sur des boutons (et du taux d’engagement sur LinkedIn).
Et que donc, je sais très bien que si c’est gratuit c’est toi le produit, et qu’il est évident que l’implé Piano qui vous aura coûté 150 000€ de frais de licence et d’implémentation vous permettra d’avoir de la donnée de plus grande qualité (SANS DECONNER) que votre simple tag de conf GA4, merci mais gardons un peu les pieds sur terre, merci pour votre mansuétude.
Et peut-être aussi que vous avez Piwik Pro. Et que vu que vous êtes malin, vous descendez vos données Piwik Pro dans BQ pour ne pas vous faire gauler en flagrant délit de passage d’IP aux Etats Unis d’Amérique par la CNIL (si si, je vous ai vus. Et j’espère que vous culpabilisez chaque soir d’être une telle nuisance à la souveraineté numérique™️ de notre beau pays). Mais ça vous coûte quand même un petit billet (pas le même que celui de Piano, hein, mais disons sans trop dévoiler d’informations confidentielles que dans le premier cas nous sommes plus proches du billet violet que du billet gris).
Donc encore une fois, je suis infiniment conscient des énormes défauts de GA4, mais rappelez vous toujours que vous avez, pour un tarif très raisonnable (avec un export BQ), une interface médiocre couplée à un export de données brutes de bonne qualité. Dans UA, vous aviez une bonne interface, mais pas de données brutes. Quelle est la meilleure option? La question n’est pas, contrairement à l’adage populaire, vite répondue, mais je vous invite à y réfléchir.
Conclusion et appeau commercial dans la bienveillance
Bref, je pense et j’espère que ce billet vous aura incité à donner votre argent à UnNest. Parce que chez UnNest, il y a des gens qui cliquent sur des boutons (et je sais de source sûre que certains y prennent un certain plaisir), mais il y a aussi des gens qui savent aussi faire des requêtes SQL et autres joyeusetés dans le nuage. D’ailleurs, vous en connaissez beaucoup, des agences qui s’appellent pareil qu’une commande SQL?