如何在没有使用Google Tag Manager的情况下以编程方式向GA4发送事件?

16
我想编写代码向新版Google Analytics发送自定义事件,而不需要事先在GTM中定义它。
我正在使用Google Tag Manager,根据这篇文章: https://developers.google.com/analytics/devguides/collection/ga4/translate-events, 只有通过在GTM中定义事件才能实现。我无法这样做,并希望继续使用旧的方法,在那里您只需执行以下操作即可:
        if ("ga" in window) {
            var tracker = ga.getAll()[0];
            if (tracker) {
                tracker.send("event", eventCategory, eventAction);
            }
        }

我该如何使用JavaScript和新版Google Analytics(GA4)来实现这种效果?
由于我正在使用GTM,所以window.gtag未定义,同样地,因为我正在使用GA4,所以window.ga也未定义。在GTM中配置的唯一标签是“Google Analytics: GA4配置”。
4个回答

8

另一种方法是通过GTM数据层来实现(特别是如果您使用GTM配置标签在站点上部署GA4,因为gtag需要使用已部署的gtag.js)。

window.dataLayer = window.dataLayer || [];
window.dataLayer.push({
    'event': 'aSpecificEventName',
    'form_type_DL': 'contact_us'
});

然后在GTM中配置一个新变量'form_type_DL',基于自定义事件配置一个新触发器,将事件名称定义为(在我的情况下)'aSpecificEventName',最后,在GTM中设置一个新的GA4事件标签,使用您最近创建的新触发器发送事件名称和事件参数,例如其中一个参数可以是form_type,其值将为{{form_type_DL}},通过我们的dataLayer推送发送,其中包含'contact_us'
因此,步骤的正确顺序应该是:
  1. 在GTM中定义您的新变量,并指定特定的变量名称(仅在需要向GA4发送特定值时)
  2. 创建和配置基于自定义事件的触发器,并指定特定的事件名称
  3. 创建一个新的GA4事件驱动标签,添加您之前创建的触发器并将您的参数值(如果需要使用任何事件参数)作为先前创建的变量。
  4. 最后,在您的代码中设置dataLayer推送,确保事件值与触发器事件名称相同,并且变量与您的变量匹配。
进一步解释我们所做的事情,以便更好地理解,如果我们仔细查看gtag.js代码,我们建议手动安装:
    <!-- Google tag (gtag.js) -->
    <script async src="https://www.googletagmanager.com/gtag/js?id=G-XYZXYZXYZ"></script>
    <script>
        window.dataLayer = window.dataLayer || [];
        function gtag(){dataLayer.push(arguments);}
        gtag('js', new Date());

        gtag('config', 'G-XYZXYZXYZ');
    </script>

我们需要执行的gtag()函数来推送GA4事件会执行dataLayer.push(),因此这是简化/自动化我之前解释过的过程的一种方式。

https://developers.google.com/analytics/devguides/collection/ga4/events?client_type=gtag https://support.google.com/tagmanager/answer/7582054?hl=en


2

你试过了吗?但是它没有起作用? - Michele Pisani

1

0

以下是我遵循的步骤,在 Google Analytics 4 中进行实现:

gtag("event", "Pageview", {
    pageTitle: page.title,
    date: moment(new Date()).format("DD-MM-YYYY HH:mm:ss")
});

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接