跟踪流量来源

时间:2010-09-08 09:49:22

标签: php javascript cookies google-analytics

Google Analytics(分析)是否将utm_source,utm_medium参数存储在cookie或类似的内容中,我可以使用PHP在我自己的网站上访问? - 或者 - 是否有人可以使用代码示例来识别流量来源,即。 PPC,Natural等。

1 个答案:

答案 0 :(得分:3)

是的,Google会将此信息存储在Cookie中;具体来说,__ utmz cookie。

您可以编写一段JavaScript来阅读GA在浏览器中存储的Cookie。此信息存储在__utmz cookie中。例如,如果链接包含所有5个可能的utm变量,则cookie看起来像这样(我已经用值替换了大写的名称,因此SOURCE是utm_source的值:

     43838368.1283957505.1.3.utmcsr=SOURCE|utmccn=CAMPAIGN|utmcmd=MEDIUM|utmctr=TERM|utmcct=CONTENT

这是有机谷歌搜索的__utmz cookie:

140029553.1283957328.2.136.utmcsr=google|utmccn=(organic)|utmcmd=organic|utmctr=SEARCH-TERMS-HERE

这就是__utmz cookie直接访问的样子:

   17861479.1283957910.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none)

这就是带有自动标记的付费Google搜索的__utmz Cookie:

   175516223.1283957996.1.1.utmgclid=CLrr7fyL-KMCFZpN5QoduVOTLA|utmccn=(not%20set)|utmcmd=(not%20set)|utmctr=SEARCH+TERM

PHP并不理想,因为在单页访问时你永远无法读取cookie,但这是PHP中的代码。

if(isset($_COOKIE['__utmz']))
{
$cookie= $_COOKIE['__utmz'];
$params =  strstr($cookie, 'utm');
$cookiearray = explode("|", $params);
$final = array();
for($i=0; $i<count($cookiearray); $i++)
{
    $temp = explode("=",$cookiearray[$i]);
    $final[$temp[0]] = temp[1];
}
}

这将为您提供一个数组($final),其中包含每个流量源参数的键值匹配。

你可能最好在JavaScript中解析它并使用AJAX将其发布到服务器,而不是在服务器端读取它,因为你只能在第二个页面视图上执行此操作,因此会丢失跟踪单页面查看用户的能力。这可能是手动JavaScript的烦人任务,因为cookie和AJAX在浏览器中可能不一致,所以我建议使用像jQuery这样的框架。


这是我使用jQuery的方法。我将添加jQuery cookie plugin,并将其发布在这样的_gaq.push(function(){...});子句中(假设上面的PHP存储在handler.php中)。

$.post('handler.php', '__utmz' : $.cookie("__utmz") );

然后,将$ _COOKIE的两个引用切换到$ _POST,并对它生成的数组执行任何操作。