Mesurer l’activité d’un magasin classique avec Google Universal Analytics

Salut les kids,

Voici un autre billet sur Google Analytics Universal, vu que vous avez l’air de les apprécier ;-)

Aujourd’hui, nous allons mesurer la performance d’un magasin classique (hors-ligne/offline) en testant 2 concepts:

  • la mesure des entrées/sorties des clients du magasin
  • mesure des opérations de caisse enregistreuse (achats)

Encore une fois, il s’agit d’une preuve de concept avec Google Analytics Universal, mais n’hésitez pas à l’imiter dans votre propre magasin.

Prêt(e) pour la suite? (oui je sais, vous êtes en train de trépigner de curiosité : D )

Concept et méthodologie

Mesure des clients entrants/sortants

raspberry pi sprite logoDans cet exemple, nous allons utiliser la reconnaissance visuelle avec des webcams de base / caméras IP pilotées par des mini-ordinateurs Raspberry Pi (le modèle B a plus de RAM et un port USB supplémentaire, entre autres). Ils sont peu coûteux (25€ pièce) et sont assez puissants pour un ordinateur de poche – ils sont de la taille d’une carte de crédit!

Oui, je sais: c’est plus drôle en anglais – Raspberry Pi ressemble phonétiquement en anglais à « tarte à la framboise » 😀

Raspberry Pi

Nous allons donc utiliser 2 « tartes »  équipées de webcams: une pour détecter les visiteurs entrants et une pour les visiteurs sortants. Une détection de mouvement se déclenche dès qu’un client passe devant la webcam.

webcam universal analytics blank
Fig 1. La webcam fixe toujours le même endroit (le lieu de passage).
Elle s’ennuie beaucoup 🙁
webcam universal analytics shopper
Fig. 2. Une cliente apparaît! Le magasin utilise la « Promo -20% sur tout. »
C’EST SUPER EFFICACE!

Si on récapitule: dès que l’image change pour la webcam, signalant le passage d’un client, on déclenche un appel (endpoint) Google Analytics Universal qui contient une éxécution d’événement Google Analytics.

Mesure des achats en caisse

Avant de commencer à hurler parce que votre caisse enregistreuse peut pas se connecter à l’Internet, encore une fois il s’agit ici d’un « proof of concept ». Il est probable que vous ne puissiez pas l’appliquer dans votre propre magasin ; dans ce billet, je ne fais que valider un concept. On va le répéter ensemble: un concept. Mais je vous rassure, c’est dans le domaine du faisable.

Dans notre exemple, nous allons utiliser le logiciel open source de caisse enregistreuse. Utiliser un logiciel libre signifie que nous pouvons modifier (détails plus bas) son code et ses fonctionnalités pour les besoins de l’expérience.

Notre objectif ici est d’envoyer un appel Google Analytics Universal qui enregistre une transaction de commerce électronique (et les articles du panier, inch’Allah). Selon que nous voulons voir un joli  flux de transactions dans les rapports en temps réel Google Analytics (pas encore dispo), nous pouvons envoyer les appels e-commerce dès le passage en caisse, ou de façon asynchrone en fin de journée, lors du traitement de la caisse et de l’établissement du rapport quotidien de ventes.

Votre liste de courses

Pour vous livrer vous aussi à cette expérience, vous aurez besoin de:

  • Un minimum de connaissances de programmation 🙂
  • Au moins 2 mini-ordinateurs Raspberry Pi avec leurs chargeurs.
    Chaque Raspberry Pi B coûte environ 25€ et les chargeurs coûtent environ 7€. En fait, vous pourriez utiliser un troisième Raspberry Pi pour gérer la caisse, avec un moniteur bas de gamme et un clavier USB.
  • 2 webcams USB
  • Des adaptateurs USB WiFi ou des cables réseau Ethernet
  • Du RedBull. Beaucoup de RedBull.

Au bout du compte, vous devriez vous en sortir pour moins de 200€. Piquez la CB de quelqu’un et bon shopping!

Installation

raspberry-pi-nano-wifi-dongle-3La complexité de l’installation peut varier sauf si vous utilisez des Rasperry Pi fraîchement installés. Attention, ce guide ne parle pas des dépendances entre l’OS et les différents modules. Vous êtes grand(e)s, regardez la documentation.

