Statistiques du site

Analyses de site respectueuses de la vie privée pour votre site Larapen. Suivez les pages vues, les visiteurs uniques, les référents, les pays, les navigateurs, les plateformes, les mots-clés de recherche et les campagnes marketing — sans scripts tiers ni cookies.

Suivi des pages vues

Enregistre automatiquement chaque visite de page front-end via un middleware. Aucune instrumentation manuelle requise.

Visiteurs uniques

Suivi des visiteurs uniques respectueux de la vie privée utilisant des empreintes hachées IP + User-Agent. Aucun cookie nécessaire.

Informations géographiques

Résolvez les IP des visiteurs en pays en utilisant la bibliothèque GeoIP du noyau avec des pilotes modulaires.

Sources de trafic

Suivez les domaines référents et les URL pour comprendre d’où vient votre trafic.

Navigateur & Plateforme

Analyseur User-Agent intégré détectant le navigateur, la plateforme OS et le type d’appareil (bureau/mobile/tablette).

Suivi des campagnes UTM

Capture automatiquement les paramètres UTM (source, medium, campaign, term, content) des URL entrantes.

Widget du tableau de bord

Métriques de trafic en un coup d’œil injectées directement dans le tableau de bord admin avec des graphiques de tendance.

Cas d’utilisation

Site portfolio ou d’agence

Vous gérez un site portfolio et souhaitez comprendre quels projets attirent le plus d’attention.

  • Voyez quelles pages portfolio obtiennent le plus de vues et depuis quels pays.
  • Identifiez les principaux domaines référents générant du trafic vers votre site.
  • Suivez les tendances quotidiennes et hebdomadaires sans dépendre de Google Analytics ou d’autres outils tiers.

Site orienté contenu avec blog

Vous publiez des articles et souhaitez mesurer leur performance dans le temps.

  • Comparez les pages vues sur différentes périodes (7 jours, 30 jours, 90 jours, 1 an).
  • Identifiez les navigateurs et plateformes utilisés par votre audience pour optimiser la compatibilité.
  • Utilisez la répartition par type d’appareil (bureau vs. mobile vs. tablette) pour prioriser les efforts de design responsive.

Organisation soucieuse de la vie privée

Vous avez besoin d’analyses basiques sans intégrer de scripts de suivi tiers ni définir de cookies.

  • Toutes les données restent sur votre propre serveur : aucun appel API externe pour le suivi (GeoIP est optionnel).
  • L’unicité des visiteurs est déterminée via une empreinte hachée, pas des cookies ou des identifiants persistants.
  • La rétention configurable des données purge automatiquement les anciens enregistrements.

Prérequis

  • Larapen CMS v1.0.0 ou ultérieur
  • PHP 8.3+
  • MySQL 8.0+
Aucune dépendance externe : L’add-on fonctionne entièrement de manière autonome. La détection de pays GeoIP utilise la bibliothèque GeoIP du noyau déjà incluse dans Larapen.

Installation

Étape 1 : Placer l’add-on

Copiez ou créez un lien symbolique du dossier stats dans votre répertoire Larapen « extensions/addons » :

Étape 2 : Activer l’add-on

Allez dans Admin → Add-ons → Add-ons installés et activez Statistiques du site.

Étape 3 : Exécuter les migrations

Cela crée 8 tables : stats_page_views, stats_daily, stats_referrers, stats_countries, stats_browsers, stats_platforms, stats_utm_visits et stats_utm_daily.

Étape 4 : Définir les permissions

L’add-on enregistre 3 permissions (voir Permissions). Assignez-les aux rôles admin via Admin → Utilisateurs → Rôles & Permissions.

Étape 5 : Configurer (optionnel)

Naviguez vers Admin → Statistiques → Paramètres pour ajuster les options de suivi, la rétention des données et les préférences d’affichage. Voir Configuration.

Suivi immédiat : Une fois activé, l’add-on commence immédiatement à enregistrer les pages vues via son middleware. Aucune configuration supplémentaire n’est requise pour le suivi basique.

Configuration

Tous les paramètres sont gérés dans Admin → Statistiques → Paramètres (stockés dans la table settings, groupe stats). Les valeurs par défaut proviennent de config/stats.php.

