数据层推送事件未发送到Google

时间:2018-03-22 10:43:37

标签: google-tag-manager google-datalayer

我遇到了数据层事件的奇怪问题。 我推了一个事件对象

{ 
    'event': 'item',
    'item_name' : 'generic user',
    'item_value' : 'commenced'
}

进入数据层,我可以看到它被正确发送到谷歌。 这些参数显示在analytics.js中,在网络选项卡中调用以下内容:

https://www.google-analytics.com/collect?...&ec=generic%20user%20%20shop&ea=checkout&el=commenced...

我假设插入'结帐'并且标签管理器以某种方式定义了“商店”的添加并且不相关? 然后我推送一个不同类型的事件对象

{ 
    'event': 'item',
    'item_name' : 'generic user',
    'item_description' : 'bermuda shorts',
    'item_size' : 'medium'
}

并再次正确发送。

https://www.google-analytics.com/collect?...&ec=generic%20user%20%20shop&ea=medium&el=bermuda%20shorts...

然后我尝试推送原始类型的另一个对象

{ 
    'event': 'item',
    'item_name' : 'generic user',
    'item_value' : 'next'
}

而不是将新对象发送到谷歌,重新发送上一个对象。

https://www.google-analytics.com/collect?...&ec=generic%20user%20%20shop&ea=medium&el=bermuda%20shorts...

如果我不在中间发送新类型的对象,我可以发送尽可能多的原始对象类型,并将它们正确发送。

使用DataSlayer显示正在添加的事件。 如果我检查dataLayer对象,我可以在数组中看到正确的事件。 在实时事件中查看GA,analytics.js发送的事件按预期显示,但dataLayer中未发送的事件未显示。

有没有人知道会发生什么?

1 个答案:

答案 0 :(得分:2)

问题是你没有清理dataLayer,当你按下最后一个dataLayer时,它会覆盖你正在推送的变量,但是在没有再次推送之前推送的变量,它们仍然可以在dataLayer中使用。 / p>

您可以使用DataMayer选项卡的GTM预览来检查每个dataLayer.push上dataLayer的状态。 enter image description here

示例:

首先推

{ 
  'event': 'item',
  'item_name' : 'generic user',
  'item_value' : 'commenced'
}

DataLayer状态:

{ 
  'event': 'item',
  'item_name' : 'generic user',
  'item_value' : 'commenced'
}

第二次推送

{ 
  'event': 'item',
  'item_name' : 'generic user',
  'item_description' : 'bermuda shorts',
  'item_size' : 'medium'
}

DataLayer状态:

{ 
  'event': 'item', // overwrited
  'item_name' : 'generic user', // overwrited
  'item_description' : 'bermuda shorts', // added
  'item_size' : 'medium', // added
  'item_value' : 'commenced' //still available from first push
}

第三个数据层推送

{ 
  'event': 'item',
  'item_name' : 'generic user',
  'item_value' : 'next'
}

DataLayer状态:

{ 
  'event': 'item', // overwrited
  'item_name' : 'generic user', // overwrited
  'item_description' : 'bermuda shorts', // available from previous push
  'item_size' : 'medium', // available from previous push
  'item_value' : 'next' //overwrited
}

为了解决这个问题,你应该通过推送你不想要的变量来清理dataLayer。

第三次推送的示例

{ 
  'event': 'item',
  'item_name' : 'generic user',
  'item_description' : undefined,
  'item_size' : undefined,
  'item_value' : 'next'
}