【问题标题】:Google Analytics Custom Variables won't trackGoogle Analytics(分析)自定义变量不会跟踪
【发布时间】:2013-05-20 22:56:09
【问题描述】:

好吧,一段时间以来,我一直在使用自定义变量感到困惑。我已经搜索并遵循了网络上所有帖子的说明,但无论出于何种原因,它根本不起作用。

这是我正在使用的代码

<script type="text/javascript">
var _gaq = _gaq || [];
var pluginUrl = '//www.google-analytics.com/plugins/ga/inpage_linkid.js';
_gaq.push(['_require', 'inpage_linkid', pluginUrl]);
_gaq.push(['_setAccount', 'UA-xxxxxxx-x']);
_gaq.push(['_setDomainName', 'domain.com']);
_gaq.push(['_setCustomVar',1,'Enquiry Type','e-Notification']);
_gaq.push(['_trackPageview']);

(function() {
    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();
</script>

这里值得注意的一点是设置自定义变量的行包含在 PHP IF 语句中。本质上,我只想在提交表单后设置此变量,以便我可以从选择框中捕获值。

最后,我想做的就是让人们填写表格并获取选择框的值以传回给 Google Analytics(分析)。我不希望在每个页面加载时都设置该值,因此一旦 _setCustomVar 已运行,一旦我破坏了会话值,就不会再次调用它(当然,除非表单第二次完成)。

这里是构造用于与 GIF 一起传递的参数(以防它有助于调试)

utmac=UA-xxxxxx-x
utmcc=__utma=247537282.1869531581.1359929325.1365982402.1365984281.5;+__utmz=247537282.1365982402.4.3.utmcsr=domain.com|utmccn=(referral)|utmcmd=referral|utmcct=/;
utmcs=UTF-8
utmdt=Request A Call Back
utme=8(Enquiry Type)9(e-Notification)
utmfl=-
utmhid=1514805008
utmhn=www2.domain.com
utmht=1365984805826
utmje=1
utmn=1234674801
utmp=/request-call-back.php?action=sent&oForm=2
utmr=0
utms=7
utmsc=24-bit
utmsr=1680x1050
utmu=qR~
utmul=en-us
utmvp=1680x672
utmwv=5.4.1

通过我用来绕过 PHP IF 语句的各种测试,我取得了“一些”成功。换句话说,我有时可以将我的测试数据放入自定义变量报告中,但大多数时候我不能。关于为什么虚拟测试有效和无效,似乎没有一致的逻辑。

最后一件事,需要使用 _setDomainName,因为帐户上的域是“domain.com”,但包含脚本的站点是“www2.domain.com”。我不认为这对问题很重要,而只是另一件事要记住。

有什么想法吗?

【问题讨论】:

    标签: php google-analytics


    【解决方案1】:

    你可能错过了_setCustomVar方法中的第四个参数scope

    _gaq.push(['_setCustomVar',
          1,                   // This custom var is set to slot #1.  Required parameter.
          'Items Removed',     // The name acts as a kind of category for the user activity.  Required parameter.
          'Yes',               // This value of the custom variable.  Required parameter.
          2                    // Sets the scope to session-level.  Optional parameter.
       ]);
    

    因此,如果您在一个页面上设置了值而在同一页面上根本不设置它(甚至没有设置为“null”),则值可能会停留在最后一级。每次访问和每个用户级别都相同。

    您应该将变量视为属于用户(生命周期)、会话(访问)或单个页面视图的一种“属性”。

    根据我的经验,在 90% 的实现中处理这个问题都是错误的。

    另外:省略意味着页面级别意味着每次点击都会增加一个值(或不增加一个值)。

    备注:根据您的问题,我假设这应该是会话级别 (2) 而不是页面级别 (3)。并且只有在状态转换时才应该设置它,你已经在 PHP 中实现了。

    【讨论】:

    • 感谢您的回复。我将范围留空,以便它采用我认为适合我想要实现的默认范围。这是我第一次使用自定义变量,据我了解,页面级范围是我所追求的。一个用户可以完成多个表单,我想为每个提交捕获表单中的字段。这是最好的方法吗?
    • 是的,通常是的。将值填充到报告中也需要一些时间。 “延迟”最长可达一个小时(访问到期时间为 30 分钟)。所以,“点击查看”测试可能会失败,继续,给自己喝杯咖啡,然后……等等;-)
    • 那么您是否建议我尝试使用“2”而不是 null(默认 3)的范围?如果我将其保留为默认值,我实际上并没有更改我的代码来测试任何新内容?我很高兴尝试使用“2”,但这是否意味着我只是误解了会话级别的工作原理?
    • 这是关于被计算的指标。假设用户 A 开始了一个会话,进行了 5 次页面浏览,几个小时后他开始了一个新会话并再次获得了 10 个 PV。根据级别,这将为您提供 1 个用户、2 个会话和 15 个页面浏览量。例如,如果在这些页面中的某处设置了“是”值,而在某处设置了“否”值,则这些唯一值将按浏览量 (x)、每个会话 (2) 或每个用户 (1) 计算。信息“是”有 1 个用户,“否”有 1 个用户并不意味着有 2 个用户 (!)。
    猜你喜欢
    • 2012-04-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多