当前位置: 首页 > 知识库问答 >
问题:

Google标记管理器(GTM)在ASP中间歇性不启动

葛和志
2023-03-14

谷歌分析/转换/交易表明,标签有时有效——如果我执行任务并观察发生的情况和/或调试,它总是有效,但当公众/其他人这样做时,有时有效,有时无效

实施是一个循序渐进,向导式的方法,租车预订。在流程结束时,我们将预订存储在数据库中,绘制一个感谢页面,启动te GTM以在GA中记录交易,并向用户发送确认电子邮件。

设置: GTM创建的标签“预订价值交易”-类型=通用分析,启用显示广告功能,跟踪类型=交易添加了2条规则规则名称=“立即预订”-条件{{url}}包含感谢{{事件}}包含gtm.dom规则名称=BookNow_Mobile-条件{{url}}包含移动预订{{事件}}包含gtm.dom

ASP页面的开头

<!-- Google Tag Manager - data layer def only -->
<script>
    dataLayer = [{ 
        'transactionId': '',
        'transactionTotal': 0.00}];
        transactionProducts = [{
            'name': '',
            'sku': '', 
            'price': 0.00, 
            'quantity': 0 }];
</script>
<!-- End Google Tag Manager - data layer def only -->

在页面的后面,各种ASP代码调用数据库函数等来存储数据和检索数据以供显示,并构建数据以填充GTM数据层最终它会生成以下内容(设置适当的值):

<script>dataLayer = [{ 'transactionId': '1234', 'transactionTotal': 1000.00}];
transactionProducts = [{'name': 'Some Product Name', 'sku': '5678', 'price': 1000.00, 'quantity': 1 }];
dataLayer.push({'transactionProducts':transactionProducts});</script>

在上述步骤之后和结束之前(因为将其放在数据层定义下面的顶部看起来像个问题),插入GTM脚本的其余部分

<!-- Google Tag Manager -->
<% 'at the bottom of the page because the gtm.DOM async might not be performing like we want %>
<noscript><iframe src="//www.googletagmanager.com/ns.html?id=GTM-MyGTM_ID" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
<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='//www.googletagmanager.com/gtm.js?id='+i+dl;
   f.parentNode.insertBefore(j,f);
    }
    )(window,document,'script','dataLayer','GTM-MyGTM_ID');
</script>
<!-- End Google Tag Manager -->

我已经尝试了各种方法来追根究底,但我完全被难倒了。我如何让它一直可靠地发射?

共有1个答案

长孙翔
2023-03-14

数据层。push()只将数据放入数据层;它不会将数据发送到谷歌。您需要使用某种类型的标记来携带数据层数据。

通常,这是通过标准的页面视图跟踪器完成的,但是在页面视图跟踪器触发之前,必须将所有数据都放在数据层中。在标准GTM实现中,一旦GTM容器代码加载完成,页面视图跟踪器就会触发。感谢页面中的加载顺序应如下所示:

  1. 使用所有电子商务信息声明数据层。不要使用数据层。推()。在加载页面之前,您应该拥有在电子商务系统中填充dataLayer所需的所有数据。检索此数据并将其放入数据层
  2. 装载您的GTM容器。这是GTM提供的标准代码

所有这些都应在

如果无法在加载GTM容器代码之前填充数据层,则必须在GTM上触发GA事件标记。dom来携带事务数据。

事务数据的不一致触发很可能是由于不正确的GTM实现导致的竞争条件造成的。

 类似资料:
  • 我正在尝试使用基于元素ID的标记fire。HTML包含一张包含其他元素的卡片。最外层的父div包含我想用GTM跟踪的ID。当我运行GTM预览并单击元素时,触发器不会触发,当我单击以展开GTM中的单击详细信息时,它显示我单击了卡中的元素,而不是ID为“card-1”的元素。然而,当我将移动到卡内的img时,我能够让元素触发,并确保我点击了img。 我将触发器配置为在包含“card-1”的“Click

  • 我做了一个自定义GTM来跟踪结账步骤。我使用自定义JS变量来填充电子商务对象。 我得到步骤1进入我的GA,但不是其他选项,尽管在预览模式下,我看到代码正确地发射。 签出过程如下所示: 实例com/cart-通过GTM发送步骤1(跟踪类型-事件,触发器-URL)示例。com/签出-通过GTM发送步骤2(跟踪类型-事件,触发器-URL) 第3步在元素#装运可见时触发(轨迹类型-事件,触发器-元素可见性

  • 我想在单击带有特定css类的链接时触发一个标记。我创建了一个基于点击的触发器 所有在线帮助都显示GTM的过时版本,与我看到的选项不匹配。甚至GTM帮助文档也过时了。 css类如何触发一个触发器?(我尝试使用一个自定义变量,但也不起作用,老实说,这些选项也没有多大意义)。 更新:如果我创建一个新的自定义变量“DOM元素有CSS选择器”,然后转到触发器,选择我的自定义变量,选择“等”并输入链接的文本,

  • 我是codiva的开发者。io是面向学生的java ide。我正在使用codemirror编辑器。我想跟踪编辑(特别是上次编辑后的暂停或超时)。我以前使用过谷歌分析,对于事件,我们将使用。现在我正在使用Google标签管理器,对于点击和其他事件,我们似乎可以使用标签管理器ui本身进行配置。使用tag manager,我无法找到如何对此实施跟踪。 Codemirror生成一个on Change事件。

  • 我有一个带有文本确认页的重力表单,而不是重定向确认。我想通过Google Tag Manager跟踪此表单,以在Google Analytics(Universal Analytics)中显示目标转换。 我在这里遵循了以下步骤:http://www.notesonclick.com/blog/gravity-form-event-tracking-via-tag-manager/ 没有记录任何转换

  • 我需要一个变量在谷歌标签管理器返回innerhtml的点击类。由于这个类有更多的元素,我必须向类添加一个事件监听器,并返回单击元素的innerhtml。 不幸的是,我的代码一直返回未定义。

  • 问题内容: 我们使用Java Webstart在我们的Intranet上部署Java应用程序。该应用程序收到频繁的更新。在我们更新了Web服务器上的JAR / WAR(更改了时间戳)之后,用户会不时地从其桌面图标启动该应用程序,而Java Webstart将启动旧版本而不是下载新版本。 这是我们的JNLP的粘贴,如您所见,离线允许已启用,但始终执行更新检查和始终执行策略。另外,下载标志很重要。以我

  • 我正在尝试访问自定义javascript中与单击事件相关的变量。单击事件变量应该是所谓的内置变量,但它仍然表示未知。 我正在使用以下语法,该语法用于获取单击链接的ID,并根据ID返回社交媒体操作: 编辑:对我来说,我使用的变量就像在这个页面上一样http://www.apasters.com/blog/google-tag-manager-custom-javascript-variable-ex