【问题标题】:Google Analytics - Tracking Multiple Properties Including ParentGoogle Analytics - 跟踪多个属性,包括父级
【发布时间】:2016-02-14 11:59:15
【问题描述】:

我正在尝试为多个子域属性设置跟踪,同时还将数据发送到主属性。

现在,我们有以下设置:

domain.com - UA-XXX-1

foo.domain.com - UA-XXX-2

bar.domain.com - UA-XXX-3

如果用户访问域“foo.domain.com”,我希望将数据发送到 UA-XXX-1 和 UA-XXX-2 以进行综合浏览。据我了解,我需要这样设置 GA 代码:

<script>
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');

ga('create', 'UA-XXX-1', 'auto');
ga('send', 'pageview');
ga('create', 'UA-XXX-2', 'auto',{'name': 'Foo'});
ga('Foo.send', 'pageview');
</script>

这样设置所有子域意味着如果我转到 UA-XXX-1,我将看到来自我设置的所有子域属性的混合数据,如果我进入各个子域,我只会看到那些特定属性的数据。简单。

但是,我想弄清楚的是,在添加事件/转化跟踪等内容时,这是否是正确的方法?

如果我有这样的链接:

<a href="teletubbies.com" onclick="ga('send','event','Teletubby','Tinkywinky','Click');">Teletubbies</a>

这只会将事件发送到 UA-XXX-1 属性,而不是也设置的第二个属性 UA-XXX-2,对吗?这是否意味着,对于每个跟踪代码,我需要添加两个单独的跟踪代码来发送事件跟踪,还是有更简单的解决方案?

<a href="teletubbies.com" onclick="ga('send','event','Teletubby','Tinkywinky','Click'); ga('Foo.send', 'event', 'videos', 'predators');">Teletubbies</a>

【问题讨论】:

    标签: javascript google-analytics cross-domain event-tracking


    【解决方案1】:

    以上所有内容都是正确的。是的,您需要将匹配发送两次才能让它们显示在两个单独的属性中。

    如果您不喜欢重复自己,可以将两个发送命令抽象为一个 JavaScript 函数,该函数始终将命中发送到两个属性。

    例如:

    function runGACommand() {
      var mainTrackerArgs = [].slice.call(arguments, 0);
      var fooTrackerArgs = mainTrackerArgs.slice(0);
    
      // Sets the "Foo" name on the second set of arguments.
      fooTrackerArgs[0] = 'Foo.' + fooTrackerArgs[0];
    
      // Runs the command on both trackers.
      ga.apply(null, mainTrackerArgs);
      ga.apply(null, fooTrackerArgs);
    }
    

    现在您可以将事件处理程序简化为:

    <a href="teletubbies.com" onclick="runGACommand('send','event','Teletubby','Tinkywinky','Click');">Teletubbies</a>
    

    它会将数据发送到两个属性。

    【讨论】:

    • 呃!不知道为什么我没有想到这么简单的事情。谢谢!
    • 当我运行脚本时,我收到错误 Uncaught TypeError: arguments.slice is not a function。但是,将第二行更改为“var mainTrackerArgs = Array.prototype.slice.call(arguments);”整理出来。
    • 啊,是的,因为 arguments 实际上不是一个数组;它类似于数组。更新了!
    猜你喜欢
    • 1970-01-01
    • 2022-11-21
    • 2014-08-09
    • 2021-01-12
    • 1970-01-01
    • 2018-06-17
    • 1970-01-01
    • 2014-02-18
    • 1970-01-01
    相关资源
    最近更新 更多