我正在尝试将Google标签管理器与我的Ember应用程序集成。我很难理解如何通知GTM页面已更改并发送页面查看事件。
我在网上读了很多东西,大多数围绕着为“虚拟页面”创建新变量之类的内容,但显然这远非理想。
我希望只需使用dataLayer.push
即可通知页面实际发生了更改。是否有简单的解决方法我没有找到,或者使用GTM跟踪SPA真的很麻烦?
我正在尝试将Google标签管理器与我的Ember应用程序集成。我很难理解如何通知GTM页面已更改并发送页面查看事件。
我在网上读了很多东西,大多数围绕着为“虚拟页面”创建新变量之类的内容,但显然这远非理想。
我希望只需使用dataLayer.push
即可通知页面实际发生了更改。是否有简单的解决方法我没有找到,或者使用GTM跟踪SPA真的很麻烦?
这个问题很久以前就被问过了。使用当前的GTM功能集,您可以轻松设置单页应用程序页面跟踪,而不需要太多麻烦。
首先,进入“触发器”并创建一个新的触发器。选择“历史更改”作为触发器类型。这会创建一个每次位置历史记录更改时触发的触发器。
然后创建一个新的“标签”,类型为“通用分析”,并按下面的截图设置它。
[
至于触发器,请设置之前定义的“历史更改”触发器,完成后即可。每当在您的单页应用程序中进行导航时,都会触发具有适当页面路径的页面视图事件。
编辑:正如 trognaders
在评论中指出的那样,这不会跟踪初始页面视图。为解决此问题,仅需为您的标记添加额外的触发器,在页面视图事件(所有页面)上触发。请参见下面的截图。
你一定需要将事件推送到数据层中,然后可以在GTM中触发GA页面浏览标签。因此,要将事件推送到DL中:
dataLayer.push({'event':'virtualPageView'});
然后设置名为“vpv”的触发器,该触发器会在自定义事件“virtualPageView”上触发。将该触发器添加到GA标签中。
最好的做法是在发送事件时同时发送虚拟页面的详细信息。这样,您就可以设置变量,将这些数据层属性值提取到页面视图调用中。因此,您可以这样做:
dataLayer.push({
'event':'virtualPageView',
'page':{
'title':'contact us',
'url':'/contact'
}
});
所以你需要设置一个名为“DL- page title”的变量(例如),它是"dataLayer value"的"page.title",还需要设置另一个名为“DL - page url”的变量,它是"dataLayer value"的"page.url"。
然后,你需要设置一个新的通用分析标签,其中包含所有通常的页面查看设置,但有两个"Fields to Set"(在更多设置下)。将"title"设置为{{DL-page title}},将"page"设置为{{DL - page url}}。
最后,将触发器设置为'vpv',每次将事件+数据推送到数据层中时都会触发一个带有虚拟页面标题和虚拟URL的页面查看。
dataLayer
的条目数上限为300条,并会根据需要自行清除:http://www.simoahava.com/gtm-tips/datalayer-declaration-vs-push/#comment-608025 - krukid
ga('send', 'pageview')
,GA就会通知页面已更改。 - Benjamin Netterga('send', 'pageview')
然后再进行dataLayer.push
了吗? - Benjamin Netter