Paramètre Description Par défaut
stats_enabled Interrupteur principal pour activer ou désactiver le suivi des pages vues. Lorsqu’il est désactivé, aucune nouvelle donnée n’est collectée, mais les données existantes restent accessibles. true
stats_retention_days Nombre de jours de conservation des données brutes de pages vues. Les anciens enregistrements sont automatiquement purgés quotidiennement. Définir à 0 pour conserver les données indéfiniment. 90
stats_exclude_bots Exclure les bots et robots connus (Googlebot, Bingbot, etc.) des statistiques. true
stats_exclude_admins Exclure les utilisateurs admin connectés du suivi. true
stats_track_unique Suivre les visiteurs uniques en utilisant un hachage SHA-256 de l’IP + User-Agent (respectueux de la vie privée, sans cookies). true
stats_geoip_enabled Résoudre les adresses IP des visiteurs en pays en utilisant la bibliothèque GeoIP du noyau. true
stats_per_page Nombre de lignes affichées par page dans les tableaux de statistiques admin. 25
stats_utm_tracking_enabled Activer la capture automatique des paramètres UTM (source, medium, campaign, term, content) des URL entrantes. true
Fichier de configuration : Le fichier config/stats.php fournit les valeurs par défaut. Les paramètres de la base de données (enregistrés via le panneau admin) ont toujours priorité sur les valeurs du fichier de configuration.

Admin : Tableau de bord d’aperçu

La page d’aperçu (Statistiques → Aperçu) fournit un instantané complet du trafic de votre site. Toutes les vues acceptent un paramètre de requête ?period= pour changer la plage temporelle.

Sélecteur de période

Un bouton déroulant disponible sur toutes les pages de statistiques vous permet de basculer entre les périodes :

Valeur Libellé
7d7 derniers jours
30d30 derniers jours (par défaut)
90d90 derniers jours
365d365 derniers jours

Widget du tableau de bord

Un widget récapitulatif du trafic est automatiquement injecté dans le tableau de bord admin principal. Il affiche :

  • Vues du jour : total des pages vues pour la journée en cours
  • Visiteurs uniques du jour : nombre de visiteurs uniques pour la journée en cours
  • Vues de la semaine : total des vues pour la semaine en cours
  • Vues du mois : total des vues pour le mois en cours
  • Indicateur de tendance : variation en pourcentage par rapport à hier
  • Mini graphique : graphique de trafic sur 30 jours (bureau) / 7 jours (mobile)

Graphiques & Métriques d’aperçu

La page d’aperçu complète comprend :

  • Cartes récapitulatives : Total des vues et Visiteurs uniques pour la période sélectionnée
  • Graphique de trafic : graphique à barres empilées montrant les vues vs. les visiteurs uniques dans le temps
  • Top 10 des pages : pages les plus vues avec le nombre de vues
  • Top 10 des référents : principaux domaines référents générant du trafic
  • Top 10 des pays : pays par nombre de vues
  • Top 10 des navigateurs : répartition des navigateurs
  • Répartition par type d’appareil : proportions bureau, mobile et tablette affichées sous forme de barres de progression
  • Principales plateformes : répartition des OS (Windows, macOS, Linux, Android, iOS, etc.)

Admin : Rapports

Chaque rapport fournit une vue dédiée et paginée pour une dimension de données spécifique. Tous les rapports prennent en charge le sélecteur de période et respectent le paramètre stats_per_page.

Rapport des pages

Route : Statistiques → Pages

Un tableau paginé de tous les chemins de pages suivis affichant :

  • Rang : position par total de vues
  • Chemin : le chemin URL (ex. /about, /portfolio/my-project)
  • Vues : total des pages vues dans la période sélectionnée
  • Visiteurs uniques : nombre de visiteurs uniques pour cette page

Rapport des référents

Route : Statistiques → Référents

Un tableau paginé des domaines référents affichant :

  • Rang : position par total de visites
  • Domaine : le domaine référent (ex. google.com, twitter.com)
  • Visites : nombre de visites par référencement

Rapport des pays

Route : Statistiques → Pays

Un tableau paginé des pays des visiteurs affichant :

  • Rang : position par total de vues
  • Pays : badge de code pays ISO + nom du pays
  • Vues : total des vues depuis ce pays
  • Visiteurs uniques : visiteurs uniques depuis ce pays
Note : Les données de pays ne sont disponibles que lorsque stats_geoip_enabled est défini sur true et que la bibliothèque GeoIP du noyau est correctement configurée.

