阻止 gtag / 全局站点代码跟踪初始页面加载

Prevent gtag / global site tag from tracking initial page load

我们有一个使用 Gtag(全局站点标签)的单页应用程序,我们手动管理页面跟踪以提供我们要跟踪的正确页面名称。所以我们调用

gtag('config', gaPropertyId, gtagPageConfig)

每次都有路线变化。

这意味着我们不希望 gtag 自动为我们跟踪页面,因为我们目前正在对所有初始页面进行两次跟踪。第一次是当 gtag 通过发送浏览器标题和 URL 自动触发页面跟踪时,第二次是当我们从代码触发页面视图时,为我们提供的页面标题希望在 Google 分析中看到。

经过大量的研究和调试,我将其缩小到设置屏幕,其中“页面加载”被选中,并且无法禁用,请参见此图:

我们像这样加载我们的脚本:

<script async src="https://www.googletagmanager.com/gtag/js?id=UA-xxx-1"></script>
<script>
    window.dataLayer = window.dataLayer || [];
    function gtag(){dataLayer.push(arguments);}
    gtag('js', new Date());
    gtag('config', 'G-xxx', { 'send_page_view': false });
</script>

当我删除行 gtag('js', new Date()); 时,它不再跟踪该页面,但这可能会导致一些不需要的行为。

我们有没有办法阻止初始页面加载跟踪?我到处搜索,但找不到解决方案。

有关衡量综合浏览量的文档:

To disable the default pageview hit, set the send_page_view parameter to false in the gtag.js snippet.

gtag('config', 'GA_MEASUREMENT_ID', {
  send_page_view: false
});

https://developers.google.com/analytics/devguides/collection/gtagjs/pages

简单地说,您不应该在不想向其发送任何数据的页面上包含那些字段 Google:

gtag('js', new Date());
gtag('config', 'G-xxx');

你的代码片段应该看起来像这样,没有日期和配置:

<script async src="https://www.googletagmanager.com/gtag/js?id=G-xxx"></script>
<script>window.dataLayer = window.dataLayer || [];function gtag(){dataLayer.push(arguments);}

发送数据

SPA(即 Vue、React 等)

如果您正在使用 SPA(即 Vue、React),您可以 运行 gtag 路由更新后的功能:

gtag('js', new Date());
gtag('config', 'G-xxx', { page: path: route.path, page_title: route.meta.title })

PHP

您可以有条件地显示日期和配置:

<?php if (/* suits my needs*/): ?>
  gtag('js', new Date());
  gtag('config', 'G-xxx');
<?php endif; ?>