gtm是谷歌開發的跟蹤代碼管理器, 能夠在平臺上添加和更新本身的代碼,用於轉化跟蹤、網站分析、再營銷等用途。javascript
gtm有免費的版本, 能夠上 marketingplatform.google.com/about/ 註冊並開通帳號, 以後gtm會給你一個js代碼塊, 須要你放到每一個html頁面的<head>
標籤裏面, 代碼相似於下面這樣, 裏面會有個GTM-XXXXX
即是你的gtm container的ID, 須要替換成你本身container 的idhtml
<!-- Google Tag Manager -->
<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 -->
複製代碼
gtm最重要的部分, 能夠在tag裏面部署 google數據分析相關服務, 或者第三方服務, 若是某些服務商沒有集成在gtm裏面, 還能夠經過嵌入自定義代碼的方式來部署. 能夠看到tag裏面有至關多的方式來部署你的代碼.java
每一個tag必須關聯trigger用來觸發tag的執行. 舉個例子, 你但願某段統計代碼只有在訪問特定url的時候纔會執行上報, 這時候就須要添加trigger來指定條件.數組
Trigger 有至關多的觸發方式, 你能夠選擇頁面加載完成後觸發, 某些dom元素可見時觸發, 用戶點擊某個按鈕觸發等等.dom
大部分狀況下數據統計都須要上傳必定的信息, 好比電商網站須要統計用戶購買了何種商品, 數量及價格等等, 或者用戶點擊了哪些按鈕, 這些都須要經過變量的形式來定義, 變量設置後tag和trigger均可以引用, trigger能夠引用變量來定義一些觸發條件, 好比用戶在某種語言下才觸發. tag能夠獲取variable的值並上傳到相關的服務商.async
variable也有不少類型, 能夠是當前頁面的url, 或者是自定義js計算獲得的值.工具
最廣泛使用的則是 Data Layer Variable
網站
gtm腳本運行時會建立一個dataLayer
的全局對象, dataLayer實際是是一個數組, 你能夠經過dataLayer.push()
來添加相關的數據, 能夠很方便的在gtm variable裏面獲取到.ui
好比你添加了一個描述當前頁面類型的屬性dataLayer.push({pageType:'home'})
, 就能夠經過這樣定義Variable來取值google
這裏要注意的是取值的時機, 好比你在用戶購買某個商品以後將相關的數據添加到dataLayer, 那麼若是某個Trigger在這個按鈕點擊以前就被觸發(如 PageView類型的trigger), 那麼這時候是獲取不到這個商品的信息的. 因此理清trigger的觸發條件, variable 被添加的時間是很是重要的, 若是順序亂了就會獲得undefined
的結果, 影響到數據統計的準確性.