1

請幫助。我正在嘗試使用GTM dataLayer來跟蹤我的銷售確認頁面上的購買情況。我添加了dataLayer,它位於GTM容器代碼片段之上,但數據層完全無法被Google Tag Manager識別。就像它不存在於頁面上一樣。爲什麼?您可以在源代碼中看到所有格式都正確:view-source:http://www.maverickhelicopter.com/survey.aspx但GTM預覽工具甚至不能識別數據層的存在。 screenshot of GTM preview tool代碼管理器無法識別的Google代碼管理器dataLayer

+0

在你的頁面代碼中,你會推送到 - 未初始化 - dataLayer(這會給你一個「survey.aspx:35 Uncaught TypeError:無法讀取瀏覽器控制檯中未定義的」錯誤「屬性'push')。然後你嘗試初始化dataLayer。嘗試並交換兩個,看看它是否開始工作。 –

回答

0

問題是您在定義dataLayer的GTM代碼片段之前調用dataLayer.push()函數。當你的頁面上看到:

enter image description here

你必須移動dataLayer.push要麼你定義數據層或之後GTM的代碼片斷後,你的身上。這真的取決於你什麼時候開始你的「預訂推後」事件。如果您在頭例如您的推送功能:

dataLayer = [{ 
    'page': { 
     'type': 'confirmation', 
     'environment': 'production' 
    } 
}]; 

dataLayer.push({ 
    'ecommerce': { 
     'purchase': { 
      'actionField': { 
       'id': '0', 
       'affiliation': '0', 
       'revenue': '0' 
      }, 
      'products': [{ 
       'name': '0', 
       'id': '{{tourID}}', 
       'price': '0', 
       'category': 'None', 
       'variant': 'None', 
       'quantity': parseInt(document.getElementById("ctl00_ContentPlaceHolder1_hfGTMSEATS").value) 
      }] 
     } 
    }, 
    'event': 'reservationPushed' 
}); 

的「reservationPushed」事件將前頁面視圖被解僱

或者,您可以將您的整個推送功能移動到GTM代碼片段之下,以在頁面查看後觸發事件。只是不要讓也移動你的數據層變量的錯誤,這是在正確的地方爲每開發指南:https://developers.google.com/tag-manager/devguide

所以besically你的選擇之一是構建你的代碼,例如:

<html> 
... 
<script> 
dataLayer = [{ 
'page': { 
    ... 
} 
}]; 
</script> 
... 

<!-- Google Tag Manager --> 
... 
<!-- End Google Tag Manger --> 
<script> 
dataLayer.push({ 
'ecomerce': { 
... 
} 
</script> 
... 
</html>