标签: google-datalayer

GTM - 将事件/数据推送到gtm dataLayer不发送任何内容到https://www.google-analytics.com/r/collect?v

我在我的chrome扩展页面中添加了这个gtm代码(由内容脚本in和iframe注入)

// <!-- Google Tag Manager -->
(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='https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
})(window,document,'script','owDataLayer','GTM-XXXXXXX');
// <!-- End Google Tag Manager -->
Run Code Online (Sandbox Code Playgroud)

我确认已成功加载的gtm.js文件.

Request URL:https://www.googletagmanager.com/gtm.js?id=GTM-XXXXXX&l=dataLayer
Request Method:GET
Status Code:200  (from disk cache)
Run Code Online (Sandbox Code Playgroud)

我有一个按钮,下面的代码已附加到按钮的单击事件

dataLayer.push({'event':'tab click','user id':123,'description':"Social"});

当我单击按钮dataLayer.push成功工作但没有任何内容被发送到https://www.google-analytics.com/r/collect? 开发人员工具栏窗口的"网络"选项卡中的任何活动.

任何人都可以帮我解决这个问题吗?提前致谢!

编辑: 添加标签设置的屏幕截图. 在此输入图像描述

google-chrome-extension google-tag-manager google-datalayer

6
推荐指数
1
解决办法
2329
查看次数

有没有安全的方法将 eventCallback 与 GTM DataLayer 一起使用?

当有人点击我网站上的“购买”按钮时,我尝试使用 dataLayer 和 dataLayer.push 通过 Google 跟踪代码管理器跟踪此事件。

它看起来像这样:

dataLayer.push({
  'event': 'service',
  'category': 'purchase',
  'action': 'product selected',
  'label': product
});
Run Code Online (Sandbox Code Playgroud)

问题是,每次用户单击按钮时,服务都会立即重定向到购物车,因此在某些情况下,事件没有足够的时间触发,并且 Google Analytics 中的数据不完整。

我知道有一个“eventCallback”选项可以与 dataLayer 一起使用,如下所示

dataLayer.push({
  'event': 'service',
  'category': 'purchase',
  'action': 'product selected',
  'label': product,
  'eventCallback': function () {
    //redirect to the shopping cart
  }
});

});
Run Code Online (Sandbox Code Playgroud)

但这个选项的问题是,它产生了依赖性,并且在某些情况下,由于 Google Tag Manger 的一些问题,用户没有被重定向到购物车(这对我们来说是一个大问题)。

是否有更流畅、更有效的方法来处理这个问题,以便我们可以在不中断服务的情况下收集尽可能多的数据(例如,当在用户浏览器中启用跟踪保护时)

google-analytics google-tag-manager google-datalayer

5
推荐指数
1
解决办法
1306
查看次数

React JS + google 标签管理器:如何在页面转换时触发数据层

我在 React 应用程序中尝试将数据发送到 GTM(谷歌标签管理器)时遇到问题。我们已经设法在相关页面上放置了不同的脚本。

例如下面是我们放入购物车页面的脚本之一:

class Cart extends Component {

  render() {
    const { cartItems } = this.props;
    return (
      <script
        dangerouslySetInnerHTML={{ __html: `
          window.dataLayer = window.dataLayer || [];
          window.dataLayer.push({
            event: 'viewCart',
            cartItems: ${cartItems}
          });
          window.history = window.history || [];
          window.history.pushState({
            page: 'Current Cart Page',
            events: 'viewCart',
            cartItems: ${cartItems},
          }, 'Current Cart Page');
        ` }}
      />
    );
  }
}
Run Code Online (Sandbox Code Playgroud)

当我们从另一个页面(EG:主页)访问购物车页面时,上面的脚本不会执行,但是当我们刷新页面时,它会被触发。

事实证明,数据层只推送pageLoadDOMReady事件。但不在historyChange

有没有人遇到过这个问题并知道如何解决?

javascript google-tag-manager reactjs google-datalayer

5
推荐指数
0
解决办法
2882
查看次数

在单页面应用程序中重置数据层变量(Google代码管理器)

