[ga]utm_系のパラメータを短い1つのパラメータで代用する方法


GAのパラメータって長いですよね。
utm_sourceだとか、utm_campaignだとか。
それはそれで階層化できて便利な反面、パラメータの管理が複雑になって大変になってしまうという負の側面もあります。
ポイントは4つもパラメータを付けなくてはいけないという点だと思います。
それによって、管理が複雑になってURLが長くなってしまいます。
短縮URLを使わずにURLをTwitterやFacebookとかに載せるのは難しい状態です。

以前、Web担当者フォーラムで
長くて汚いutm_*パラメータ付きURLをキレイにするGoogle Analytics用の少しマニアックなスクリプト
という記事があったので、これにインスパイアされて1つパラメータで4つのパラメータの代用をするスクリプトを書きました。
Web担の方はページが表示された後にリダイレクトされてパラメータ消えるという何が嬉しいのかいまいちわからない仕組みでしたが、こちらは逆にどこかのサイトにURLを張るときにパラメータ1つで4つ分の意味を持たせるというスクリプトです。

仕組みは単純です。
1.パラメータを見る
2.JS内の定義データと照合させる
3.マッチしたら、定義データの通りにutm_系のパラメータを展開させる
4.utm_付きのURLにリダイレクトさせる

例)
http://tanakanakana.happy888.net/async.html?twitid=neko
にアクセスすると、

http://tanakanakana.happy888.net/async.html?twitid=neko&utm_source=twitter&utm_medium=twitter&utm_campaign=neko&utm_content=neko2010_10_2

にリダイレクトされます。
当然、utm_系のデータはGAに記録されます。

http://tanakanakana.happy888.net/async.html?twitid=neko

はGAにデータが飛ぶ前にリダイレクトされるので計測されません。

こんな感じです。
現在は一つのJSファイルの中に定義データも含めていますが、
定義データはjsonでDBから吐き出すみたいな感じだと運用しやすいかもしれません。

ga_rd.js

var _ga_url = {
//config
    conf : {
        twitid : ["twitter", "twitter"],
        mixiid : ["mixi", "mixi"]
    },

    getQuery : function(name){
        if(location.search){
                var query = location.search;
                query = query.substring(1,query.length);
                var qArray = [];
                qArray = query.split("&");
                for(var i=0;i<qArray.length;i++){
                    var param = qArray[i].split("=");
                    if(param[0] == name){
                        return param[1];
                    }
                }
            }
        },

    get_param : function(str){
            var date = new Date();

            var param_str = this.getQuery(str)
            return "&utm_campaign=" + param_str + "&utm_content=" + param_str + date.getFullYear() +"_" + date.getMonth() + "_" + date.getDay()
        },


    main : function(){
        for (var i in this.conf){
            if((!(location.search).match(/utm_/)) && this.getQuery(i)){
                //alert(i);
                var str = "&utm_source=" + this.conf[i][0] + "&utm_medium=" + this.conf[i][1] + this.get_param(i);
                var url_str = document.URL + str;
            location.href = url_str;
            }
        }
    }
}
_ga_url.main();

conf 内で各パラメータのutm_sourceとutm_mediumを定義します。
utm_campaignはパラメータのvalue値、utm_contenはvalue値+日付にしています。
全部指定するのは面倒なので、とりあえずこうしていますが、
DBから吐き出す仕組みがあれば、全て指定するようにしてもいいと思います。

Leave a Reply