Rapport des navigateurs

Route : Statistiques → Navigateurs

Un tableau paginé des navigateurs détectés affichant :

  • Rang : position par total de vues
  • Navigateur : nom du navigateur avec icône (Chrome, Safari, Firefox, Edge, etc.)
  • Part : pourcentage du total des vues, affiché sous forme de barre de progression
  • Vues : total des vues pour ce navigateur

Rapport des plateformes

Route : Statistiques → Plateformes

Un tableau paginé des systèmes d’exploitation détectés affichant :

  • Rang : position par total de vues
  • Plateforme : nom de l’OS avec icône (Windows, macOS, Linux, Android, iOS, Chrome OS)
  • Part : pourcentage du total des vues, affiché sous forme de barre de progression
  • Vues : total des vues pour cette plateforme

Admin : Mots-clés

La section Mots-clés (Statistiques → Mots-clés) fournit un aperçu de la manière dont les visiteurs trouvent votre site grâce au suivi des paramètres UTM (campagnes marketing).

Suivi des paramètres UTM

Le suivi UTM capture automatiquement les paramètres de campagnes marketing des URL entrantes. Lorsqu’un visiteur arrive via une URL contenant des paramètres UTM (ex. ?utm_source=newsletter&utm_campaign=spring_sale), les données sont enregistrées et affichées dans la section Mots-clés.

Paramètres suivis

Paramètre Description Exemple
utm_source Source de trafic (obligatoire pour activer le suivi) google, newsletter, facebook
utm_medium Support marketing cpc, email, social
utm_campaign Nom de la campagne spring_sale, product_launch
utm_term Terme de recherche ou mot-clé web+design, laravel+cms
utm_content Variante de publicité ou de lien (pour les tests A/B) banner_v1, sidebar_link

Rapports

Les données UTM sont disponibles dans deux onglets dédiés dans la section Mots-clés :

  • Termes UTM : affiche toutes les valeurs utm_term suivies avec les compteurs de visites, sources et pages d’atterrissage
  • Campagnes UTM : affiche toutes les valeurs utm_campaign suivies avec les compteurs de visites, sources et supports

La page d’aperçu affiche également des cartes récapitulatives avec le total des visites UTM et les visiteurs UTM uniques pour la période sélectionnée.

Comment ça fonctionne : Le suivi UTM est géré par le même middleware qui enregistre les pages vues. Lorsque utm_source est présent dans l’URL, un enregistrement est créé dans la table stats_utm_visits et les agrégats quotidiens sont mis à jour dans stats_utm_daily. Aucun cookie ni JavaScript n’est impliqué.
Rétention des données : Les données UTM suivent la même politique de rétention que les pages vues. Lorsque les anciens enregistrements de pages vues sont purgés, les enregistrements de visites UTM correspondants sont également supprimés.

Admin : Paramètres

La page des paramètres (Statistiques → Paramètres) est organisée en quatre sections :

Options de suivi

Interrupteurs à bascule pour contrôler quelles données sont collectées :

  • Activer le suivi : interrupteur principal pour démarrer/arrêter la collecte de données
  • Suivre les visiteurs uniques : activer le suivi des visiteurs uniques basé sur l’empreinte SHA-256
  • Activer la détection de pays : résoudre les IP en pays via GeoIP
  • Exclure les bots : filtrer les robots et bots connus
  • Exclure les utilisateurs admin : ne pas suivre les utilisateurs admin connectés

Gestion des données

  • Rétention des données : liste déroulante pour sélectionner la période de rétention (Illimité, 30, 60, 90, 180, 365 ou 730 jours)
  • Éléments par page : liste déroulante pour sélectionner la taille de pagination (10, 15, 25, 50 ou 100 éléments)

Suivi UTM

Interrupteur pour activer ou désactiver la capture automatique des paramètres UTM des URL entrantes. Lorsqu’il est activé, le middleware de suivi extrait utm_source, utm_medium, utm_campaign, utm_term et utm_content des URL des visiteurs.

Avis de confidentialité

Un encadré informatif rappelant aux administrateurs que l’add-on respecte la vie privée : aucun script tiers, aucun cookie, et toutes les empreintes de visiteurs sont hachées.

Mise à jour

Étape 1 : Remplacer les fichiers

