Google Analytics : tes taux de rebond sont bidon (les visites de 0 secondes ça n’existe pas)

Hier j’ai eu une grosse frayeur. En regardant mes stats Google Analytics, j’ai découvert que mon taux de rebond était énorme (85%). Cela signifierait que 85% des visiteurs repartent instantanément de mon site. Donc seuls 15% de mes visiteurs restent plus d’une seconde ! Catastrophe ! Alors j’ai décidé de faire mon propre Analytics à moi, avec un système simple : au lieu de calculer le temps passé uniquement au chargement de la page, je vais lancer des requêtes Ajax à intervalles réguliers pour enregistrer les données de visite lorsque le visiteur sera sur mon site. Résultat : des données très différentes…

Mise à jour du 28 avril 2010 : suite au commentaire de Martius, je propose une version améliorée de mon outil pour mesurer le temps passé par vos visiteurs sur votre site d’information.

Mise à jour du 26 avril 2010(suite aux commentaires des spécialistes) : ce billet ne remet pas en cause la fiabilité du taux de rebond mesuré par GA, mais sa pertinence pour les blogs. Je conteste également la capacité de GA à mesurer la durée de visite sur des sites d’information.

Hier j’ai eu une grosse frayeur. En regardant mes stats Google Analytics (GA), j’ai découvert que le nombre de visites de moins de 10 secondes était énorme (84%) sur ce blog (alors qu’il plafonne à 45% sur certains sites associatifs que je gère). Pire, ce nombre était en fait constitué presque exclusivement de visites à 0 secondes… Cela correspondait au taux de rebond, qui mesure le nombre de visites de 0 secondes. Selon ce que j’en ai compris, cela signifierait que 85% des visiteurs repartent instantanément de mon site. Donc seuls 15% de mes visiteurs restent plus d’une seconde ! Catastrophe !

Je suis allé me renseigner ailleurs sur le Web, et cet article m’a confirmé le carnage. J’ai commencé à suer à grosses gouttes et à me lamenter : cela signifiait que les 300 visiteurs quotidiens n’étaient en réalité que 45 lecteurs intéressés. Mais quand même, zéro seconde, ça me paraissait louche.

Alors j’ai voulu savoir ce qu’il en était réellement, et un autre article m’a confirmé ce fait : le calcul par GA du temps passé sur un site commence à partir de la deuxième page ouverte. Donc une visite sur une SEULE page, qui durerait vingt minutes, ne compte pas pour Google  compte certes une page vue, mais a une durée nulle (edité suite au commentaire d’Alain). C’est un rebond. Zero seconde. Nada, des clopinettes.

Qu’à cela ne tienne, je me suis dit : GA est fait pour les sites de vente en ligne mais ne mesure pas l’intérêt des visiteurs pour un article de blog. Il me fallait une autre mesure pour me faire une idée de la réalité. Alors j’ai décidé de faire mon propre Analytics à moi, avec un système simple : au lieu de calculer le temps passé uniquement au chargement de la page, je vais lancer des requêtes Ajax à intervalles réguliers pour enregistrer les données de visite lorsque le visiteur sera sur mon site.

La Base de données

J’ai fait dans ma base MySQL une table très simple qui me servira uniquement à collecter les données utiles (je ne vais pas refaire GA non plus) :



CREATE TABLE `visiteurs_log` (

  `date` datetime NOT NULL,

  `ip` varchar(15) NOT NULL,

  `user_agent` varchar(64) NOT NULL,

  `page` varchar(255) NOT NULL

) ENGINE=MyISAM DEFAULT CHARSET=latin1;



Le PHP

