【问题标题】:Product view count tracking with Google Tag Manager and Google Analytics使用 Google Tag Manager 和 Google Analytics 跟踪产品查看次数
【发布时间】:2019-10-17 08:15:40
【问题描述】:

在 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
  1. 创建标签
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>

我可以在调试窗口中看到 dataLayer 数组正在发送到 Google 跟踪代码管理器。在Google Analytics &gt; Behavior &gt; Events &gt; Top Events 中,我可以在 Event Category 列中看到 Product Detail。当我单击链接时,事件操作仅显示 View 并且事件标签为 (未设置)。我想创建一个表格报告,如Product Detail: View Orange: 3Product detail: View Apple: 4

【问题讨论】:

  • 能否请您反复检查您的 {{ dlv - productName }} 变量是否已正确填充,并且在标签触发时该值对标签可用?
  • 是的,在跟踪代码管理器的调试窗口中,变量productName在Windows Loaded(事件4)上绑定了一个字符串值,但在Page View(事件)上是undefined 1)
  • 所以考虑将您的触发器类型更改为加载窗口,以便标签从 DL 中获取正确的值。否则,事件操作将“未设置”

标签: google-analytics report google-tag-manager


【解决方案1】:

交叉检查您的 {{ dlv - productName }} 变量是否已正确填充,并且该值在代码触发时可供代码使用。如果稍后填充其值,则触发您的事件操作的标记将被跟踪为(not set)。如果是这种情况,请考虑将触发器类型更改为加载窗口或其他事件,以便标签从 DL 中获取正确的值。

【讨论】:

    【解决方案2】:

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

    因此,基本上,您需要确保在启动代码时,您要从 dataLayer 使用的数据可用。

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

    因此,另一种选择是在 GTM 初始化之前将数据推送到 dataLayer。所以你的代码看起来像这样,放在&lt;head&gt;的主要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 只接受整数值,而产品名称可能是字符串。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-14
      • 1970-01-01
      • 2013-09-09
      • 1970-01-01
      • 2019-08-02
      • 2012-11-01
      • 1970-01-01
      相关资源
      最近更新 更多