尝试在SPA的移动网站中实现内容分组.

场景如下:当我第一次访问PDP页面时,设置了类别变量,并将其发送到Universal Analytics标记中的内容组.如果在此之后我返回主页,则类别变量不会更新,并且主页也会分组在先前PDP页面的相同内容组下.

此变量仅在我访问另一个PDP页面时更新.

我正在使用自定义事件PageLoad来模仿pageView事件.只是希望数据层变量在连续的PageLoad事件中刷新.

谢谢

single-page-application google-datalayer

5
推荐指数
2
解决办法
3476
查看次数

如何从 dataLayer 对象中获取值

我想从 google 标签管理器的 dataLayer 对象中获取一些值。在 chrome 标签帮助中,我得到了这样的值

[
  {
    "gtm.start": 1503053374849,
    "event": "gtm.js",
    "gtm.uniqueEventId": 0
  },
  {
    "event": "gtm.dom",
    "gtm.uniqueEventId": 1
  },
  {
    "event": "gtm.load",
    "gtm.uniqueEventId": 2
  },
  {
    "Linker": "_ga=53655374"
  }
]
Run Code Online (Sandbox Code Playgroud)

我需要获得“链接器”值。我试过了,dataLayer[3].Linker但它给了我“未定义”或空白也相同dataLayer[1].event(它是空白而不是返回值 =“gtm.dom”)当我尝试时dataLayer[0].event它返回正确'gtm.js'

请帮助我如何获得“链接器”值

javascript jquery google-tag-manager google-datalayer

5
推荐指数
3
解决办法
2万
查看次数

Firefox 增强隐私保护阻止 Datalayer 推送到 Google 跟踪代码管理器

在过去的几周里,我发现我们建立和维护的一个网站的 Google Analytics 中的转化跟踪每天都会下降约 20% - 40%。

在除 Firefox 之外的任何浏览器中进行测试时,一切正常,您可以看到转化立即推送到 Analytics。

但是,在 Firefox 中,当您打开增强隐私保护(现在默认打开)时,您会收到以下错误:

跨源请求被阻止:同源策略不允许读取https://www.googleadservices.com/pagead/conversion/957837126/wcm?cc=ZZ&dn=01858439338&cl=ITVOCP2S_34Qxt7dyAM&ct_eid=2处的远程资源。(原因:CORS请求未成功)。

一旦您关闭增强隐私保护,它就会完美运行。

我用来推送到数据层的代码(如果有任何相关性)是:

