使用 Google Tag Manager 和 Google Analytics 跟踪产品浏览量
Product view count tracking with Google Tag Manager and Google Analytics
在 symfony 电子商务项目中,创建产品查看频率报告,以便在用户导航到 /product/detail/{id}
时增加查看次数。我正在使用 Google 跟踪代码管理器和分析,并使用以下内容作为参考:
https://support.usabilla.com/hc/en-us/articles/360015738812-Integration-with-Google-Analytics-using-GTM-Data-Layer#
Google 标签管理器设置
1. 创建触发器
Trigger Type: Page View
Trigger Fire On: Some Page Views (Page path : contains : /products/detail)
2。创建变量
Name: dlv - productName
Variable Type: Data Layer Variable
Name: product.productName
- 创建标签
Tag Type: Google Analytics: Universal Analytics
Track Type: Event
Category: Product Detail // static text
Action: View {{dlv - productName }}
Label: {{ dlv - productName }}
Value: {{ dlv - productName }}
Google Analytics Settings: {{ Google_Analytics_Track_ID_Settings }}
Tiggering: {{ Trigger_created_in_step_1 }}
产品页面
<script>
dataLayer.push({
'product': {
'productId': {{ Product.id }},
'productName': '{{ Product.name }}'
}
});
</script>
我可以在调试 window 中看到 dataLayer
数组正在发送到 Google 标签管理器。在 Google Analytics > Behavior > Events > Top Events
中,我可以在事件类别列中看到产品详细信息。当我单击 link 时,事件操作仅显示 View,事件标签为 (未设置)。我想创建一个表格报告,如 Product Detail: View Orange: 3
、Product detail: View Apple: 4
.
交叉检查您的 {{ dlv - productName }}
变量是否已正确填充,并且该值在代码触发时可供代码使用。如果稍后填充它的值,那么标记将触发您的事件操作,将被跟踪为 (not set)
。如果是这种情况,请考虑将触发器类型更改为 Window loaded 或其他事件,以便标签从 DL.
获取正确的值
虽然前面的回答中提供了关键概念,但还有其他解决方案,可能会给您带来更好的结果。
因此,基本上,您需要确保在启动代码时,您要使用的 dataLayer 数据可用。
为此,您可以延迟标记 到Window 加载事件,但您应该知道,这取决于页面的大小和内容类型,给定百分比的用户将不会启动 Window Loaded 触发器,因此您可能会丢失部分数据。 (他们关闭浏览器,在 Window 加载完成之前导航到其他页面。)
因此,另一种选择是在初始化 GTM 之前将 数据推入数据层。所以你的代码看起来像这样,放在 <head>
:
中的主要 GTM 代码之上
<script>
var dataLayer = window.dataLayer || []; //define dataLayer, while avoiding overwriting its content
dataLayer.push({
'product': {
'productId': {{ Product.id }},
'productName': '{{ Product.name }}'
}
});
</script>
这样,您的页面浏览事件就会看到此数据。
另一种选择是将您的代码留在当前位置,但指定触发事件,让 GTM 了解新数据:
<script>
dataLayer.push({
'event': 'productDataReady',
'product': {
'productId': {{ Product.id }},
'productName': '{{ Product.name }}'
}
});
</script>
这样,您需要将代码的触发器修改为自定义事件,以匹配 event
变量中使用的字符串。在这种情况下,数据可用于此特定事件。
另外,请注意,{{ dlv - productName }}
可能不应该用作事件值,因为 Google Analytics 只接受整数值,而产品名称可能是字符串。
另一个考虑因素是您没有指定(或者至少没有将其包含在您的 post 中),该事件应该是非交互的。如果您在页面加载时生成交互事件,假设您还触发了网页浏览点击,您将获得极低的跳出率。
在 symfony 电子商务项目中,创建产品查看频率报告,以便在用户导航到 /product/detail/{id}
时增加查看次数。我正在使用 Google 跟踪代码管理器和分析,并使用以下内容作为参考:
https://support.usabilla.com/hc/en-us/articles/360015738812-Integration-with-Google-Analytics-using-GTM-Data-Layer#
Google 标签管理器设置
1. 创建触发器
Trigger Type: Page View
Trigger Fire On: Some Page Views (Page path : contains : /products/detail)
2。创建变量
Name: dlv - productName
Variable Type: Data Layer Variable
Name: product.productName
- 创建标签
Tag Type: Google Analytics: Universal Analytics
Track Type: Event
Category: Product Detail // static text
Action: View {{dlv - productName }}
Label: {{ dlv - productName }}
Value: {{ dlv - productName }}
Google Analytics Settings: {{ Google_Analytics_Track_ID_Settings }}
Tiggering: {{ Trigger_created_in_step_1 }}
产品页面
<script>
dataLayer.push({
'product': {
'productId': {{ Product.id }},
'productName': '{{ Product.name }}'
}
});
</script>
我可以在调试 window 中看到 dataLayer
数组正在发送到 Google 标签管理器。在 Google Analytics > Behavior > Events > Top Events
中,我可以在事件类别列中看到产品详细信息。当我单击 link 时,事件操作仅显示 View,事件标签为 (未设置)。我想创建一个表格报告,如 Product Detail: View Orange: 3
、Product detail: View Apple: 4
.
交叉检查您的 {{ dlv - productName }}
变量是否已正确填充,并且该值在代码触发时可供代码使用。如果稍后填充它的值,那么标记将触发您的事件操作,将被跟踪为 (not set)
。如果是这种情况,请考虑将触发器类型更改为 Window loaded 或其他事件,以便标签从 DL.
虽然前面的回答中提供了关键概念,但还有其他解决方案,可能会给您带来更好的结果。
因此,基本上,您需要确保在启动代码时,您要使用的 dataLayer 数据可用。
为此,您可以延迟标记 到Window 加载事件,但您应该知道,这取决于页面的大小和内容类型,给定百分比的用户将不会启动 Window Loaded 触发器,因此您可能会丢失部分数据。 (他们关闭浏览器,在 Window 加载完成之前导航到其他页面。)
因此,另一种选择是在初始化 GTM 之前将 数据推入数据层。所以你的代码看起来像这样,放在 <head>
:
<script>
var dataLayer = window.dataLayer || []; //define dataLayer, while avoiding overwriting its content
dataLayer.push({
'product': {
'productId': {{ Product.id }},
'productName': '{{ Product.name }}'
}
});
</script>
这样,您的页面浏览事件就会看到此数据。
另一种选择是将您的代码留在当前位置,但指定触发事件,让 GTM 了解新数据:
<script>
dataLayer.push({
'event': 'productDataReady',
'product': {
'productId': {{ Product.id }},
'productName': '{{ Product.name }}'
}
});
</script>
这样,您需要将代码的触发器修改为自定义事件,以匹配 event
变量中使用的字符串。在这种情况下,数据可用于此特定事件。
另外,请注意,{{ dlv - productName }}
可能不应该用作事件值,因为 Google Analytics 只接受整数值,而产品名称可能是字符串。
另一个考虑因素是您没有指定(或者至少没有将其包含在您的 post 中),该事件应该是非交互的。如果您在页面加载时生成交互事件,假设您还触发了网页浏览点击,您将获得极低的跳出率。