Javascript 重复计算Google Tag Manager/Universal Analytics中的自定义指标

Javascript 重复计算Google Tag Manager/Universal Analytics中的自定义指标,javascript,google-analytics,google-tag-manager,Javascript,Google Analytics,Google Tag Manager,我管理一个酒店/度假村网站的分析,该网站包含8个不同的属性,所有这些属性都位于一个域中,每个属性都有自己的子域。例如,www.example.com上有一个启动页面,链接到所有其他属性,这些属性位于property1.example.com上。我还应该提到的是,我们正在使用谷歌标签管理器容器中舒适的通用分析 问题在于,对于某些事务,自定义指标都在成倍增加。95%的购买是单人房,但GA中报告的内容与我们的后端数据不符。请注意成人指标是如何全部为偶数的: 为了使问题进一步复杂化,我使用了一个自定义

我管理一个酒店/度假村网站的分析,该网站包含8个不同的属性,所有这些属性都位于一个域中,每个属性都有自己的子域。例如,www.example.com上有一个启动页面,链接到所有其他属性,这些属性位于property1.example.com上。我还应该提到的是,我们正在使用谷歌标签管理器容器中舒适的通用分析

问题在于,对于某些事务,自定义指标都在成倍增加。95%的购买是单人房,但GA中报告的内容与我们的后端数据不符。请注意成人指标是如何全部为偶数的:

为了使问题进一步复杂化,我使用了一个自定义HTML脚本,该脚本使用宏动态设置相应的属性ID:

<script>
if({{hostname}} == "property1.example.com"){
dataLayer.push({'ua': '2', 'event': 'INIT'});
}
else if({{hostname}} == "property1-ssl.example.com"){
dataLayer.push({'ua': '2', 'event': 'INIT'});
}
else if({{hostname}} == "property2.example.com"){
dataLayer.push({'ua': '3', 'event': 'INIT'});
}
else if({{hostname}} == "property2-ssl.example.com"){
dataLayer.push({'ua': '3', 'event': 'INIT'});
}
...(etc.)
</script>

if({hostname}}==“property1.example.com”){
push({'ua':'2','event':'INIT'});
}
else if({{hostname}}==“property1 ssl.example.com”){
push({'ua':'2','event':'INIT'});
}
else if({{hostname}}==“property2.example.com”){
push({'ua':'3','event':'INIT'});
}
如果({{hostname}}==“property2ssl.example.com”){
push({'ua':'3','event':'INIT'});
}
…(等等)
汇总帐户为UA-XXXXXX-1,属性1为UA-XXXXXX-2,属性2为UA-XXXXXX-3,依此类推。rollup属性包含在单独的标记中,而不是单个属性,因为它需要与属性级别标记一起触发;它会在所有页面上激发

我们使用数据层来定义5个自定义指标和6个自定义维度。首先使用自然语言(即签入日期)设置这些变量对,然后使用自定义HTML标记将其转换为相应的度量或维度(即维度1)

以下是一些源代码的示例:

<script>
dataLayer = [{
'transactionId': '1330068',
'transactionAffiliation': 'Property1',
'transactionTotal': '3213',
'transactionTax': '931.77',
'transactionShipping': '0',
'transactionProducts': [{
'sku': '1815',
'name': 'Terrace Junior Suite',
'category': 'Example Resort Property1 - Beach Front',
'price': '3213',
'quantity': '1'
}
,{
'sku': '2256',
'name': 'Welcome Tequila Amenity',
'category': 'Example Resort Property1',
'price': '0',
'quantity': '1'
}
,{
'sku': '2257',
'name': 'Daily Fresh Fruit',
'category': 'Example Resort Property1',
'price': '0',
'quantity': '1'
}
,{
'sku': '2611',
'name': 'Complimentary In-Room Espresso and Tea Service',
'category': 'Example Resort Property1',
'price': '0',
'quantity': '1'
}],
'Room Nights': '3',
'Rooms': '1',
'Adults': '2',
'Children': '0',
'Check-In': '10/29/2013',
'Check-Out': '11/01/2013',
'Country of Origin': 'US',
'State of Origin': 'IL',
'Promo Code': '',
'Night Booking': 'yes',
'Timestamp': '60733'
}];
</script>

