44

クエリ文字列パラメーターを使用せずにキャンペーンを追跡するために、Google アナリティクスでサポートされている方法はありますか?

Analytics では、サイトへのリンクに や などのクエリ文字列パラメータをタグ付けしてutm_campaign、キャンペーンutm_mediumに関する情報を追跡できるようにすることができます。

実際、Google には、そのようなリンクの作成に役立つオンライン ツールがあります。

たとえば、StackOverflow が Experts Exchange で宣伝していた場合、次のようなリンクが表示されることがあります。

http://www.stackoverflow.com/?utm_source=expertexchange&utm_medium=banner&utm_campaign=a-better-expert-exchange

多くの理由から、これらのぎこちないパラメーターを URL に表示したくありません。

  • Twitterを奨励したいのですが、長いリンクはこれを思いとどまらせます
  • キャンペーン ID でブックマークしてほしくない
  • クリーンな URL を見てもらいたい
  • これらのリンクを検索エンジンにインデックスしてほしくありません。
  • どのパラメーターが Google アナリティクスに送信されるかを完全に制御したい - パートナーが自分のサイトにアクセスする URL を台無しにするのをパートナーに任せたくない

これらのパラメーターを設定できる方法を見つけるために、少し前に調べました。Google には、一見すると解決策のように見えるページがありますが、実際にはそうではありません。そのページでは、クエリ文字列パラメーターの名前を別のものに変更する方法について説明しています。たとえば、実行するsrc代わりに使用します。utm_source

 pageTracker._setCampSourceKey("src");     

キーの値を実際に明示的に設定するのが簡単ではない理由を理解できないようですutm_source-代わりのパラメーター名を設定するだけではありません。

しばらく前に、ある種の厄介なハックをした人を見つけたのを覚えていますが、今では見つけられないようです. とはいえ、誰であろうと分析コードのコピーを取得し、本質的にそれを分岐してハッキングしたことを思い出すようです。これは私にとって良い解決策ではありません!

ある種の厄介なリダイレクトなしで、これを行う公式にサポートされている方法はありますか。

一言で言えば、私はこのようなことをしたいです(ASP.NET MVCサイト)。次のような URL を使用して、パートナーネットに私のサイトへのリンクを提供します。

 http://www.example.com/?cid=2dae88a8-66b1-475d-8a35-2978bd1a158c

MVC ページのコントローラーで、この GUID がどのキャンペーンに関連しているかを調べ、モデルの状態を設定します。注: これにより、URL を再発行しなくてもキャンペーン パラメータを変更できるという利点が得られます。

ページ自体では、次のようにします。

var campaignMedium = <%= ViewData.Model.CampaignMedium %>;
var campaignSource = <%= ViewData.Model.CampaignSource %>;
var campaignName = <%= ViewData.Model.CampaignName %>;

pageTracker._setCampaignData({
    utm_source: campaignSource,
    utm_medium: campaignMedium,
    utm_campaignName: campaignName
});
pageTracker._trackPageview();

重要: この _setCampaignData メソッドは実際には存在しません。これは、私が理想的にできるようにしたいことの単なる「疑似コード」です。

このようなことを成功させた人はいますか?

4

9 に答える 9

31

_set CampaignParams

あなたの理論的な「_setCampaignData」は、最終的に次の形式で存在します["_set","campaignParams",...]

設定したい値をプログラムで挿入する方法がある場合 (たとえば、リダイレクトの Cookie によって設定するか、サーバー側で設定してページに出力するなど)、_setAPI を使用して、設定するキャンペーン パラメータ。

そのための形式は次のとおりです。

_gaq.push(['_set', 'campaignParams', 
'utm_campaign=CAMPAIGN&utm_source=SOURCE&utm_medium=MEDIUM']);

したがって、元の例を使用して:

 var campaignMedium = <%= ViewData.Model.CampaignMedium %>;
 var campaignSource = <%= ViewData.Model.CampaignSource %>;
 var campaignName = <%= ViewData.Model.CampaignName %>;
 _gaq.push(['_set', 'campaignParams', 
'utm_campaign=' + campaignName +  '&utm_source=' + campaignSource +'&utm_medium=' + campaignMedium]);

2017年更新

この回答では、新しい Google アナリティクス ライブラリである analytics.js/Universal Analytics を使用してこれを達成する方法について詳しく説明しています。

