转到谷歌标签管理器破坏了我们的虚拟页面浏览量

Moving to Google Tag Manager broke our virtual pageviews

本文关键字:虚拟 浏览量 我们 坏了 谷歌 标签 管理器      更新时间:2023-09-26

我最近将公司的网站转换为谷歌标签管理器。由于我们的联系表格没有带有唯一URL的唯一确认页面,我们使用虚拟页面视图来跟踪转换。表单已提交,页面将重新加载新内容和我们的转换跟踪代码。

自从迁移到GTM后,我们所有的虚拟页面视图都停止了工作。现在,当我在我们的网站上提交表格时,我会在控制台日志中得到这个:

ReferenceError: ga is not defined
  ga('send', 'pageview', '/funnel_G1/premium1.html');

之前,我们让Universal Analytics直接加载到页面上。现在我们正在通过GTM加载通用分析。这就是所有的变化,我不明白为什么我们的虚拟页面视图脚本不再工作。

这是在表单完成时触发的脚本:

<script type="text/javascript">
$(document).ready(function () {
  ga('send', 'pageview', '/funnel_G1/premium1.html');
});
</script>

当您转到GTM时,您可能也正确地删除了页面上的所有GA代码,其中包括标准GA片段和

ga('create', 'UA-.....');
ga('send','pageview');

代码。删除GA片段也会删除"GA"对象的创建,这就是您看到错误的原因。使用GTM,您现在需要发送带有标记的事件和页面视图。因此,您可以尝试将事件推送到dataLayer,以帮助触发触发虚拟页面视图的标记。在您的具体情况下,您可以在提交表格时这样做:

dataLayer.push({
   'event': 'form complete',
   'vpv': '/funnel_G1/premium1.html'
})

然后在GTM中,您需要创建由事件"form complete"触发的pageview标记,该标记还将页面值更改为"vpv"dataLayer键的值(即/con漏斗_G1/premium1.html)。

问题是,GTM异步加载ga()函数。如果在加载ga()之前调用它,则会遇到此错误。

解决方案是以某种方式等待定义ga(),或使用dataLayer.push()


编辑

我们最终使用的解决方案-我们只是没有在GA中包括Analytics,而是在源代码中单独包括它们。GTM将处理除GA之外的其他脚本icnludes。这个解决方案至少没有破坏ga()在整个项目中的使用。