提取Google Analytics广告系列Cookie信息并插入查询表单字段。这可能吗?

时间:2011-11-30 21:09:26

标签: javascript html google-analytics analytics tracking

我一直在使用Google Analytics。对于我的一位客户,我们广泛使用广告系列跟踪。最近我们开始收集多渠道漏斗分析。使用它的主要原因是我们可以跟踪人们来自哪些广告系列,然后当有人填写查询表单时,我们设置了目标(查询感谢页面),因此Google Analytics可以将目标与允许该人访问感谢页面的广告系列。

我的客户今天问我,“这些信息非常有价值。更好的是,当访问者到达查询表单时,有一种方法可以从分析cookie中提取活动信息并将其放入表单上的隐藏字段中...因此,当提交表单时,销售接收它的人不仅会看到访问者填写的信息,而且还有一个字段,显示哪个活动允许该人最终填写查询表。“这不是逐字逐句,但希望你明白他们是什么正在要求。 我知道Cookie必须跟踪所有广告系列,因为Google Analytics会在报告中显示该信息。当有人登陆查询表单页面并将其放入隐藏字段(他们不希望客户看到该信息)时,它会自动提取该信息,因此销售部门可以看到它将真正完成报告系统。

如果有人知道如何做到这一点,或者有任何令人敬畏的见解。

2 个答案:

答案 0 :(得分:8)

是的,有可能。

    var GATrafficSource = (function(){
            var pairs = (/(?:^|; )__utmz=([^;]*)/.exec(document.cookie)||[]).slice(1).pop().split('.').slice(4).join('.').split('|');
            var vals = {};
            for (var i = 0; i < pairs.length; i++) {
                var temp = pairs[i].split('=');
                vals[temp[0]] = temp[1];
            }
        return  {
            'utm_source': (vals.utmgclid) ? "google" : vals.utmcsr,
            'utm_medium': (vals.utmgclid) ? "cpc" : vals.utmcmd,
            'utm_campaign': vals.utmccn,
            'utm_content': vals.utmcct,
            'utm_term': vals.utmctr
        };
    }());

然后,您可以将所需的广告系列变量放入隐藏字段中。

例如,如果你有:

<input type="hidden" name="utm_source" class="gacampaign" id="utm_source">

你可以这样填写:

document.getElementById("utm_source").value = GATrafficSource.utm_source;

答案 1 :(得分:0)

在调试一些遗留代码时找到了这个帖子(实际上可能已复制/粘贴了这个帖子的现有答案!)

我想我会添加一些关于相关问题的评论,这些评论会引导我到这里来,以免其他任何有同样问题的人在这里结束。

来自@ Yahel的答案的代码在编写时运行良好,但是当我将其重新编写为新的上下文时,它有时会抛出一个错误,该错误导致所有代码在Chrome中没有调用该情境在其计算机上任何Google Analytics Cookie。

我已将其转换为以下代码:

function getGATS(){
    var pairs = (/(?:^|; )__utmz=([^;]*)/.exec(document.cookie)||[]).slice(1).pop().split('.').slice(4).join('.').split('|');
    var vals = {};
    for (var i = 0; i < pairs.length; i++) {
        var temp = pairs[i].split('=');
        vals[temp[0]] = temp[1];
    }
    return {
        'utm_source': (vals.utmgclid) ? "google" : vals.utmcsr,
        'utm_medium': (vals.utmgclid) ? "cpc" : vals.utmcmd,
        'utm_campaign': vals.utmccn,
        'utm_content': vals.utmcct,
        'utm_term': vals.utmctr
    };
}

另一个&#34; getter&#34;然后做了这个:

            return $.extend({}, {
                    'is_constituent_checked' : $('#IsConstituent').is(':checked'),
                    'statuses' : getStatusesString()
                }, getGATS());

那&#34; getter&#34;由&#34; addHiddenInputs()&#34;循环其返回值并将这些输入/值添加到DOM的函数。 (这适用于&#34; onSubmit&#34;表格后处理。)

=======

事实证明,当Chrome环境中没有GA Cookie的用户(&#34; alert(document.cookies);&#34;没有显示任何&#34; utm&#34 ;值)试图将我的表单,整个调用提交给&#34; addHiddenInputs()&#34;没能完成它的工作。

这是因为第一次调用&#34; .split()&#34; on &#34;(/(?:^ |;)__ utmz =([^;] )/。exec(document.cookie)|| [])。slice(1).pop( )&#34; *当该片段被评估为&#34; undefined&#34; (与没有Google Analytics Cookie的情况一样)。

将函数的主体放在&#34; try {}&#34;阻止并添加&#34; catch(错误){...}&#34; (在我的情况下,使用&#34; return {};&#34;因为&#34; ...&#34;)解决了问题。