数据层=[{
“transactionId”:“1330068”,
“transactionAffiliation”:“Property1”,
“transactionTotal”:“3213”,
“交易税”:“931.77”,
“transactionShipping”:“0”,
“transactionProducts”:[{
“sku”:“1815”,
“姓名”:“露台青年套房”,
“类别”:“示例度假酒店1-海滩前沿”,
‘价格’:‘3213’,
“数量”:“1”
}
,{
“sku”:“2256”,
“姓名”:“欢迎龙舌兰酒礼仪”,
“类别”:“示例度假酒店1”,
“价格”:“0”,
“数量”:“1”
}
,{
“sku”:“2257”,
“名称”:“每日新鲜水果”,
“类别”:“示例度假酒店1”,
“价格”:“0”,
“数量”:“1”
}
,{
“sku”:“2611”,
“姓名”:“免费室内浓缩咖啡和茶服务”,
“类别”:“示例度假酒店1”,
“价格”:“0”,
“数量”:“1”
}],
“房间之夜”:“3”,
“房间”:“1”,
“成人”:“2”,
“Children”:“0”,
“入住”:“10/29/2013”,
“退房”:“11/01/2013”,
“原产国”:“美国”,
“起源国”:“IL”,
“促销代码”:“,
“夜间预订”:“是”,
“时间戳”:“60733”
}];
下面是我的脚本,它将自然语言定义映射到GA友好索引:

<script>
ga('set', {
  'dimension1': '{{Check-In}}',
  'dimension2': '{{Check-Out}}',
  'dimension3': '{{Country of Origin}}',
  'dimension4': '{{State of Origin}}',
  'dimension5': '{{Promo Code}}',
  'dimension6': '{{Night Booking}}',
  'metric1': '{{Room Nights}}',
  'metric2': '{{Rooms}}',
  'metric3': '{{Adults}}',
  'metric4': '{{Children}}',
  'metric5': '{{Timestamp}}'
});
</script>

ga('集'{
'dimension1':'{{Check-In}}',
'dimension2':'{{Check Out}}',
'dimension3':'{{原籍国}}}',
'维度4':'{{起源国}}',
'dimension5':'{{Promo Code}}}',
“维度6”:“{{夜间预订}}”,
“metric1”:“{{Room Nights}}”,
“metric2”:“{{Rooms}}”,
“metric3”:“{{成年人}}”,
“metric4”:“{{Children}}”,
“metric5”:“{Timestamp}”
});
最后,我有一个通用的分析页面视图标签来触发这些自定义指标和维度。此标记的规则是:是确认URL,event=INIT。


如果需要,我可以提供更多的细节,但我担心我可能已经失去了你们中的大多数人。我认为问题与我的自定义标记有关,或者与如何将自定义度量和DIMSENSION推送到GA服务器有关。非常感谢你的帮助

这一情景的巨大崩溃。这花了几分钟,但我想我能把我的头绕在这上面

我认为问题在于ga集(如下所示),这与您的想法一致:


ga('集'{
'dimension1':'{{Check-In}}',
'dimension2':'{{Check Out}}',
'dimension3':'{{原籍国}}}',
'维度4':'{{起源国}}',
'dimension5':'{{Promo Code}}}',
“维度6”:“{{夜间预订}}”,
“metric1”:“{{Room Nights}}”,
“metric2”:“{{Rooms}}”,
“metric3”:“{{成年人}}”,
“metric4”:“{{Children}}”,
“metric5”:“{Timestamp}”
});
您在此处设置所有维度/指标,但也在Universal Analytics(beta)标签(此处)中设置它们:

当您在Universal Analytics标记中引用宏(即签入、签出等)并将触发规则设置为{{url}}}确认时,只需要一个。您已经在电子商务跟踪中传递了宏的值,因此GTM将能够在您发送时引用这些值

其中只有一个是必要的,我要做的是在Universal Analytics(beta)Track Type=Transaction上传递自定义维度/度量(假设这是您用来将电子商务信息传递给GA的),并添加自定义维度/度量(在“更多设置”>“自定义维度/自定义度量”下)

让我知道这是否有意义。很乐意提供帮助。

调用ga('set',{your dimensions here})应该告诉universal analytics在该跟踪器对象的生命周期内(即,在加载新页面之前)在每次点击时发送数据。因此,如果您在同一页面上发送了一个页面视图和一个事务,瞧,请将度量加倍


检查这是否是问题的一个快速方法是创建一个自定义事务报告,并查看您的自定义维度/度量是否与该命中关联。

检查页面上的Google标记,如果它是双精度的,那么值将被双精度计算。您将必须获取其中一个代码。因此触发规则是双精度触发i在这种情况下。
-Bhupinder Kohli

我以为你可能就在那里,但我做了改变,我很高兴
<script>
ga('set', {
  'dimension1': '{{Check-In}}',
  'dimension2': '{{Check-Out}}',
  'dimension3': '{{Country of Origin}}',
  'dimension4': '{{State of Origin}}',
  'dimension5': '{{Promo Code}}',
  'dimension6': '{{Night Booking}}',
  'metric1': '{{Room Nights}}',
  'metric2': '{{Rooms}}',
  'metric3': '{{Adults}}',
  'metric4': '{{Children}}',
  'metric5': '{{Timestamp}}'
});
</script>