当前位置: 首页 > 知识库问答 >
问题:

使用Google Tag Manager和Google Analytics跟踪产品视图计数

师承弼
2023-03-14

在symfony电子商务项目中,创建产品视图频率报告,以便用户导航到/product/detail/{id}时视图计数增加。我正在使用Google Tag Manager和Analytics,并使用以下内容作为参考:
https://support.usabilla.com/hc/en-us/articles/360015738812-Integration-with-Google-Analytics-using-GTM-Data-Layer#

谷歌标签管理器设置

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>

我可以在调试窗口中看到dataLayerarray被发送到Google标签管理器。在谷歌分析中


共有2个答案

艾和通
2023-03-14

虽然在前面的回答中提供了关键概念,但也有其他解决方案,它们可能会给您带来更好的结果。

因此,基本上,您需要确保,当您的标记启动时,您想要从dataLayer中使用的数据是可用的。

为了实现这一点,您可以延迟标记到窗口加载事件,但是您应该知道,根据页面的大小和内容类型,一定比例的用户不会启动窗口加载触发器,因此您可能会丢失部分数据。(它们关闭浏览器,在到达加载的窗口之前导航到其他页面。)

因此,另一种选择是在初始化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>

这样,您需要将标记的触发器修改为自定义事件,以匹配事件变量中使用的字符串。在这种情况下,数据在此特定事件中可用。

另外,请注意,{{dlv-productName}}可能不应用作事件值,因为Google Analytics只接受整数值,而产品名称可能是字符串。

另一个需要考虑的问题是,您没有指定(或者至少没有在您的帖子中包含),事件应该是非交互的。如果您在页面加载时生成一个交互式事件,假设您也触发了一个页面浏览点击,那么您将获得极低的跳出率。

董高畅
2023-03-14

交叉检查{{dlv-productName}变量是否已正确填充,并且在标记激发时该值是否可用于标记。如果稍后填充其值,则标记将触发事件操作,并作为(未设置)进行跟踪。如果是这种情况,请考虑将触发器类型更改为Window加载或其他事件,以便标签将从DL获取正确的值。

 类似资料:
  • 这个任务展示了如何设置和使用Istio Dashboard对Service Mesh中的流量进行监控。作为这个任务的一部分,需要安装Grafana的Istio插件,然后使用Web界面来查看Service Mesh的流量数据。 开始之前 在集群上安装Istio并部署一个应用。 安装Prometheus插件。 kubectl apply -f install/kubernetes/addons/p

  • 问题内容: 我有静态缓存的页面,我想跟踪它们的点击率,然后按受欢迎程度排序。 在Redis中跟踪这些视图然后将它们重新加载到主数据库中的最佳方法是什么? 现在我正在考虑使用这样的jQuery 并在“跟踪”控制器中使用redis gem进行调用 每天一次,我会像这样 问题答案: 这是我最后的耙任务,以防万一它可以帮助任何人

  • 我正在考虑在使用表存储时为我的应用程序实现一个审计跟踪。 我需要能够记录一个特定客户的所有操作和来自该客户的实体的所有操作。 我的第一个猜测是为每个客户创建一个表(Audits_CustomerXXX),并使用实体id和行键(datetime.max.ticks-datetime.now.ticks).ToString(“D19”)值作为分区键。当我的问题是某个实体发生了什么时,这很有效?例如,购

  • 本章介绍如何使用Zipkin或Jaeger收集启用了Istio的应用程序的调用链信息。 完成本章后,你可以理解有关应用程序的所有假设以及如何使其参与跟踪,无论您使用何种语言/框架/平台构建应用程序。 BookInfo示例用来作为此任务的示例应用程序。 环境准备 参照安装指南的说明安装Istio。 如果您在安装过程中未启动Zipkin或Jaeger插件,则可以运行以下命令启动: 启动Zipkin:

  • 我需要审核用户使用hibernate对spring mvc web应用程序的所有访问。这包括每次用户查看对象中的数据时进行审核,即使用户没有对对象进行任何更改。 我一直在研究hibernate envers作为管理所有审计的潜在工具。我注意到envers会跟踪应用程序中每个对象的所有修改。这是我需要的一部分。但我找不到任何关于如何扩展envers的文档或教程,以便除了跟踪对对象的修改之外,还可以跟

  • 跟踪行为控制着 Entity Framework Core 是否会在其变更跟踪器里维持实体实例的信息。如果实体是被跟踪的,任何检测到的该实体的变更都将在 SaveChanges() 时持久化到数据库中。Entity Framework Core 还会对已跟踪的、之前已加载到 DbContext 实例中的查询和实体进行相互的导航属性装配。 提示 你可以在 GitHub 上查阅当前文章涉及的代码样例。