当前位置: AiWom > Data>正文

Google Analytics统计订单数据新方法

   使用Google analytics的电子商务用户,都部署了电子商务追踪代码,它可以帮助我们获取订单转化数据。但长期以来我们会有一个困扰,为什么Google Analytics里的订单数据和我们的ERP里的销售数据对不上?

   有过GA代码部署经验的同学都知道,电子商务代码部署在哪个页面非常重要,通常我们有两个选择,一是部署在订单提交页面,二是部署再付款成功页面,都可以成功的采集订单相关数据。

   但是问题来了,两种部署方法都不能准确统计订单数据。如果代码部署在订单提交页面,那么所统计的订单数据一定大于真实付款订单,因为总有一些用户在此环节放弃,没有最终付款。那如果部署在付款成功页面呢,也会有问题,选择货到付款的用户通常不会到达此页面;在线支付的用户,在支付成功后也可能直接关闭浏览器,无法到达支付成功页面(部分网银付款成功后可以自动弹回商家,部分不支持),这就造成了GA统计的订单数比实际订单数少。

   这种数据的偏差会给我们带来很多实际的麻烦。它可能影响我们的KPI计算,可能影响我们和CPS媒体的对账,如果要做深入的产品分析,数据偏差的影响会更大。

   显然,GOOGLE关注到了这个问题,GA升级到UA版本之后(关于UA的介绍详见:点击查看),为我们提供了新的解决方案,通过UA的测量协议可以准确的监测网站的电子商务订单数据。

什么是测量协议

测量协议(Measurement Protocol)是Google Analytics在推出UA版本的时候同时推出的一款可能支持任何平台的协议接口,用户可以通过测量协议上传网站访问数据到Google Analytics。

因此,我们可以通过在服务器端利用Google Analytics的测量协议对数据进行处理,导入GA,由于通过后台的服务器进行处理,原始数据的准确性大大提高。由于GA的报表抽样,如果进入GA操作时选择时间范围过长,和其他数据组合进行分析时,数据可能会因为抽样有偏差。尽管如此,我依然认为这要比之前的方法要好太多。好了,闲话不多说,下面说说怎么使用测量协议传输数据吧。

通过测量协议提交电商数据

本文仅以PHP语言的服务器为例进行示例:

首先,这部分处理肯定是在你的订单提交成功的页面处理时触发的,其原理与使用analytics.js进行处理是一样的,通过向Google Analytics请求collect文件,向GA进行提交相应的电商数据代码。

在这里,我通过使用php的file_get_content()函数向GA请求数据。GA的collect文件支持”GET”与”POST”方法,具体函数的使用方法可以参考http://us3.php.net/file_get_contents的讲解。

其次,我们可以通过Post或者get的方法写入以下参数

function sendGAData($method) {

   $cid = getClientID($_COOKIE["_ga"]);

   $z = getRandomNumber();

   echo $cid . “<br>” .

       $z . “<br>”;

   $url = “http://www.google-analytics.com/collect”;  //请求文件

   $params = $url . “?” .

       “v=” . VERSION .                            //文件版本

       “&tid=” . TRACKING_ID .                         //跟踪ID

       “&cid=” . $cid .                            //用户ID,通过cookie获取

       “&t=” . $method;                             //跟踪方法,支持pageview transaction item event等

   switch ($method) {

       case ‘transaction’:

           $params .= “&ti=”. “12345synhao” .          //订单ID

               “&ta=” . “westernWear” .             //订单联署机构

               “&tr=” . “50.00″ .                       //订单金额

               “&ts=” . “32.00″ .                       //订单运费

               “&tt=” . “12.00″ .                       //订单税费

               “&z=” . $z;                          //定义随机数,防止缓存

           break;

       case ‘item’:

           $params .= “&ti=” . “12345synhao” .            //订单ID

               “&in=” . “sofa” .                        //产品名称

               “&ip=” . “300″ .                     //产品单价

               “&iq=” . “2″ .                           //产品价格

               ”&ic=” . “u3eqds43″ .                    //产品SKU

               “&iv=” . “furniture” .                   //产品类别

               “&z=” . $z;                               //定义随机数

           break;

       default:

           # code…

           break;

   }

   $options = array(

       “http” => array(

           “method” => “GET”,

           “user_agent” => $_SERVER["HTTP_USER_AGENT"],

           “header” => (“Accept-Language:” . $_SERVER["HTTP_ACCEPT_LANGUAGE"])

           )

       );

   $data = file_get_contents(

       $params, false, stream_context_create($options));//向GA服务器发送数据

}

function getClientID($cid) {

   if (empty($cid)) {

       return “”;

   }

   $regex = “/^[^.]+\.+[^.]+\.(.*)/”;

   if (preg_match($regex, $cid, $match)) {

       return $match[1];

   } else {

       return “”;

   }

}

由于UA所有的数据都只通过CID进行关联,这样的话,通过读取Cookie中的cid,我们就可以在服务器端发送相应的订单数据,这样用户的数据就可以相对准确的进行统计,而不在需要考虑由于支付的问题而导致统计丢失的问题。


(本文转自truemetrics)

本文来自 AiWom 转载请注明。

« 上一篇下一篇 »

发表评论:

(输入Email可以获得评论回复通知)

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。