我正在尝试使用GTM在Google Analytics中构建再营销受众群体列表。我需要一些帮助,找出如何通过GTM通过数据层传递自定义变量到GA。
到目前为止,我已经能够通过硬编码一些自定义代码并将自定义变量直接传递到GA(绕过GTM)来成功实现这一目标。但是,当我使用此代码时,它会偏离通过自定义代码和现有GTM实例存在的相同GA的GA编号b / c 2实例。这很好,因为它有利于膨胀数字;)不幸的是,我们目前非常依赖GTM,因此不能放弃它。
我们现在要做的是修改工作代码以与GTM一起使用,这样我们就不会像上面提到的那样夸大我们的数字。到目前为止,我们可以通过检查chrome中的控制台在数据层中看到这些数据。但是,我们无法将此数据推送到GA。
以下是我们之前使用的代码示例,它不依赖于GTM并成功将自定义变量推送到GA。
<script>var _gaq = _gaq || [];_gaq.push(["_setAccount", "UA-XXXXXX-X"]);_gaq.push(['_setCustomVar', 1, "Category", "testing", 3]);_gaq.push(['_setCustomVar', 2, "content-type", "Brief", 3]);_gaq.push(['_setCustomVar', 3, "publish-date", "Wednesday, July 16, 2014 - 17:42", 3]);_gaq.push(['_setCustomVar', 4, "author", "Greg Bates", 3]);_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>
对于当前的GTM实现,有一些使用GTM的混合和硬编码更新的脚本,我将在下面详细说明。
在我的GTM标准GA标签中,设置如下:
Tag Name: GA Universal
Tag Type: universal analytics
Tracking ID: UA-XXXXXX-X
Enable Display Advertising Features √
Track Type: Page View
Firing Rules: All pages
More Settings>>Custom Dimensions:
Index = 4 Dimension = {{Author}}
Index = 3 Dimension = {{Publish Date}}
Index = 2 Dimension = {{Content Type}}
Index = 1 Dimension = {{Page Category}}
手动硬编码到页面中的自定义代码如下:
<script>
if (Drupal.settings.common !== undefined && Drupal.settings.common.pageCategory !== undefined) {
dataLayer = [{
'pageCategory': Drupal.settings.common.pageCategory
}];
var google_tag_params = {
section: Drupal.settings.common.pageCategory,
pagetype: ' ',
membertype: ' '
};
if (Drupal.settings.common.contentType !== undefined) {
dataLayer.push({'contentType': Drupal.settings.common.contentType});
google_tag_params.contenttype = Drupal.settings.common.contentType;
}
if (Drupal.settings.common.publishDate !== undefined) {
dataLayer.push({'publishDate': Drupal.settings.common.publishDate});
google_tag_params.publishdate = Drupal.settings.common.publishDate;
}
if (Drupal.settings.common.author !== undefined) {
dataLayer.push({'author': Drupal.settings.common.author});
google_tag_params.author = Drupal.settings.common.author;
}
}
(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
'//www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
})(window,document,'script','dataLayer','GTM-XXXXXX');</script> <noscript><iframe src="//www.googletagmanager.com/ns.html?id=GTM-XXXXXX" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
我还要补充说,在执行GTM脚本之前定义了Drupal.settings.common.author,Drupal.settings.common.contentType,Drupal.settings.common.pageCategory和Drupal.settings.common.publishDate。
任何人都可以提供一些有用的见解,了解我们做错了什么,以及如何将这些自定义变量传递到Google Analytics中?
如果要查看实时实施会有所帮助,请点击此链接http://api.pw/Uem8ba。
先感谢您的时间和帮助!
布雷特
答案 0 :(得分:3)
好的,首先,因为它是Drupal - 放弃你的自定义实现,转而支持这两个模块:
https://www.drupal.org/project/google_tag
https://www.drupal.org/project/datalayer
配置GTM容器ID,并通过dataLayer传递您需要的所有数据 - 如果在data_layer模块中启用所有复选框后,您没有数据层中所需的所有内容,则必须使用此模块中的alter hook进行推送你的变量 - 因为你的代码准备就绪,应该很容易。
接下来,您必须配置GTM以在GTM中收集数据并将其传递给GA,因此:
没有人说使用GTM很简单;)