J’ai créé un script /stats.php dans un nouveau dossier accessible à la racine du blog, qui sera appelé par requête Ajax à intervalles réguliers. Ce script doit contenir les infos de connexion à la base de données et une requête d’insertion. J’en profite aussi pour nettoyer certaines variables (virer les « http:// » au début des url, etc.) :


>> Contenu du fichier /dossier/stats.php

// On se connecte à la BDD

$link = mysql_connect("localhost", "username", "password") ;

mysql_select_db('base');



// On récupère l'url de la page qui a lancé la requête Ajax

$page = $_SERVER['HTTP_REFERER'];

// On supprime les caractères récurrents dans l'url pour ne garder que le chemin relatif

$page = str_replace('http://www.mondomaine.com','',$page);

// On récupère l'ip et le type de navigateur du visiteur (pour éliminer les robots indexeurs, ou identifier un problème de rebond spécifique à un navigateur par ex.)

$ip = $_SERVER['REMOTE_ADDR'];

$user_agent = $_SERVER['HTTP_USER_AGENT'];



$requete = "INSERT INTO visiteurs_log SET

     page='" . mysql_real_escape_string($page) . "',

     ip='$ip',

     date=NOW(),

     user_agent='" . mysql_real_escape_string($user_agent) . "'";

    $result = mysql_query($requete) OR DIE($Requete);



Le javascript

J’ai créé un javascript très simple qui comporte une requête Ajax appelée :

  • au chargement de la page
  • 50 millisecondes après la fin de la première requête : on laisse les requêtes se terminer pour éviter des engorgements si le serveur est un peu long à répondre
  • 100 secondes après la fin de la deuxième requête
  • 200 secondes après la fin de la troisième requête
  • on double ainsi le temps à chaque fois, pour éviter qu’un visiteur qui reste une heure ne génère 3600 requêtes
  • on mesure au maximum toutes les 30 secondes pour que la mesure reste précise

J’utilise pour cela la librairie JQuery, mais n’importe quel système générant des requêtes Ajax fera l’affaire :


>> Contenu du fichier /themes/montheme/js/s.js :
$(document).ready(function() {
    stats();
});
var delai = 50;

function stats()
{
    $.get('/dossier/stats.php', function() {
        setTimeout('stats()',delai);
        delai = Math.min(delai * 2,30000);
    });
}




Comme mon blog est un Dotclear, j’ai intégré deux lignes de script dans le _footer.html de mon thème actif :



>> Contenu du fichier /themes/montheme/tpl/_footer.html
<script src="/themes/montheme/js/jquery.js" type="text/javascript"></script>

<script src="/themes/montheme/js/s.js" type="text/javascript"></script>

La requête

On attend quelques heures ou quelques jours pour collecter des données exploitables. Et puis on peut lancer une requête qui va compter le temps de chargement :

SELECT COUNT(*) nb_pages,
    ip,
    page,
    user_agent,
    date,
    UNIX_TIMESTAMP(MAX(date)) - UNIX_TIMESTAMP(MIN(date)) duree,
    COUNT(DISTINCT(page)) pages_vues
FROM `visiteurs_log`
GROUP BY ip
ORDER BY ip,date

Le tableau obtenu pourra être sorti dans Excel pour faire des tris et regroupements plus faciles.

Conclusions

Tout ça est bel est bon, me direz-vous, mais à quoi ça t’a servi ? En deux mots : à mesurer réellement le temps passé par ces visiteurs « rebondissants ». En effet, sur un total de 87 visiteurs en 24h (on ne rigole pas, c’est un petit blog, hein, et en plus c’est le week-end), voici les chiffres que j’obtiens, comparés à ceux de GA :




Durée de visite Pourcentage de visiteurs GA Pourcentage de visiteurs mesuré
0 seconde (rebond) 84,4% 0%
0-10 secondes 85,4% (incluant les rebonds) 28%
11-30 secondes 2% 19,3%
31-60 secondes 2,6% 15%
1 à 3 minutes 3,6% 13,6%
3 à 5 minutes 3,6% 2,2% (taux faible, lié à la faible taille de l’échantillon mesuré)
5-30 minutes 2,5% 15%
+ de 30 minutes 0,3% 5,7%

La différence saute aux yeux :

  • les durées réelles de visite sont beaucoup plus importantes que celles que Google Analytics semble indiquer. On a une mesure plus fine (même si on pourrait encore affiner les mesures en resserrant les plages de mesure) et plus adaptée à un blog où les visiteurs auront tendance à consulter une seule page (parce qu’ils sont arrivés via une recherche Google très précise).
  • le taux de visites de moins d’une minute reste important (62%) mais ça n’a rien de surprenant considérant que les visiteurs papillonnent rapidement d’un site à l’autre à la recherche de l’information qui leur manque

Enfin, et ce n’est pas un détail : je suis rassuré par ces chiffres plus conformes à ce que j’attendais. On n’est jamais mieux servi que par moi-même…

Conclusion : le taux de rebond est peut-être un bon indicateur si vous souhaitez mener vos visiteurs vers une autre page de votre site, mais c’est un indicateur contre-productif si l’essentiel de votre site consiste à donner de l’information. Attention aux comparaisons hâtives entre des sites aux objectifs divergents.

Alors si vous avez du mal à admettre quand GA vous annonce que vous êtes un looser, n’hésitez pas à adapter ce code sur votre blog. A vos commentaires !

Outil de référencement professionnel - essai gratuit Ce contenu a été publié dans Blog, avec comme mot(s)-clé(s) , , , . Vous pouvez le mettre en favoris avec ce permalien.

13 réponses à Google Analytics : tes taux de rebond sont bidon (les visites de 0 secondes ça n’existe pas)

  1. Martius dit :

    Le must du must serait de pouvoir vérifier si la page a le focus, pour savoir si un la page est bien en premier plan ou non, afin d’affiner les résutlats :)

  2. Diane Bourque dit :

    J’ai toujours cru que le Bounce Rate était le nombre de visiteurs qui ont visité le site et qui n’ont fait aucun click sur le site. Ils peuvent passer 5 minutes sur la première page – mais s’ils ne font aucun click – ils rentrent dans le Bounce Rate. What does Bounce Rate mean? – Analytics Help link to bit.ly

  3. Alain dit :

    Le taux de rebond c’est quand le visiteur repart sans avoir regardé une seconde page du site, s’il reste sur une même page pendant 20 minutes c’est comptabilisé quand même ;) suffit de regarder son compte analytics pour s’en rendre compte avant de partir sur des postulats de départ foireux comme ça ;)

  4. Le Caphar Damien Ravé dit :

    @Martius : en effet, c’est une évolution possible. Mais je me demande si un événement Javascript permet de faire ça sans bouffer les ressources du PC client. Un mouseover ne suffit pas.

    @Alain : je sais bien qu’il est comptabilisé comme visiteur, mais ce qui me chagrine c’est que Google m’affirme qu’il reste 0 seconde.

    @Diane Bourque/@Alain : oui, pour un site de e-commerce, un visiteur « intéressant » est un visiteur qui clique. Pour un site d’information (blog), un visiteur intéressant est un visiteur qui lit. Or si la mesure du temps passé sur GA est adaptée aux sites d’e-commerce, elle l’est moins pour un blog. Voilà mon « postulat » de départ.

  5. Pingolin dit :

    Les analyses du temps passé sur une page (et les erreurs de google pour leur calcul) est assez intéressante.
    Mais le taux de rebond (Bounce Rate) n’a RIEN à voir avec le temps passé (Time on site).

    Le taux de rebond = visiteurs se contentant d’une seule page. Le temps n’a rien à voir là dedans (sauf pour les session timeout après une inactivité de plus de 30 minutes).

    Votre article ne remet pas du tout en cause la mesure du taux de rebond (contrairement à ce que laisse entendre votre titre et la conclusion). Par contre, vous pointez du doigt un problème souvent soulevé du calcul du « Time on site », Google ayant fait le choix de ne considérer que les utilisateurs n’ayant pas rebondit.
    Le choix de Google est délibérer parce que (je cite) : Time on site can be misleading because visitors often leave browser windows open when they are not actually viewing or using your site.

    Google a choisi de ne considérer qu’une petite partie des visiteurs pour que le phénomène de la « fenetre ouverte en fond et oubliée » influence un peu moins les stats. Dans tous les cas, Google nous informe que cette mesure peut être trompeuse.

    Bon boulot de programmation en tout cas… mais qui n’échappe au problème de la fenêtre ouverte en fond rendant vos données complètement inexploitables (désolé).

  6. Pingolin dit :

    Au temps pour moi.
    Je viens de voir le les théories du « Bouncing » = temps<10s

    1- Je trouve ça stupide. Même lorsque l’utilisateur est là pour chercher une info, surtout sur un blog, si le contenu est réellement intéressant, cela DOIT se traduire par une transformation de la visite. Le taux de rebond n’a d’intérêt qu’en comparaison interne dans ce cas (comme pour la plupart des données statistiques proposées par Analytics). Mais un bon article/bon site DOIT avoir un taux de rebond un peu moins inférieur. C’est aussi simple.

    2-Encore une fois, à moins d’inventer un détecteur de mouvement oculaire, le temps passé sur le site n’a lui aussi qu’une valeur RELATIVE (les pages restant bien trop souvent ouvertes en fond). Pour son blog (ou n’importe quel site) il faut se dire (et éventuellement l’expliquer au client) que le « time on site » n’est qu’indicatif et extrêmement peu fiable.

  7. Florent V. dit :

    Pour un site donné, on peut créer plusieurs profils dans Google Analytics, en restreignant le lot de données par différents critères. Il est ainsi possible pour un même site et un même ensemble de données, d’avoir deux profils:
    – un profil «standard» non restreint (créé automatiquement quand on ajoute le site dans GA);
    – un profil qui exclue toutes les visites ayant une durée (théorique ;)) de zéro seconde.
    Pour un site transactionnel où l’utilisateur est amené à visiter plusieurs pages pour réaliser des objectifs, cela permet de distinguer les utilisateurs dont on n’a pas retenu l’attention (taux de rebond) de ceux qui ont poursuivi leur visite, et pour ces derniers on pourra avoir une estimation plus fiable du temps de visite (arrondi par le bas vu que la dernière page visitée est vue pendant zéro seconde pour GA).

    Ça ne répond pas à la question de cet article (combien de temps l’utilisateur passe-t-il vraiment sur la page?), mais c’est déjà un tri intéressant.
    (Pour info, cette manière de compter (uniquement les visites hors Bounce Rate) a été mise en place en 2007 sur Google Analytics, mais ça a perturbé les utilisateurs et Google est revenu au calcul «classique».)

    Pour le script présenté dans ce billet, on peut aussi imaginer un script JS un peu complexe qui surveille la présence du curseur de la souris sur la page pour estimer le temps de lecture. Le principe serait de cumuler les temps mesurés pour une même session (par exemple si l’utilisateur jongle entre plusieurs onglets et lit l’article en plusieurs fois, ça devrait être mesurable). Puis, au moment de la fermeture de la page ou de l’onglet, intercepter l’évènement en JS, envoyer une requête Ajax pour loguer l’information, et fermer la page. Il y a sans-doute des difficultés techniques pour réaliser ça, et ça ne serait pas à activer en permanence vu l’impact négatif sur les performances (délai à la fermeture de la page, notamment), mais ça peut être intéressant. D’ailleurs, il y a peut-être déjà des services web qui proposent ce genre de mesure.

  8. Nicolas dit :

    Salut,

    Il doit même exister un événement Javascript qui est appelé au moment ou la page est fermée.

    link to forum.hardware.fr
    link to blogs.x2line.com

  9. Bertrand dit :

    L’autre manière de regarder le problème est de se demander comment améliorer ce taux de rebond : convaincre les gens de commenter, d’en regarder plus, d’explorer…. mon taux de rebond sur un site d’information ou sur mes blogs est plus proche de 60%-65%.

    Enfin, un taux de rebond trop élevé peut indiquer aussi des problèmes de « ciblage » des visiteurs. Un SEO un peu poussé qui rameute du monde qui se rend compte que finalement le site ne correspond pas à ce qu’il semblait être sur Google.

  10. rem dit :

    Bonjour,

    Merci beaucoup pour ces informations, j’ai des des visites de 1s également sur mon google analytics, je comprend mieux maintenant pourquoi.
    Effectivement je pense que sur un blog il est normal d’avoir un taux de rebond élevé, les visiteurs lisent l’article et repartent ils ne parcourent pas obligatoirement le blog.

  11. Très bon article sur le taux de rebond, surtout concernant les sites d’informations, les blogs ou les forums.

    Je ne peux qu’approuver cet article, mais il existe un moyen beaucoup plus simple pour adapter le taux de rebond d’une visite selon sa durée dans Google Analytics. Il suffit d’ajouter un pagetracker lié à un timeout. J’explique la méthode complète ici : link to seomix.fr

  12. Merci pour ton article qui est très intéressant, je m’étais moi-même posé la question à la création de mon blog lorsque que je voulais augmenter le nombre de Pages vues / visiteurs.

    Bonne continuation !

  13. Chokomar dit :

    Salut,
    très intéressant ton article et une bonne idée cet script ce stats. en directe.

Laisser un commentaire

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