为什么datalayer.push不向Google Analytics Data Api(GA4)发送信息



我正在尝试测试是否可以使用datalayer.pushGA4中使用gtag执行相同的操作。gtag的一切都很好,但在datalayer.push中则不然。在下面的代码中,我定义了两个自定义事件:gTracker和dlTracker,前者工作良好,后者仅在tagassistant中可见,不向Google Analytics Data API发送信息。

在HTML中,我有

<button  type='button' class='btn btn-primary' onclick="javascript:BTN_click()">Click Me</button>  

在BTN_click((中==>

<script>
function BTN_click() {
var url = "<?php echo $url; ?>";
window.dataLayer = window.dataLayer || [];
dataLayer.push({
'event': 'dlTracker',
'storeId': <?php echo $store; ?>
});
gtag('event', 'gTracker', {
'storeId': <?php echo $store; ?>
});
window.open(url, '_blank');
}
</script>

HTML中的头标签后立即:

<!-- Google tag (gtag.js) -->
<script async src="https://www.googletagmanager.com/gtag/js?id=G-XXXXXX"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag() {
dataLayer.push(arguments);
}
gtag('js', new Date());
gtag('config', 'G-XXXXXXX');
</script>

<!-- Google Tag Manager 
Google Tag Manager container’s JavaScript Snippet-->
<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', 'GTM-XXXXX');
</script>
<!-- End Google Tag Manager -->

自定义维度storeId已在Google Analytics帐户中创建。如果我只使用gtag((,它是有效的,我没有问题。然而,使用数据层,我甚至在GTM(Google Tag Manager)中定义了标签和触发器。

Debug View中,我只能看到gtag创建的事件。但在tagassistant中,我看到这两个事件。但是,它没有向GA4 API发送与dlTracker事件相关的信息。

谢谢。

好吧,多亏了Julius Fedorovicius,我发现如果我们想直接使用dataLayer.push,那么我们需要创建我们想要的变量,并将其作为参数传递给我们在tagmanager中创建的标签。打开tagmanager中的变量选项卡,然后在页面底部的User-Defined Variables部分选择创建一个新变量。然后,在Variable Configuration中选择Data Layer Variable,并为Data Layer Variable Name写入您在编码部分dataLayer.push中写入的变量的名称,在我的情况下是storeId。注意拼写!。在左上角键入此变量的名称,然后单击保存按钮(我选择了DLV_storeId(。

接下来,在编辑模式下打开您为自定义事件创建的标签,然后单击Event Parameters,然后选择Add Parameter,然后在Parameter Name的框中:输入名称,在我的情况下是storeId。在值部分单击+按钮,然后尝试找到您刚刚创建的内容。最后提交并发布更改。

我不知道为什么我不能上传截图,它给服务器错误!如果有人需要更多的视觉描述,你可以在上面的链接上观看免费教程。

最新更新