Vos Raspberry Pis vont devoir communiquer avec le « vaisseau-mère »  Google Analytics. suivant votre accès à Internet, vous devrez vous servir de bons vieux cables Ethernet ou des  dongles USB WiFi pour Rasperry Pi.

Détection de mouvement avec Motion

Pour la détection de mouvement, je me suis largement inspiré de ce tutoriel sur la détection de mouvement avec Raspberry Pi, qui utilise le module open-source Motion.

ASTUCE: pour de meilleurs résultats lors de la détection, placez une couleur unie comme image de fond pour la webcam pour chacun des points de passage des clients que vous voulez traquer. On parle ici de l’entrée et de la sortie (en l’occurence, la porte de mon bureau :P) mais vous avez maintenant deviné qu’on peut étendre le principe à un nombre important de webcams pour différents endroits du magasin.

Notez bien qu’avec Motion, vous n’avez pas forcément besoin de stocker l’image capturée par la webcam (/dev/null, mon amour). Le plus important c’est que Motion permet l’éxécution de commandes et de script dès qu’il détecte un mouvement. Il s’agit de commandes externes (External Commands) et elles sont référencées dans la documentation.

Ressources Raspberry Pi sur les webcams et la détection de mouvement:

En supposant que nous avons défini notre endpoint Universal Analytics (l’URL de l’appel de pixel), la commande externe à déclencher à chaque détection de mouvement peut être définie dans le fichier de configuration de Motion:

[code lang= »shell »]#External command to be executed when detecting motion (default: none)
execute wget %ENDPOINT%[/code]

Apparemment ce fichier de config ne gère pas de cas différents donc on aura bien un fichier de configuration par webcam, avec un endpoint en dur.

[code]http://www.google-analytics.com/collect
?v=1
&t=event // Type d’appel GA, ici un événement
&tid=UA-7634164-5 // ID de profil GA
&cid=555 // Numéro client anonyme (fixe)
&dh=monmagasin.com // mon "nom de domaine" =)
&ec=Détection%20Mouvement // Catégorie d’événement
&ea=Entrée // Action: Le client entre ou sort?
&ev=1 // Valeur arbitraire d’événement de 1
&cm5=1 // Statistique perso (compteur +1)[/code]

L’appel Google Analytics Universal ci-dessus est défini pour la webcam qui surveille l’entrée. Il vous suffit de changer cet appel pour l’autre webcam en remplaçant ‘Entrée’ par ‘Sortie’ dans la variable ‘ea’. Remarquez que je me sers de ma variable personnalisée Google Universal Analytics (#5) pour compte le nombre total de clients. Idéalement, mes rapports me montreront un chiffre à peu près égal entre clients entrants et sortants.

Et c’est tout! Il suffit de lancer le serveur Motion sur vos Raspberry Pis et les webcams feront le reste en déclenchant un appel GA lors de l’entrée/sortie de clients. Evidemment, si deux clients rentrent en marchant côte à côte, on ne comptera qu’un appel.

BONUS POUR LES FOUS FURIEUX: if votre magasin a un tourniquet, oubliez la webcam! A la place, branchez un accéléromètre sur votre Raspberry Pi, attachez le tout au tourniquet et comptez une entrée à chaque tour complet.

Comme à chaque fois, et comme j’aime le répéter, ce n’est pas de la physique quantique 😉

Mesure des achats en caisse

Maintenant, passons à la partie intéressante : les achats!

Pour les besoins de l’expérience, je vais utiliser LemonPOS, une solution open source de caisse enregistreuse / point de vente en C++. C’est moins sexy c’est sur, mais bon, j’essaie juste de valider un concept 😉

En fait, cette partie ressemble à s’y méprendre à une mise en place classique du code eCommerce.

Pour traquer les transactions, vous devrez évidemment modifier des fichiers pour déclencher les appels eCommerce Google Analytics. Dans LemonPOS, le fichier à modifier est dataAccess/azahar.cpp où deux fonctions doivent être changées ; il s’agit de Azahar::insertTransaction et Azahar::insertTransactionItem. Vous pouvez modifier ces fonctions pour qu’elles fassent des appels d’URL avec cURL, comme pour le billet précédent sur Google Universal Analytics [EN].

Voici à quoi vos endpoints devraient ressembler:

Transaction

[code]http://www.google-analytics.com/collect
?v=1
&t=transaction // Type d’appel GA
&tid=UA-7634164-5 // ID de profil
&cid=555 // numéro de client anonyme, généré par LemonPOS dans info.clientid
&dh=monmagasin.com // "nom de domaine"
&ta=Mon%20Magasin%20Classique // nom de boutique
&ti=123456789 // numéro de transaction , généré à la création, cf billet
&tr=2000 // total, dans LemonPOS: info.amount
&tt=100 // montant TVA, dans LemonPOS: info.totalTax
&ts=0 // Frais de livraison, inexistant dans LemonPOS (boutique physique)
&cm2= // Variable perso pour mesurer le montant, dans LemonPOS: info.amount[/code]

Notez bien que le numéro de transaction est généré dès que la requête INSERT est éxécutée, l’appel au endpoint doit donc avoir lieu après query2.exec(). Vous pouvez maintenant stocker ce numéro de transaction dans une variable globale: nous en aurons besoin ci-dessous pour le suivi des articles achetés.

Articles achetés

[code]http://www.google-analytics.com/collect
?v=1
&t=item // Type d’appel GA
&tid=UA-7634164-5 // ID de profil GA
&cid=555 // numéro de client généré par LemonPOS
&dh=monmagasin.com
&ti=123456789 // numéro de transaction généré par LemonPOS
&ic=W001234 // Numéro de produit
&in=Widget%20%2D%20XL%20White // Nom de produit
&ip=100 // prix unitaire
&iq=20 // Quantité
&iv=Widgets // Catégorie de produit

[/code]

LemonPOS, est écrit en C++, vous devrez donc recompiler votre projet dès que vous effectuez un changement dans le code. Pas très compliqué mais faites attention 😉

Si tout se passe comme prévu, vous devriez voir les données remonter dans votre compte Google Analytics. Félicitations!

webcam google universal analytics transactions real time

Pour conclure

Nous avons progressé sur notre chemin vers le Nerdvana nous pouvons maintenant mesurer l’activité de notre magasin « classique » « offline » « brick and mortar » « traditionnel » (rayez la mention inutile avec Google Analytics. Avec la bonne combinaison de dimensions et variables personnalisées, ce test de concept montrent que les commerçants classiques pourraient avoir rapidement accès au même reporting « sexy » pour leur magasin que les rapports de performance eCommerce des outils digital analytics.

Cela dit, Google Analytics ne remplacera sans doute pas le reporting fourni par les solutions de  back-office et autres progiciels (sic). Je fais confiance à ces derniers pour qu’ils continuent de s’alourdir et d’enlaidir – même si paradoxalement, ils accomplissent la tâche demandée. Mais quand même, ces outils pourraient être rendus plus sexy et intuitifs 😉

Ce genre de réflexion illustre le bien-fondé de solutions comme Euclid, qui mesure la performance des magasins classiques.

Comme les autres billets de cette série, ceci fait partie de la R&D analytics que j’effectue pour Hub’Sales et Hub’Scan, notre solution assurance qualité Google Analytics. Pour info, comme je me sers de mes Raspberry Pis à titre personnel, Hub’Sales n’a pas participé à mes frais 😉

Comme d’habitude, vos commentaires constructifs sont les bienvenus! :-)

Auteur/autrice : Julien Coquet

Expert de la mesure d’audience sur Internet depuis plus de 15 ans, Julien Coquet est consultant senior digital analytics et responsable produit et évangélisation pour Hub’Scan, une solution d’assurance qualité du marquage analytics. > A propos de Julien Coquet

4 réflexions sur « Mesurer l’activité d’un magasin classique avec Google Universal Analytics »

  1. Incroyable cette idée… Bon, moi même avec 15L de Redbull j’y arriverais pas mais c’est quand même impressionnant de voir ce qu’on peut faire aujourd’hui ! Bravo !

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.