web-dev-qa-db-ja.com

PHPのリダイレクトページでGoogleアナリティクスを使用して追跡するにはどうすればよいですか?

GAの特定のリンクをクリックしたユーザーを追跡したいWebサイトがあります。

私がこのページを持っているとしましょう:/index.php?id=32

このページで、ID変数(この場合は32)に基づいてクエリを実行し、データベースから32のIDアイテムのURLを取得して、訪問者をリダイレクトします。

PHP function:header( 'Location: http://www.example.com ');を使用しています。ユーザーをリダイレクトする前に、 Googleで訪問者の情報を取得してから、目的のウェブページにリダイレクトしたい。

リダイレクトの直前にGAコードとECHOを貼り付けようとしましたが、機能しませんでした。GAでこのような種類のページを追跡するにはどうすればよいですか?

21

一般的に言えば

ページでリダイレクトを使用している場合、リダイレクトページはランディングページの参照元になります。たとえば、index.htmlがhome.htmlにリダイレクトされるようにサイトを変更した場合、index.htmlはhome.htmlの参照元になります。最初にindex.htmlに送信したGoogle検索を介して誰かがサイトにアクセスした場合、Google検索に関するデータはありません。

このため、Google Analyticsトラッキングコードは、リダイレクトページとランディングページの両方に配置する必要があります。このように、リダイレクトページは、レポートの実際の参照元情報をキャプチャします。

一部のブラウザは、コードからJavaScript呼び出しを行う前に実際にリダイレクトする場合があることに注意してください。

(cf. https://support.google.com/analytics/answer/1009614?hl=ja

あなたの特定のケース

PHPはJavaScriptの前にレンダリングおよび実行されるため、Google Analyticsトラッカーはサーバーにデータを送信する機会がありません。


ソリューション

PHPリダイレクションページを追跡できないことを考えると、いくつかの可能な代替策があります:




  • キャンペーントラッキング(私はこの特定のケースでは個人的にこの方法を使用しません。
    • _/products.php?utm_source=index&utm_medium=redirection-page&utm_campaign=32_

リストの最後の2つの項目は、PHPリダイレクトページにアクセスする前に、最初のページの個々のリンクに実装されています。

17
carlodurso

私は次のようなものを提案します。 hitCallbackを使用してリダイレクトを行うため、イベントはGAおよびに送信され、次にリダイレクトが発生します。また、タイムアウトを設定して、analytics.jsが(何らかの理由で)利用できない場合でも、ビューアが(最終的に)正しい場所に送信されるようにします。

<!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>

もちろん、トラッキングコードとURLはあなたに合わせて更新する必要があります。

参照:

10
sfosdal

エラーログを見ると、「リダイレクトヘッダーを送信できません。ヘッダーは既に送信されています」というエラーが表示されます。 PHPスニペットの前にすでにHTML/Javascript出力がある場合は、その場所のヘッダーを介してリダイレクトを行うことはできません(その時点で、HTTPヘッダーはすでに暗黙的に送信されているため)。

Googleを使用する 測定プロトコル を使用して、リダイレクトの前にページを追跡するサーバー側ソリューションを作成することが可能です。その場合、client_idを自分で作成する必要があります。リダイレクトするプロパティが独自のものである場合は、クロスドメイントラッキングのためにリダイレクトURLに追加します。

それが問題でない場合は、Curlまたはfopenを使用して、次のようなURLを介してGAへの呼び出しを送信できます。

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

UA-XXXX-YがGoogleのアカウントIDである場合、cidは生成したクライアントIDで、/ redirectはページの名前です。繰り返し発生するユーザーを認識したい場合は、クライアントIDをCookieに保存し、Cookieが存在する場合はすべての訪問を確認し、存在する場合はIDを取得する必要があります。

2
Eike Pierstorff

リダイレクトに訪問者を送信しているページもあなたの管理下にあるので、ソースページでイベントトラッキングを使用するというまったく異なるアプローチを提案します。

/index.php?id=32リンクのあるページで、リンクにonClickハンドラーをアタッチし、次のように実行して、このリンクのすべてのクリックを測定します

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

リダイレクトを無効にしてページを調べた場合、GAへの呼び出しがネットワークタブに表示されますか?=にプッシュイベントが表示されないことがあります。 GA約24時間。

本当にGoogleに送信されていることがわかった場合は、有効のままにして、1日待ってからGAをチェックして何かがログに記録されているかどうかを確認します。

0
Shan Robertson