2016-10-03 94 views
0

我是GTM的新手,但在尝试提交2个增强的数据图层中的电子商务事件时遇到问题。当我查看Google Analytics(分析)时,只有最后一个事件似乎正在发送。Google跟踪代码管理器多个增强型电子商务事件

我遇到http://www.simoahava.com/analytics/ecommerce-tips-google-tag-manager/其中,就在总结之前,似乎总结一下我说的话就只提交最后一个。

dataLayer.push({ 
     'event': 'addToCart', 
     'ecommerce': { 
      'currencyCode': 'GBP', 
      'add': { 
       'products': dataLayerProducts 
      } 
     } 
    }); 
    dataLayer.push({ 
     'event': 'checkout', 
     'ecommerce': { 
      'checkout': { 
       'actionField': {'step': 1}, 
       'products': dataLayerProducts 
      } 
     } 
    }); 

只有结账会在Google Analytics中注册。我试过的东西像下面这样:

dataLayer = [{ 
     'event': 'checkout', 
     'event': 'addToCart', 
     'ecommerce': { 
      'add': { 
       'products': dataLayerProducts 
      }, 
      'checkout': { 
       'actionField': {'step': 1}, 
       'products': dataLayerProducts 
      } 
     } 
    }]; 

dataLayer = [{ 
     'event': 'addToCart', 
     'ecommerce': { 
      'add': { 
       'products': dataLayerProducts 
      }, 
     } 
    }, { 
     'event': 'checkout', 
     'ecommerce': { 
      'checkout': { 
       'actionField': {'step': 1}, 
       'products': dataLayerProducts 
      } 
     } 
    }]; 

但我没有运气做这样无论是。如果这是不可能的,任何有用的解决方法将不胜感激。

使用新代码更新: 仍然只发送上一个事件(签出)。代码在开始<body>标记后立即出现。

<script> 
dataLayer = []; 
dataLayerProducts = []; 
dataLayerProducts.push({ 
    'name': 'Product Name', 
    'id': 'SKU', 
    'price': '29.95', 
    'brand': 'Brand', 
    'category': 'Some/Category', 
    'quantity': 1 
}); 
dataLayer.push({ 
    'event': 'addToCart', 
    'ecommerce': { 
     'add': { 
      'products': dataLayerProducts 
     }, 
    } 
}); 
dataLayer.push({ 
    'event': 'checkout', 
    'ecommerce': { 
     'checkout': { 
      'actionField': {'step': 1}, 
      'products': dataLayerProducts 
     } 
    } 
}); 
</script> 
<!-- Google Tag Manager --> 
// Code 
<!-- End Google Tag Manager --> 

回答

0

要触发代码触发,你需要有一个事件,该事件是否是无论是从先前的推或当前的一个,所以这就是为什么它总是与推送event沿着一个很好的做法要发送到GA的数据点。 Simo的例子很好地说明了这一点。但是由于dataLayer也存在键:值对,它总是会使用它看到的最新事件。如果您同时推送多个event,则推入的最后一个覆盖先前的那个。这就是为什么在一个dataLayer.push中不能有多个事件,并期望所有关联的标签都能触发。

你需要做什么遵循Simo的例子,并将每个数据集/对象连同它自己的event一起推送到dataLayer中。推送到dataLayer(dataLayer.push),而不是像您的示例中那样声明它们,可以让内置侦听器获取这些特定的数据点。

编辑:修改OP的代码为例:

dataLayer.push({ 
    'event': 'addToCart', 
    'ecommerce': { 
     'add': { 
     'products': // dataLayerProducts, one object per product 
     }, 
    } 
}); 
dataLayer.push({ 
    'event': 'checkout', 
    'ecommerce': { 
     'checkout': { 
     'actionField': {'step': 1}, 
     'products': // dataLayerProducts, one object per product 
     } 
    } 
}); 
+0

你可以用代码示例修改,以帮助我理解?因为我如何阅读它,当你说我需要用自己的事件推送每个数据集时,我认为这就是我在问题的第一个代码块中所做的。 – Nathan

+0

在您的第一个代码块中,通过声明第二个代码覆盖第一个事件。请记住正常的JS规则是适用的,所以如果你给一个变量赋值,然后再赋值另一个,那么最后一个坚持。 – nyuen

+0

所以我采用了您的示例代码,并使用完整的代码编辑了我的问题。但是,只有结帐事件似乎正在推动。分析显示没有加入购物车的会话,但带有结账的会话显示正确。 – Nathan

相关问题