說說埋點方式有哪些?
- 2019 年 11 月 25 日
- 筆記
什麼是埋點?
埋點就是定點,定時的數據採集,跟蹤用戶行為,給後續的產品優化和用戶運營提供數據支援。
更通俗一點就是,你為採集數據所做的部署就是埋點,如用戶的點擊,螢幕的瀏覽,這些都需要預先做一些部署,這些部署通常是實現,什麼時候觸發,什麼時候發送什麼數據,這樣才能採集到這些數據,這些部署工作就是埋點。
中國喜歡稱之為埋點,國外的叫事件跟蹤,指的是同一個東西。
埋點方式有哪些?
根據部署的位置可以分為客戶端(前端)埋點和服務端埋點,而客戶端埋點又分為程式碼埋點,可視化/無碼埋點,無/全/自動/無痕埋點,具體的結構如下圖:

現在市面上的工具基本都提供以上四種埋點方式,同樣是一種方法,有的名字有好多個,各家有各的叫法!!!!其實服務端埋點也是採用程式碼埋點的方式,所以也可以這樣劃分:

這些埋點方式都各有利弊,現在中國的工具是提供所有埋點方式,也不管你需不需要,別人有的,自己也要有。
程式碼埋點
這是目前最為人所知的一種類型,也是使用最廣泛的,最基礎的一種方式,包括Google Analyitcs,友盟在內的一些第三方工具都是使用這個方案。運用這種方法可以採集到用戶非常精準的行為數據。
程式碼埋點可以分為客戶端埋點和服務端埋點。
客戶端埋點
原理是:部署完基礎的SDK/JS後,在需要採集數據地方添加跟蹤程式碼,啟動的時候會初始化SDK/JS,你點擊或觸發數據採集位置的時候就會調用SDK/JS對應的數據介面把數據發送出去,例如,我們要對某個位置的點擊做埋點,也就是該按鈕被點擊的,這個按鈕對應的OnClick就會調用SDK/JS提供的數據介面去發送數據。
通常來說,為了避免消耗用戶的流量,一般是多條數據壓縮後發送,而不是一條就發一次。
優點: 準確度高:可以精準控制觸發條件,什麼時候才觸發,準確統計某一事件; 自定義強:可以自定義很多豐富的數據數據傳遞到;
缺點: 工作量大:需要跟蹤的地方都添加對應的跟蹤程式碼,需要埋點,因此工作量會比較大;
針對這個問題,國外工具普遍會提供TMS(Tag Manager System,程式碼管理工具),這個可以顯著提升效率,中國的增長工具廠家就還沒提供類似的產品,但有程式化廠家有提供TMS。
有人說,用這個方案,版本更新的程式碼大,容易造成混亂,是不存在這樣的問題,版本更迭根本不用對舊版本的埋點做重新部署的,只有說,放棄舊版本框架,完全重寫一個的時候需要重新部署,當然,新增頁面或需求的時候,會需要添加新的埋點,這個的工作量並不算大的,如果你內部有一個比較好的回饋機制,這個很快的。
另有人說,這個有性能影響,使用第三方SDK/JS,肯定會消耗記憶體,頻寬,這是避免不了的,至於說傳遞數據,現在大部分的第三方都不是實時發送的,都是累計壓縮數據後,等網路比較好的時候才發送數據的;最後一個是,現在的手機,處理能力可能都不亞於一些舊的台式電腦的,如果說影響性能,那你的APP得有多大或你現有的架構有多複雜。
至於數據傳輸的不可靠,只要涉及到網路,都可能會有網路延遲或丟包出現的,是通病來的,也有很多解決方案,加鎖,重發,回調。
關注準確度的話,Web能夠達到99.9%,至於那1%是因為用戶屏蔽了cookie導致的數據對不上,這個是有方法可以解決的,APP是100%。
服務端埋點
服務端的埋點也有多種方式:
一種是服務端將數據通過協議的形式直接發送給收集數據的服務區,如Google Analytics的MP協議、神策直接發送數據的 Consumer,這種方式如果將服務端看做是一個終端,就類似一個客戶端觸發的時候就向收集數據的伺服器發送數據,如果客戶端會丟數據,那麼服務端埋點的也會丟,兩者是一樣的原理的。
另一種是最常用的日誌,如日誌做很多個性化的訂製實現數據的採集,這個工作量就大了,程式碼複雜,對於一個用戶量比較多的產品,而且做比較多配置,埋點跟蹤的話,日誌的增長速度是非常快,日誌的存儲和刪除會是個很大的問題,而且通常自己的BI和各種系統都會將日誌的相關數據入庫,有點重疊的意思。
服務端埋點和客戶端埋點相比有個差異,服務端埋點不會出現匹配不到的情況,個別需要服務端返回狀態的,沒有返回給客戶端,那麼客戶端就跟蹤不到,往往需要服務端才行,這類如成功提交表單,成功發表文章這些,但其實只要服務端返回狀態,前端埋點也是可以跟蹤到的,而且是一定準確的。
中國的工具很強調服務端的的方式採集數據,強調客戶端會出現統計的不準,和自己的業務資料庫數據對不上,出現丟數據的情況,這是前端數據採集的先天缺陷,因為網路異常,或者統計口徑不一致,都會導致數據對不上。
而國外的工具傾向通過客戶端埋點,因為國外的工具往往都會提供TMS(Tag Manager System,程式碼管理工具),自定義功能非常強,可以通過TMS控制條件觸發與數據發送,可以很精準的實現數據採集,這樣的管理其實很方便的,但中國雖然有廠家提供TMS,但還沒有達到能夠隨意控制數據傳輸,所以程式碼埋點往往會變得很複雜,不能脫離開發直接實現跟蹤,試想一下,如果是增加某個埋點,有TMS的,直接加完就發布出去,沒有TMS,需要開發在頁面或服務端加程式碼後,伺服器去update才生效。
可視化/無碼埋點:
就是開發者無需再對追蹤點進行埋碼,而是脫離程式碼,只需面對應用介面圈圈點點即可追加隨時生效的事件數據點。將核心程式碼與資源配置分開,當APP啟動的時候從服務端更新配置和資源,APP根據新的配置和資源上報數據,整個結構有點類似GTM的,配置都是在GTM,用戶每次打開載入到的是最新的GTM配置,那麼GTM上部署的觸發條件有可能被觸發,從而實現數據收集。
原理:web和APP的頁面都有類似的結構,在部署完SDK後,SDK會自動獲取頁面各個層級的關係,在web是dom結構,在APP是UIVIEws,當你用可視化頁面設置埋點的時候,伺服器能夠自動知道元素的位置,並且將這些配置保存到伺服器,用戶打開的時候,就會載入這些配置到客戶端,當用戶觸發該元素的位置時候,就會將相關數據發送出去。
優點: 部署簡單,能大大節省人力成本; 對於不同程式碼的產品和運營,可以通過可視化介面進行配置;
缺點: 不靈活,不能自定義獲取數據屬性,部分可視化的位置可能覆蓋不全; 每次啟動載入服務端最新的配置資源,浪費流量。
無/全埋/自動/無痕埋點:
名字太多,如無埋點,全埋點、自動埋點、無痕埋點,就像字面說說的,不需要埋點,已經儘可能的收集所有控制項的數據,最早是在2013年,由Heap提出的。
原理:SDK利用CSS選擇器技術和監聽控制項的事件觸發技術,在APP中嵌入SDK,這個SDK就會將APP中儘可能多的操作都採集下來,可以通過可視化操作介面對採集的數據做分類,基本上是先收集,後篩選的節奏,可能會出現數據噪音的情況。
優點: 部署簡單,只需部署SDK,初始化幾行程式碼,就會自動收集數據; 自動收集很多數據,能夠回溯;
缺點: 不靈活自定義數據屬性; 收集的數據多,給網路傳輸帶來壓力,消耗用戶的流量和電量,部分會涉及隱私問題,
可視化埋點和無埋點的是很類似的,只是它們對資訊的採集和處理流程不一樣而已,可視化埋點是,採集的才處理,而無埋點是先採集所有的,才選擇性處理,無埋點採集的是儘可能多的數據,所以無埋點能夠對數據做回溯,但是這也意味浪費流量,浪費電,坑用戶,頭部APP不會用這種方式。
可視化埋點和無埋點是噱頭遠大於實際,在中國眾多的增長工具中,雖然都提供了所有的埋點方式,但是程式碼埋點才是最常用的一種方式,在實際的應用中會出現跟蹤不到,跟蹤不準確,數據處理等問題,所以如果看到第三方工具想你推向推薦這兩種方式,絕對是不靠譜的,這種方式是非主流。
埋點的原則?
簡單:埋點的方法簡單,能夠快速上線的,如果一個工具埋點都折騰個幾個月,這不坑爹的嘛,通常TMS能夠明顯提升效率。
準確:收集到的數據是準確的,才有參考價值,如果收集到的數據跟後其他其他數據有很大的誤差,根本不可信的,再花哨的埋點功能也是沒用的,目前準確度高的還是程式碼埋點的形式。
免費:大部分人在做工具選型的時候會著重考慮這個工具是否付費的,都想要免費的工具,中國的工具就沒有免費的,都是付費的,請選擇大型廠家的產品。