于 2010-11-02T22:16:37.467 に答える
11

TörökGáborは私にアイデアをくれました。

// ...
var campaignMedium = <%= ViewData.Model.CampaignMedium %>;
var campaignSource = <%= ViewData.Model.CampaignSource %>;
var campaignName = <%= ViewData.Model.CampaignName %>;

// save the old hash
var oldHash = document.location.hash;

// add campaign data to the hash
document.location.hash = 'utm_source=' + escape(campaignSource) + ...;
pageTracker._setAllowAnchor(true);
pageTracker._trackPageview();
// restore the old hash:
document.location.hash = oldHash;

このようにして、バックエンドでキャンペーンデータを作成し、それを動的にハッシュに渡して、ユーザーが気付かないうちに復元することができます。つまり、キャンペーンの追跡は実際のURLから100%独立しています。

于 2009-06-02T08:35:03.107 に答える
9

push(['_set', 'campaignParams',... を使用したソリューションは、従来のライブラリ ga.jsでのみ機能するようです。

analytics.js を使用して、キャンペーン パラメータを個別に指定する必要があります。例えば

ga('set', 'campaignName', 'TheCampaignName...');
ga('set', 'campaignSource', 'someCampaignSource');
ga('set', 'campaignMedium', 'email');

https://developers.google.com/analytics/devguides/collection/analyticsjs/field-reference#campaignName

于 2016-02-25T10:38:09.030 に答える
7

これを Google ヘルプ フォーラムに投稿しました。

Google 読んでください!!! 大強化チャンス!!! これにより、多くのユーザーが Advertising パラメータを使用できなくなります。広告パラメーターが trackPageview(url) で使用される URL から読み取られるようにします。

いずれにせよ、この機能がなければ、回避策を使用する必要がありました。パラメータを URL に追加するのではなく。一時的にブックマークとして URL に追加しました。次に、trackPageview 呼び出しの後にそれらを削除しました。それらをブックマークとして追加することにより、ページはリロードされません。次の例を参照してください。

var pageTracker = _gat._getTracker(param);
var orighash = document.location.hash;
if (orighash == "") {
    orighash = "none";  // this is done to prevent page scrolling
}
document.location.hash = 'utm_source='+source+'&utm_campaign='+campaign+'&utm_medium='+medium+'&utm_content='+content;
pageTracker._setAllowAnchor(true);
pageTracker._trackPageview();
document.location.hash = orighash
于 2009-07-21T15:31:35.320 に答える
7

_setAllowAnchorTrackin API には、クエリ パラメータとしてではなく、アンカー テキストでタグを指定できる関数があります。

pageTracker._setAllowAnchor(true);

したがって、使用できhttp://www.stackoverflow.com/#utm_source=expertexchange、GAはそれを理解します。これにより、SEOの問題を回避できます。

Twitter の問題については、投稿のトラッキング Twitter と Google アナリティクスで URL を短縮する で説明されている方法をお勧めします。

于 2009-06-01T12:40:42.733 に答える
7

以下は、GA 標準イベント トラッキングではなく、イベント トラッキングの Google アナリティクス ユニバーサル メソッドを使用してこれを行うための更新された方法です。

UTM 文字列全体を queryString (ある場合) から抽出するか、Google Cookie (__utmz) から取得してから、以下のコードを使用して Google アナリティクスに渡すことができます。

ga('send', 'event', 'queryString', 'getQueryString', googleString ); 

次に、作成したいトリガー (私は "widgetTracker" という名前の関数を使用します) を実行すると、GA イベント トラッカーを実行できます。

コード全体は次のとおりです。

/* JavaScript Document */
(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','//www.google-analytics.com/analytics.js','ga');
  ga('create', 'UA-xxxxxxx-xx', 'xx.xxx');
  ga('send', 'pageview');

 var googleString;  
 var stringArray = [];  
 var queryStringObject = makeQueryStringObject();   
 var QUOT = "'";    
 var EQ = '=';  
 var AMP = '&';         

 for  ( var v in queryStringObject ) {  
    var str =  v + EQ + queryStringObject[v] ;  
    stringArray.push(str);   
    googleString = stringArray.join(AMP);
} 

         function makeQueryStringObject()   {       
            var obj = [];       
            var pageURL = window.location.href;         
            var URLArray = pageURL.split('?');      
            if( URLArray[1] )       {           
                var argsArray = URLArray[1].split('&');             
                var l = argsArray.length;           
                for( i=0; i<l; i++ )            {               
                    var individualArg = argsArray[i].split('=');                
                    if(individualArg[1] && individualArg[1].indexOf('#') > -1)              {               
                        var dropHashArray = individualArg[1].split('#');                    
                        individualArg[1] = dropHashArray[0];                
                    }               
                    obj[ individualArg[0] ] = individualArg[1];     
                    console.log("value of queryStringObject: " + individualArg[0] + " :: " + obj[   individualArg[0] ]);

                }       
            } else { /* from http://stackoverflow.com/a/14984832/1013405 */         
                ga1 = parseGACookie();  
                if(ga1['utmcsr']) {             
                    var utm_source = ga1['utmcsr'];                     
                }           
                    if(ga1['utmccn']) {             
                        var utm_campaign = ga1['utmccn'];                   
                    }           if(ga1['utmcmd']) {             
                        var utm_medium = ga1['utmcmd'];                 
                        }           
                        if(ga1['utmctr']) {             
                            var utm_term = ga1['utmctr'];                           
                        }           
                        if(ga1['utmcct']) {             
                            var utm_content = ga1['utmcct'];                
                        }       
                    }   
                        var googleString2 = "utm_campaign=" + utm_campaign + '&' + "utm_medium=" + utm_medium + '&' + "utm_term=" + utm_term + '&' + "utm_content=" + utm_content;  
                    return obj;     
                } 

                function parseGACookie()  {     
                var values = {};     
                var cookie = readCookie("__utmz");     
                if (cookie) {         
                    var z = cookie.split('.');         
                    if (z.length >= 4) {             
                        var y = z[4].split('|');            
                         for (i=0; i<y.length; i++) {                 
                            var pair = y[i].split("=");                 
                            values[pair[0]] = pair[1];             
                         }         
                        }     
                    }     
                    return values; 
                }  


                function readCookie(name) {     
                    var nameEQ = name + "=";     
                    var ca = document.cookie.split(';');     
                    for(var i=0;i < ca.length;i++) {        
                     var c = ca[i];        
                      while (c.charAt(0)==' ') c = c.substring(1,c.length);         
                      if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);     
                    }     
                    return null; 
                }  
                function widgetTracker() {  
                /* event tracking order of elements: send (required), event (required), Category, Action, Label, Value */ 
                    if (googleString) { 
                    ga('send', 'event', 'queryString', 'getQueryString', googleString ); 
                    } else { 
                     ga('send', 'event', 'queryString2', 'getQueryString2', googleString2 ); 
                     }
                }  
于 2014-02-19T21:38:16.373 に答える
3

まあ、私はそれをテストしませんでしたが、これらのパラメーターを.trackPageview()メソッドに追加してみてください。

pageTracker._trackPageview("?utm_source=...")

とにかく、これらのパラメーターを何らかの方法で渡す必要があります。つまり、常に長い URL があり、その中にある種のキャンペーンのがらくたが含まれているということです。間違った URL をブックマークしたり、検索エンジンがインデックスを作成したりすることは防げません。

これらのパラメーターの制御を維持したい場合は、パートナー用に別の URL を設定し、タグ付けされたターゲット URL にリダイレクトします。

http://example.com/campaigns/1 -> http://example.com/?utm_source=...
于 2009-06-01T12:09:40.597 に答える
2

Google アナリティクス API を使用して、例の _trackPageview への呼び出しをカスタマイズできます。

pageTracker._trackPageview("/inbound/" + campaignSource + "/" + campaignMedium );

すべてのインバウンド リンクは、Google アナリティクスの /inbound/ 「疑似ディレクトリ」の下に表示され、キャンペーン ソースとキャンペーン メディア用に別の「ディレクトリ」が作成されます。

于 2009-06-01T12:38:02.020 に答える
2

新しい(より)ユニバーサルな分析では、これらのパラメータを指定できます - ここのドキュメントを参照してください https://developers.google.com/analytics/devguides/collection/analyticsjs/field-reference

utm_source パラメータの設定例については、「キャンペーン ソース」セクションを探してください。

于 2014-11-01T02:18:41.907 に答える