在理解什么是埋點之前,首先需要了解一些基礎知識:(以下摘自:http://www.chinawebanalytics.cn/auto-event-tracking-good-bad-ugly/)
我們能夠監測網站上用戶的行為,或者app上用戶的行為,都需要在網站的每一頁或者app中加上一些程序代碼(基礎代碼)。這樣的程序代碼,在網站上叫監測代碼,在app中叫SDK(Software Development Kit)。
但是你要想收集到所有用戶行為的數據,光有基礎代碼是不夠的,總有一些特殊的用戶操作行為是不能靠基礎代碼捕獲的。這一類基礎代碼不能捕獲的用戶操作行為,最典型的,是被稱為event(事件)的一類行為。至於什么是event(事件),在網頁上,是那些非http類型的交互:JavaScript的、Flash的、Silverlight的、AJAX的、各種頁面插件的交互等等;而在app上,則包含用戶點擊在內的所有交互。你可以直接理解一個規律,那就是凡是遵守http協議的交互(最典型的就是網頁的鏈接),皆是可以由基礎監測代碼直接監測到數據的,但非http類型的用戶交互,基礎監測代碼都無能為力。app上的所有可點擊交互都是event,因為app不遵循http協議,所以基礎監測代碼對它們都無效。
如果每一個需要我們監測的event都被稱為一個“監測點”,那么可以想象,網頁上的監測點不會很多(因為大部分都是http互動,所以基礎代碼能搞定),而app上則布滿了監測點。
什么是埋點?
埋點是數據領域的專業術語,它的學名叫事件追蹤,對應的英文是Event Tracking。它主要是針對特定用戶行為或事件進行捕獲、處理和發送的相關技術及其實施過程。
根據上面所說,為了收集到監測點上的用戶互動行為數據,我們可以在這些監測點上部署專用的事件監測代碼(即event tracking code),這些代碼需要手工一個一個地添加在想要獲取數據的監測點上,這個過程被形象地稱為埋點。
埋點分為前端埋點和后端埋點:
前端(客戶端):在Web頁面/App的源碼里面添加行為上報的代碼,當用戶的行為滿足某一個條件時,這些代碼就會被執行,向服務器上報行為數據。
網站:目前主流的網站分析工具都是在網站上加一小段JavaScript代碼,以此方式來收集數據,這種方法被稱為頁面標記法。以Google Analytics為例,在網站上加上GA基礎代碼后,用戶來到這個網站,將會加載analytics.js 這個腳本文件,當用戶瀏覽器發生相應的事件時,GA代碼立即響應,攜帶着用戶瀏覽器等信息一並以type為pageview 的http 請求發送到GA 的收數服務器,這樣GA 服務器就收到一條記錄了用戶瀏覽了該property ID對應站點的一條日志。
APP:在APP或者界面初始化的時候,初始化第三方數據分析服務商的SDK,然后在某個事件發生時就調用SDK里面相應的數據發送接口發送數據。例如,我們想統計APP里面某個按鈕的點擊次數,則在APP的某個按鈕被點擊時,可以在這個按鈕對應的 OnClick 函數里面調用SDK提供的數據發送接口來發送數據。
后端(服務器端):開發人員在監測點植入統計代碼。
前端埋點和后端埋點的區別:https://www.jianshu.com/p/15b1ffeb9724。
埋點優點:可以精准控制,設置自定義屬性、自定義事件,傳遞比較豐富的數據到服務端。
埋點缺點:1,每一個控件的埋點都需要添加相應的代碼,不僅工作量大,而且限定了必須是技術人員才能完成;2,每一次更新埋點方案,都必須改代碼,然后通過各個應用市場進行分發,並且總會有相當多數量的用戶不喜歡更新APP,這樣埋點代碼也就得不到更新了;3,所有前端埋點方案都會面臨,數據傳輸時效性和可靠性的問題,這個問題只能通過在后端收集數據來解決。
什么是無埋點?
無埋點無差別地記錄用戶在前端頁面上的行為,對應的英文是Codeless Tracking。無埋點並不是說不要添加代碼,而是不需要開發人員添加額外代碼。無論是埋點的方法,還是不埋點的方法,都必須要添加基礎代碼。
無埋點直接對頁面中所有的用戶行為進行監聽,因此即使你不需要監測某個部分,它也仍然會將這部分的用戶行為數據和對應發生的信息全收錄下來。
網站:在head里面插入了一個新的script標簽,異步去下載真正的核心SDK代碼下來工作。所以並不是基礎代碼可以根據配置上報行為,而是基礎代碼會下載一段“更大”的SDK核心代碼,這段代碼才是SDK真正的功能實現。
APP:在APP里嵌入SDK,SDK利用CSS選擇器技術和監聽控件的事件觸發技術,會把用戶的行為數據盡可能的采集下來。
無埋點優點:1,技術成本低,對用戶非常友好,不需要重新部署,配置完成就可以生效;2,數據可以“回溯”。
無埋點缺點:1,上報的數據量比埋點大很多,里面可能很多是沒有價值的數據;2,不能靈活地自定義屬性;3,傳輸時效性和數據可靠性欠佳;4,由於所有的控件事件都全部搜集,會給服務器和網絡傳輸帶來更大的負載。
什么是可視化埋點?
可視化埋點,即可視化事件監測部署,指通過可視化工具快速配置采集節點(圈點),在前端自動解析配置,並根據配置上傳埋點數據。
可視化埋點和無埋點非常相似,兩者的區別在於:可視化埋點先通過界面配置哪些控件的操作數據需要收集,而無埋點則是先盡可能收集所有的控件的操作數據,然后再通過界面配置哪些數據需要在系統里面進行分析。
在Web頁面/App的界面上進行圈選,配置需要監測界面上哪一個元素,然后保存這個配置,當App啟動時會從后台服務器獲得產品/運營預先圈選好的配置,然后根據這份配置查找並監測App界面上的元素,當某一個元素滿足條件時,就會上報行為數據到后台服務器。
可視化埋點優點:方便產品和運營直接在頁面上進行圈選所需的部分。
可視化埋點缺點:可視化埋點能夠覆蓋的功能有限,只能采集到用戶肉眼可見的數據。
總結:
埋點 | 無埋點 | 可視化埋點 |
前端+后端 | 前端 | 前端 |
基礎代碼+事件監測代碼 | 基礎代碼 | 基礎代碼+可視化工具 |
此外,現在很多地方對埋點的叫法都不一樣,因此在這里把可能的叫法都列舉一下,以免搞混:
埋點---代碼埋點,手動埋點
無埋點---全埋點,無痕埋點
可視化埋點---可視化無痕埋點
參考: