Suivi analytique : Collecte d'événements axée sur la confidentialité

Cet article explique comment nous suivons le comportement des utilisateurs tout en respectant la vie privée et en évitant le trafic des robots.

Le problème : Comprendre le comportement des utilisateur

Nous devons savoir :

  • Quelles pages les utilisateurs visitent

  • Quels produits ils consultent

  • D'où provient le trafic (Google Ads, organique, réseaux sociaux)

  • Quelles campagnes génèrent des conversions

Mais nous devons éviter :

  • Suivre les robots et les crawlers

  • Stocker des informations personnellement identifiables (PII)

  • Enfreindre les réglementations sur la confidentialité

La solution : Suivi côté client + côté serveur

Côté client : Suivi JavaScript

ID Visiteur : ID aléatoire stocké dans un cookie (365 jours)

ID Session : ID aléatoire stocké dans sessionStorage (jusqu'à la fermeture du navigateur)

Paramètres de campagne : Extraits de l'URL et stockés dans sessionStorage

Paramètres suivis :

  • gclid - Google Click ID (Annonces Search)

  • gbraid - Google Ads click ID (Annonces Shopping)

  • wbraid - Google Ads click ID (iOS)

  • fbclid - Facebook click ID

  • srsltid - Google organic search result ID

  • utm_source, utm_medium, utm_campaign, utm_term, utm_content

Stockage : Les paramètres sont stockés dans des cookies (30 minutes) pour l'attribution des clics WhatsApp/téléphone

Côté serveur : Enrichissement

Le serveur enrichit les événements avec :

Données GeoIP : Pays, région, ville à partir de l'adresse IP

Analyse de l'User-Agent : Navigateur, OS, type d'appareil

Horodatage : Heure serveur (UTC)

Détection de robots : Filtre les user-agents de robots connus

Types d'événements

Consultation de page : L'utilisateur visite une page

Consultation de produit : L'utilisateur consulte une page produit

Ajout au panier : L'utilisateur ajoute un produit au panier

Passage en caisse : L'utilisateur initie le paiement

Achat : L'utilisateur finalise un achat

Clic WhatsApp : L'utilisateur clique sur le bouton WhatsApp

Clic téléphone : L'utilisateur clique sur un numéro de téléphone

Flux de données

sequenceDiagram
    participant User
    participant JS as JavaScript
    participant API as /api/analytics
    participant Firehose as Kinesis Firehose
    participant S3
    
    User->>JS: Visit page
    JS->>JS: Extract URL params
(gclid, utm_*, etc.) JS->>JS: Store in sessionStorage JS->>API: POST event + params API->>API: Enrich with GeoIP API->>API: Parse User-Agent API->>API: Filter bots API->>Firehose: Send enriched event Firehose->>S3: Store in analytics bucket

Détection des robots

Nous filtrons le trafic des robots en utilisant plusieurs signaux :

Modèles d'User-Agent : Chaînes de caractères de robots connus (Googlebot, Bingbot, etc.)

Modèles de comportement : Trop rapide, trop de requêtes

JavaScript manquant : Les robots n'exécutent souvent pas le JS

Cookie d'exclusion : tv_exclude=true arrête tout suivi

Protection de la vie privée

Pas de PII : Nous ne stockons jamais les noms, e-mails, numéros de téléphone

IPs anonymisées : Le dernier octet est supprimé avant le stockage

Pas de suivi inter-sites : Les cookies sont uniquement first-party

Désinscription : Les utilisateurs peuvent définir le cookie d'exclusion

Conservation des données : Les événements sont supprimés après 90 jours

Chargement conditionnel des pixels

Nous ne chargeons les pixels de suivi que lorsqu'ils sont pertinents :

Pixel Google Ads : Uniquement si gclid, gbraid ou wbraid est présent

Pixel LinkedIn : Uniquement si msclkid est présent

Pixel Facebook : Uniquement si fbclid est présent

Avantage : Pages plus rapides à charger, moins de surcharge de suivi

Détection de la source du trafic

Nous détectons la source du trafic à partir des paramètres d'URL :

Google Ads : gclid, gbraid, wbraidutm_source=google_ads

Google Organique : srsltidutm_source=google_search

Facebook : fbclidutm_source=facebook

LinkedIn : msclkidutm_source=linkedin

Direct : Aucun paramètre → utm_source=direct

Suivi des conversions

Nous suivons les conversions tout au long du tunnel :

Consultation de produitAjout au panierPassage en caisseAchat

Chaque étape inclut :

  • ID Visiteur (pour l'attribution)

  • ID Session (pour l'analyse de session)

  • Paramètres de campagne (pour le calcul du ROI)

  • SKU du produit (pour l'analyse produit)

Suivi des contacts prospects

Lorsque les utilisateurs nous contactent (WhatsApp, téléphone, e-mail), nous capturons :

Méthode de contact : WhatsApp, téléphone, e-mail

Paramètres de campagne : Provenant des cookies (fenêtre de 30 minutes)

Contexte produit : Sur quelle page produit ils se trouvaient

Avantage : Attribuer les conversions hors ligne aux campagnes en ligne

Limitation du débit

Le point de terminaison analytique est limité en débit :

Limite : 100 requêtes par 10 minutes par IP

Avantage : Empêche les abus et les inondations de robots

Stockage

Les événements sont stockés dans S3 via Kinesis Firehose :

Format : JSON lines (un événement par ligne)

Partitionnement : Par date (année/mois/jour/heure)

Compression : Gzip

Conservation : 90 jours

Interrogation

Les événements sont interrogés via AWS Athena :

Schéma : Défini dans Glue Data Catalog

Requêtes : SQL sur les données S3

Cas d'utilisation : ROI des campagnes, popularité des produits, sources de trafic

Références

Concepts techniques

Services AWS

Articles connexes

Résumé

Notre système analytique suit le comportement des utilisateurs tout en respectant la vie privée :

Côté client :

  • ✅ Extraire les paramètres de campagne de l'URL

  • ✅ Stocker dans sessionStorage (portée session)

  • ✅ Stocker dans les cookies (30 min pour l'attribution)

  • ✅ Envoyer les événements à l'API

Côté serveur :

  • ✅ Enrichir avec GeoIP et User-Agent

  • ✅ Filtrer le trafic des robots

  • ✅ Envoyer vers Kinesis Firehose

  • ✅ Stocker dans S3 (partitionné par date)

Confidentialité :

  • ✅ Pas de PII stockée

  • ✅ IPs anonymisées

  • ✅ Cookies first-party uniquement

  • ✅ Désinscription disponible

  • ✅ Conservation de 90 jours

Chargement conditionnel :

  • ✅ Pixel Google Ads uniquement si gclid présent

  • ✅ Pixel LinkedIn uniquement si msclkid présent

  • ✅ Pixel Facebook uniquement si fbclid présent

Cette approche équilibre les insights avec la confidentialité et les performances.


← Retour à l'index de la documentation