从Google Tag Manager传递数据到Google Analytics

3
我在我的Google Analytics账户中有两个配置文件。一个是生产账户,属性ID为:UA-XXXXXXXX-1。另一个是测试账户,属性ID为:UA_XXXXXXXX-2。
在标签管理器中,如果我的URL包含“mydomain.com”,则会触发“-1”标签,如果URL包含“mydomain.it”,则会触发“-2”标签。
这种设置下GA标签的触发工作正常。我能够将我的测试数据与生产数据分开,并能够测试基本的GA页面浏览量。
现在我需要的是分离事件的能力。目前,我在每个事件跟踪之前调用setAccount(我知道这可以在单个调用中完成)。
_gaq.push(['_setAccount', 'UA-XXXXXXXX-1']);
_gaq.push(['_trackEvent', 'Videos', 'Play', 'Gone With the Wind']);

我想要做的是调用_setAccount方法,并根据设置在Google标签管理器中的属性ID(取决于URL)动态传递值。是否有一种方法可以做到这一点(或者更好的方法),以便我可以基于标签管理器规则设置帐户?
_gaq.push(['_setAccount', [Tag Manager Property ID] ]);

我感激您提供的任何建议和帮助。

谢谢!

1个回答

2

在标签管理器和网站之间传递数据,除了所有实际困难之外,还会完全破坏异步加载代码的目的。

您可以将“push”方法推送到堆栈中,以便在未来某个不确定的时间点处理它们。如果您想从代码中获取账户ID,则必须等待其加载完成,因此您将失去异步加载的所有优势。

据我所知(尚未广泛使用标签管理器),正确的方法是将事件数据推送到“data layer”变量:

dataLayer.push({'myevent': 'mylabel'});

并在标签管理器中使用变量(例如dataLayer.myevent)的代码(因此您可以在特定于域的代码中执行实际事件跟踪)。

这在以下链接中有描述:https://developers.google.com/tag-manager/devguide

实际上,在标签管理器中有Google Analytics的事件跟踪模板。对于事件值,您可以创建一个新的宏并将其设置为dataLayer变量。然后添加您的特定于域的规则,就可以了。


啊,明白了,这为我解决了一些问题。是的,数据层对于我想做的事情绝对有意义。谢谢! - sleestak
事件的关键字应该简单地为“event”(dataLayer.push({'event': 'mylabel'});),请参见此处:http://stackoverflow.com/questions/12711240/google-analytics-tag-manager-fails。 - Eike Pierstorff
我刚刚发布了一个类似的问题。有没有办法在GTM界面内完全设置规则,以避开IT并在没有他们的情况下完成这个任务? - MMMdata

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接