Remplacez le répertoire de l’add-on par la nouvelle version.

Étape 2 : Exécuter les migrations

Étape 3 : Vider les caches

Étape 4 : Vérifier

Visitez Statistiques → Aperçu et confirmez que les données s’affichent correctement. Vérifiez la page des paramètres pour confirmer que votre configuration est préservée.

Sauvegarde d’abord : Sauvegardez toujours votre base de données avant d’exécuter des migrations sur un système de production.

Dépannage

Aucune donnée n’est enregistrée

  • Vérifiez que stats_enabled est défini sur true dans Statistiques → Paramètres.
  • Vérifiez que l’add-on est activé dans Admin → Add-ons.
  • Si vous êtes connecté en tant qu’admin, vérifiez que stats_exclude_admins n’est pas activé (ou testez dans une fenêtre de navigateur privée/incognito).
  • Assurez-vous que les migrations ont été exécutées (php artisan migrate) : la table stats_page_views doit exister.

Les données de pays sont manquantes ou affichent « Inconnu »

  • Vérifiez que stats_geoip_enabled est true.
  • Vérifiez que le pilote GeoIP du noyau est correctement configuré dans Admin → Paramètres → GeoIP.
  • Les IP locales/privées (127.0.0.1, 192.168.x.x, etc.) ne peuvent pas être résolues et afficheront « Inconnu ».
  • Si vous utilisez un pilote GeoIP basé sur une API, vérifiez que la clé API est valide et n’a pas dépassé les limites de débit.
  • Pour la production, envisagez d’utiliser le pilote MaxMind Database (maxmind_database) avec le fichier GeoLite2-City.mmdb pour des recherches hors ligne fiables.

Le widget du tableau de bord ne s’affiche pas

  • Le widget est injecté via un view composer. Assurez-vous que l’add-on est actif et que le ServiceProvider a démarré.
  • Videz le cache des vues : php artisan view:clear.
  • Vérifiez que l’utilisateur a la permission stats.view.

Les pages de statistiques affichent « Aucune donnée disponible »

  • Si l’add-on vient d’être installé, attendez qu’un peu de trafic front-end soit enregistré.
  • Essayez de changer le sélecteur de période vers une plage plus large (ex. 90 jours ou 365 jours).
  • Vérifiez si la rétention des données a purgé les anciens enregistrements : ajustez stats_retention_days si nécessaire.

Le trafic des bots gonfle les statistiques

  • Activez stats_exclude_bots dans les paramètres. Cela filtre plus de 30 modèles de bots connus.
  • Notez que certains bots utilisent des chaînes User-Agent d’apparence légitime et peuvent ne pas être détectés. Consultez la colonne is_bot de la table stats_page_views pour auditer.

Les données UTM ne sont pas enregistrées

  • Vérifiez que stats_utm_tracking_enabled est défini sur true dans Statistiques → Paramètres.
  • Le suivi UTM nécessite au minimum le paramètre utm_source dans l’URL. Les URL sans utm_source sont ignorées.
  • Vérifiez que les URL contiennent des paramètres UTM valides : ?utm_source=test&utm_term=keyword.
  • Le suivi principal des statistiques doit également être activé (stats_enabled) pour que le suivi UTM fonctionne.

Utilisation élevée du stockage de la base de données

  • Réduisez le paramètre stats_retention_days à une période plus courte.
  • La tâche planifiée quotidienne à 3h00 purge automatiquement les anciennes données. Assurez-vous que votre planificateur Laravel fonctionne : php artisan schedule:work (ou configuré via cron).
  • La table stats_page_views croît le plus rapidement. Les tables agrégées (stats_daily, etc.) sont beaucoup plus petites car elles stockent une ligne par dimension par jour.

Problèmes de performance avec un trafic élevé

  • Le middleware traite de manière asynchrone après l’envoi de la réponse : il n’ajoute pas de latence aux chargements de pages.
  • Toutes les requêtes statistiques utilisent des tables agrégées avec des index adéquats, pas la table brute stats_page_views.
  • Pour les sites à très fort trafic, envisagez de réduire la rétention à 30 jours et d’utiliser le pilote GeoIP MaxMind hors ligne pour éviter les appels API externes.

Cet article vous a-t-il été utile ?

Merci pour votre retour !

Besoin d'aide ? Créez un ticket de support

Créer un Ticket