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

Google analytics 使用Google Tag Manager和Google Analytics跟踪产品视图计数,google-analytics,report,google-tag-manager,Google Analytics,Report,Google Tag Manager,在symfony电子商务项目中,创建产品视图频率报告,以便用户导航到/product/detail/{id}时视图计数增加。我正在使用Google Tag Manager和Analytics,并使用以下内容作为参考: 谷歌标签管理器设置 1.创建触发器 Trigger Type: Page View Trigger Fire On: Some Page Views (Page path : contains : /products/detail) 二,。创建变量 Name: dlv - pr

在symfony电子商务项目中,创建产品视图频率报告,以便用户导航到
/product/detail/{id}
时视图计数增加。我正在使用Google Tag Manager和Analytics,并使用以下内容作为参考:


谷歌标签管理器设置

1.创建触发器

Trigger Type: Page View
Trigger Fire On: Some Page Views (Page path : contains : /products/detail)
二,。创建变量

Name: dlv - productName
Variable Type: Data Layer Variable
Name: product.productName
  • 创建标签
  • 产品页面

    <script>
        dataLayer.push({
            'product': {
                'productId': {{ Product.id }},
                'productName': '{{ Product.name }}'
            }
        });
    </script>
    
    
    数据层推送({
    “产品”:{
    'productId':{{Product.id}},
    'productName':“{{Product.name}}”
    }
    });
    

    我可以在调试窗口中看到
    dataLayer
    array被发送到Google标签管理器。在
    googleanalytics>Behavior>Events>Top Events
    中,我可以在Event Category列中看到产品详细信息。单击链接时,事件操作仅显示视图,事件标签为(未设置)。我想创建一个类似于
    Product Detail:View Orange:3
    Product Detail:View Apple:4

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

    < P>尽管在前面的答案中提供了关键概念,但也有其他解决方案,这可能会给您更好的结果。 因此,基本上,您需要确保在启动标记时,要从数据层使用的数据可用

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

    因此,另一种选择是在初始化GTM之前将数据推入数据层。因此,您的代码看起来像这样,位于
    中的主要GTM代码上方:

    
    var dataLayer=window.dataLayer | |[]//定义数据层,同时避免覆盖其内容
    数据层推送({
    “产品”:{
    'productId':{{Product.id}},
    'productName':“{{Product.name}}”
    }
    });
    
    这样,您的页面视图事件将已经看到此数据

    另一种选择是将代码保留在当前位置,但指定触发事件,以让GTM了解新数据:

    <script>
        dataLayer.push({
            'event': 'productDataReady',
            'product': {
                'productId': {{ Product.id }},
                'productName': '{{ Product.name }}'
            }
        });
    </script>
    
    
    数据层推送({
    “事件”:“productDataReady”,
    “产品”:{
    'productId':{{Product.id}},
    'productName':“{{Product.name}}”
    }
    });
    
    这样,您需要将标记的触发器修改为自定义事件,与
    事件中使用的字符串相匹配。在这种情况下,数据在此特定事件中可用

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


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

    请交叉检查您的{dlv-productName}}变量是否已正确填充,并且在标记触发时该值是否可用于标记?是的,在标记管理器的调试窗口中,变量<代码>产品名称<代码>绑定到Windows加载的字符串值(第4事件),但在页面视图(事件1)上是<代码>未定义< /代码>,因此考虑将触发器类型更改为加载窗口,以便标签将从DL获取正确的值。否则,事件操作将“未设置”
    <script>
        var dataLayer = window.dataLayer || [];  //define dataLayer, while avoiding overwriting its content
        dataLayer.push({
            'product': {
                'productId': {{ Product.id }},
                'productName': '{{ Product.name }}'
            }
        });
    </script>
    
    <script>
        dataLayer.push({
            'event': 'productDataReady',
            'product': {
                'productId': {{ Product.id }},
                'productName': '{{ Product.name }}'
            }
        });
    </script>