无法将具有Google跟踪代码管理器的自定义变量推送到GA

时间:2014-07-25 16:42:18

标签: google-analytics google-tag-manager

我正在尝试使用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

先感谢您的时间和帮助!

布雷特

1 个答案:

答案 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,因此:

  1. 添加一个宏,选择“dataLayer variable”作为类型
  2. 在输入中输入变量名称并命名(最好以同样的方式命名以进行调试)
  3. 对剩余的3个维度重复1和2
  4. 通过展开“更多选项 - &gt;自定义维度”来修改标准GTM GA代码,并在步骤1-3中添加您已配置的维度编号和可变数据。
  5. 保存更新后的标签,然后点击“预览按钮”以使用底部的GTM调试栏启动您的网站
  6. 检查调试栏中是否已将数据传递给dataLayer,然后检查变量是否匹配并传递给GA
  7. 没有人说使用GTM很简单;)