web-dev-qa-db-fra.com

Comment suivre avec Google Analytics sur une page de redirection avec PHP?

J'ai un site Web sur lequel je veux suivre qui a cliqué sur des liens spécifiques avec GA.

Disons que j'ai cette page: /index.php?id=32

Sur cette page, je lance une requête basée sur la variable ID (dans le cas présent: 32) et j'obtiens l'URL de l'élément 32 id de la base de données pour rediriger le visiteur.

J'utilise une fonction PHP: en-tête ('Location: http://www.example.com ') ;. Avant de rediriger l'utilisateur, je souhaite que Google enregistre les informations relatives au visiteur et ne les redirige ensuite que vers la page Web souhaitée.

J'ai essayé de coller le code GA et ECHO juste avant la redirection, mais cela n'a pas fonctionné. Comment est-il possible de suivre ce type de pages avec GA?

20
Radical_Activity

Je suggérerais quelque chose comme ce qui suit. Il utilise hitCallback pour effectuer la redirection, ainsi l'événement sera envoyé à GA et puis la redirection se produira. Il définit également un délai d'expiration pour que, si analytics.js soit indisponible (quelle que soit la raison), le téléspectateur est toujours (éventuellement) envoyé au bon endroit.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
    <head>
        <title>example</title>
        <script>
            setTimeout(redirect, 2000);
            var redirected = false;
            function redirect() {
                if (!redirected) {
                    redirected = true;
                    location.href = 'http://your.website.here.com';
                }
            }
            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
                (i[r].q=i[r].q||[]).Push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
                m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
            })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
            ga('create', 'UA-NNNNNNN-N', 'auto');
            ga('send', 'event', 'Event Name', 'redirect', {
                hitCallback: redirect
            });
        </script>
    </head>
    <body>
    </body>
</html>

les codes de suivi et les URL doivent bien sûr être mis à jour pour correspondre aux vôtres.

Références:

8
sfosdal

Si vous examinez votre journal des erreurs, vous verrez une erreur indiquant en gros "Impossible d'envoyer l'en-tête de redirection, l'en-tête a déjà été envoyé". Il n'est pas possible de faire une redirection via l'en-tête d'emplacement si vous avez déjà eu une sortie HTML/Javascript avant votre extrait PHP (car à ce moment-là, vous avez déjà implicitement envoyé vos en-têtes http). 

Il serait possible d’utiliser Googles protocol de mesure pour créer une solution côté serveur qui assure le suivi de la page avant la redirection. Dans ce cas, vous devrez créer vous-même un client_id et, au cas où les propriétés que vous redirigez sont les vôtres, ajoutez-le à l'URL de redirection pour le suivi entre domaines. 

Si cela ne vous dérange pas, vous pouvez utiliser Curl ou fopen pour envoyer un appel à GA via une URL comme celle-ci:

https://www.google-analytics.com/collect?v=1&tid=UA-XXXX-Y&cid=XXXXXXt=pageview&dp=%2redirect

Où UA-XXXX-Y est l'identifiant du compte de Google, cid est l'identifiant du client que vous avez généré et/redirect est le nom de votre page. Si vous souhaitez reconnaître les utilisateurs récurrents, vous devez enregistrer l'id du client dans un cookie, vérifier à chaque visite si le cookie existe et extraire l'identifiant, le cas échéant.

2
Eike Pierstorff

Puisque la page qui envoie les visiteurs à la redirection est également sous votre contrôle, je suggérerais une approche totalement différente: utilisez le suivi des événements sur la page source.

Sur la page comportant le lien /index.php?id=32, mesurez tous les clics sur ce lien en attachant un gestionnaire onClick au lien et en exécutant une opération telle que 

ga('send', 'event', {
  eventCategory: 'Redirect Link',
  eventAction: 'click',
  eventLabel: event.target.href
});
0
Peter

si vous désactivez la redirection et inspectez la page, voyez-vous l'appel à effectuer vers GA dans l'onglet Réseau? J'ai constaté que, parfois, les événements Push n'apparaissent pas dans GA pendant environ 24 heures.

Si vous voyez qu'il envoie effectivement à Google, laissez-le activé et attendez un jour avant de vérifier GA pour voir si quelque chose a été enregistré.

0
Shan Robertson