<script type="text/javascript">
  document.addEventListener( 'wpcf7mailsent', function( event ) {
   window.dataLayer.push({
      "event" : "cf7submission",
      "eventAction": "FormSubmission",
      "eventCategory": "Contact Form Submission",
      "eventCallback" : function() {
        // Firefox never gets to run this callback to redirect page - which is what triggered further investigation.
        window.location.href = "https://www.domain.co.uk/thank-you/"; 
        return false;
      },
      "eventTimeout" : 2000 // I had to add this in so that it still redirects …
Run Code Online (Sandbox Code Playgroud)

javascript wordpress firefox cors google-datalayer

5
推荐指数
1
解决办法
3746
查看次数

如何正确使用dataLayer.push()更新数组中嵌套对象的值?

这是我的dataLayer数组:

dataLayer = [{
  'giftBatch' : {
    'giftID': '',
    'giftAmount': 0,
    'giftCount': 0,
    'giftUpdate': {
      'giftPhase': 'Gift Empty'
    }
  },
  'txBatch': {
    'txID': '',
    'txTotal': 0,
    'txURL': window.location.href,
    'txUpdate': {
      'txPhase': 'Transaction Opened',
      'txT0': new Date(),
      'txT1': ''
      'txT2': ''
    }
  }
}];
Run Code Online (Sandbox Code Playgroud)

控制台结果为:Array [Object1]

根据需要,Object1包含“ giftBatch”和“ txBatch”对象。

我有一个触发器,稍后触发以更新dataLayer中的对象。

例如,将“ giftAmount”更新为50,将“ giftCount”更新为1。

我尝试了以下方法(我仅展示了一次修改“一个对象”的失败尝试),

尝试1:

dataLayer.push({giftAmount : 50});
Run Code Online (Sandbox Code Playgroud)

结果:

数组[object1,object2]

Object1与上面相同,

Object2是一个新对象,其属性为'Gift Amount':50

尝试2:

dataLayer.push({giftBatch.giftAmount: 222});
Run Code Online (Sandbox Code Playgroud)

结果: SyntaxError:缺少:属性ID之后

尝试3:

dataLayer.push({'giftBatch.giftAmount' : 50});
Run Code Online (Sandbox Code Playgroud)

结果:

数组[object1,object2]

Object1与上面相同,

Object2是一个具有'giftBatch.giftAmount'属性的新对象:50 …

javascript arrays google-analytics google-tag-manager google-datalayer

4
推荐指数
1
解决办法
4942
查看次数

如何更新数据层变量?

我们最初将一个包含变量的对象推送到数据层:

dataLayer.push({
    'environment': {
        'userName': 'abc',
        'id': 123,
        'clicks': 0
    }
});
Run Code Online (Sandbox Code Playgroud)

我们现在想要增加environment.clicks用户每次点击的价值。怎么做?当我们通过

dataLayer.push({
    'environment': {
        'clicks': 123
    }
});
Run Code Online (Sandbox Code Playgroud)

dataLayer Array 可能会获得 10.000 个条目。如何正确更新变量?

javascript google-analytics google-tag-manager google-datalayer

4
推荐指数
2
解决办法
8762
查看次数

跟踪代码管理器 JS 上数据层推送事件的事件侦听器

我想添加一个集成到页面上现有跟踪代码管理器数据层的自定义脚本。我需要这个脚本来通知新的数据层推送。因此,每当页面上的某些内容使用 时window.dataLayer.push,我的脚本都应该被告知这一点。

有没有办法将自定义 dataLayer 事件侦听器添加到 Google Script API?

我正在寻找类似的东西

google_tag_manager.dataLayer.onPush(callback);
Run Code Online (Sandbox Code Playgroud)

google_tag_manager.dataLayer.subscribers似乎列出了有多少个 dataLayer 订阅者 - 但我如何添加自己的订阅者?

javascript google-tag-manager google-datalayer

4
推荐指数
1
解决办法
1万
查看次数

错误:包com.google.android.gms.tagmanager不存在

我正在开发一个项目,其中我使用TagManagerDatalayer类来实现GTA和增强的电子商务,我在build.gradle中使用'com.google.android.gms:play-services-base:12.0.1'和android studio版本3.0.1显示我将它更新到15.0.0,当我更改其版本和同步项目时,它现在给我错误:

错误:包com.google.android.gms.tagmanager不存在

我更新了android studio 3.1.1并使用了构建工具版本27,但它无法解决这个问题.它仍然显示相同的错误消息.

build.gradle信息:

compileSdkVersion 27
buildToolsVersion "27.0.2"

minSdkVersion 16
targetSdkVersion 27

compile 'com.android.support:appcompat-v7:27.1.1'
compile 'com.android.support:design:27.1.1'
compile 'com.android.support:cardview-v7:27.1.1'
compile 'com.android.support:recyclerview-v7:27.1.1'
compile 'com.android.support:customtabs:27.1.1'

compile 'com.google.android.gms:play-services-auth:15.0.0'
compile 'com.google.android.gms:play-services-base:15.0.0'
compile 'com.google.android.gms:play-services-gcm:15.0.0'
compile 'com.google.android.gms:play-services-analytics:15.0.0'
Run Code Online (Sandbox Code Playgroud)

我的activity类中存在此问题的一段代码:

import com.google.android.gms.tagmanager.DataLayer;
import com.google.android.gms.tagmanager.TagManager;
Run Code Online (Sandbox Code Playgroud)

我无法理解这个更新15.0.0如何没有tagmanager和datalayer.

android google-tag-manager google-datalayer enhanced-ecommerce android-studio-3.0

3
推荐指数
1
解决办法
2282
查看次数