Google 跟踪代码管理器 - 网络请求

Google Tag Manager - Network Request

我被要求为我们的外部客户端的 google 标签管理器设置一些数据层推送。

我已经设置了 GTM 脚本

    <script>(function (w, d, s, l, i) {
    w[l] = w[l] || [];
    w[l].push({
        'gtm.start':
            new Date().getTime(), event: 'gtm.js'
    });
    var f = d.getElementsByTagName(s)[0],
        j = d.createElement(s), dl = l != 'dataLayer' ? '&l=' + l : '';
    j.async = true;
    j.src =
        'https://www.googletagmanager.com/gtm.js?id=' + i + dl;
    f.parentNode.insertBefore(j, f);
})(window, document, 'script', 'dataLayer', 'XXXXXX');</script>

并添加了数据层推送事件

{% macro billing_tracking(page, shopper_session) %}
<script>
    window.dataLayer = window.dataLayer || []
    window.dataLayer.push({
        'users_state': '',
        'status': '',
        'card_value': {{ shopper_session.amount | format_2dp | tojson}},
        'order_id': '',
        'virtual_page': {{ page|tojson }},
        'event': 'Virtual Page',
    })
</script>
{% endmacro %}

然后我在我的 HTML 页面中加载这个宏。

我希望看到加载此 dataLayer.push 事件时发出的 post 请求。这似乎没有发生。这是一个正确的假设吗?我确实看到了一个获取事件 gtm.js?id=id 但我希望看到 post 事件被触发回 google 标签管理器?

知道为什么这没有发生吗?

虽然现在有 Google 跟踪代码管理器的服务器端容器类型,但我们知道并喜欢它的 GTM 是 Javascript 注入器。所有配置的标签加上一些样板代码都捆绑在一个文件中,您可以通过 GTM 界面配置该文件。那基本上是 GTM 最后一次与服务器交互。所有标签和执行它们的 javascript 代码(选择器引擎、触发器等)都在 gtm.js 文件中。

当您将某些内容推送到数据层时,它不会发送到 Google。相反,它由封装配置标签的 GTM javascript 解析,并且这些值可供标签使用。您也可以将文件托管在您自己的服务器上,而无需与 GTM 服务器建立任何连接,它仍然可以工作。

所以预计没有网络请求。仅当捆绑到 gtm.js 文件中的跟踪标签需要时,GTM 才会发出请求。