一文讀懂代碼埋點(diǎn)、全埋點(diǎn)、可視化埋點(diǎn) | 5000字淺顯易懂解析
↑點(diǎn)擊關(guān)注↑開啟精益成長

隨著數(shù)據(jù)正式成為第五大生產(chǎn)要素,其在當(dāng)今社會(huì)扮演的角色地位不言而喻。數(shù)據(jù)運(yùn)營也已經(jīng)不再局限于某一個(gè)崗位,而是每一位運(yùn)營、市場(chǎng)等營銷人員必備的思維和工作方式。
由此,易觀數(shù)科推出「數(shù)據(jù)運(yùn)營系列」文章,將系統(tǒng)介紹“理數(shù)——收數(shù)——看數(shù)——用數(shù)”的數(shù)據(jù)運(yùn)營閉環(huán),旨在幫助大家快速落地?cái)?shù)據(jù)運(yùn)營,掌握數(shù)據(jù)驅(qū)動(dòng)增長的科學(xué)工作方式。該系列文章將在易觀數(shù)科公眾號(hào)每周四持續(xù)發(fā)布,歡迎大家關(guān)注。
上一篇文章《如何搭建一套完整的指標(biāo)體系?2個(gè)模型+1個(gè)原則》中,我們系統(tǒng)介紹了指標(biāo)體系搭建的方法論,也由此完成了我們數(shù)據(jù)運(yùn)營閉環(huán)中的“理數(shù)”環(huán)節(jié)。數(shù)據(jù)事先理清和規(guī)劃完畢后,我們便可有條不紊地進(jìn)入到“收數(shù)”環(huán)節(jié)。
說到“收數(shù)”便離不開數(shù)據(jù)采集,說到數(shù)據(jù)采集便離不開埋點(diǎn)。
講埋點(diǎn)的文章那么多,我們?yōu)槭裁催€要寫它?首先,這不是一篇純技術(shù)文章,而是從一個(gè)非技術(shù)人員的角度,希望通過淺顯的語言描述,讓運(yùn)營同學(xué)能快速了解概念。
此外,目前市面的埋點(diǎn)文章,要么沒有進(jìn)行系統(tǒng)性的知識(shí)梳理,要么不夠客觀存在偏向性。而我們則希望讓大家透過表象,通過系統(tǒng)的講解和梳理,了解埋點(diǎn)的真正含義。
1
First Point
認(rèn)識(shí)埋點(diǎn)
埋點(diǎn)是指在應(yīng)用的特定流程中,通過技術(shù)手段收集用戶發(fā)生的行為信息,從而通過后續(xù)分析的手段還原用戶的場(chǎng)景,以指導(dǎo)產(chǎn)品功能改進(jìn)、驗(yàn)證客戶服務(wù)的質(zhì)量等。
對(duì)于目前移動(dòng)互聯(lián)網(wǎng)時(shí)代的應(yīng)用,從用戶行為的形式劃分,常見的有:瀏覽頁面、點(diǎn)擊按鈕、手勢(shì)滑動(dòng)、長按等;或從功能劃分,常見的有:驗(yàn)證行為、交易行為、加入清單、搜索等功能行為。
針對(duì)不同行為的埋點(diǎn)采集,從埋點(diǎn)在應(yīng)用中的位置也可以區(qū)分成客戶端埋點(diǎn)、服務(wù)端埋點(diǎn)等,從實(shí)現(xiàn)手段上劃分,可分為:代碼埋點(diǎn)、可視化埋點(diǎn)、全埋點(diǎn)等。
也許你還分不清集成和埋點(diǎn)。為了進(jìn)行埋點(diǎn),像易觀方舟通常都會(huì)提供一個(gè)代碼包,可以理解為一個(gè)工具包,里面包含常用的工具。想埋點(diǎn)就要先有這個(gè)工具包,也就是集成SDK。然后根據(jù)里面的說明書,再使用這個(gè)工具包制作出各種東西,也就是埋點(diǎn)。
1.1 為什么需要埋點(diǎn)?
互聯(lián)網(wǎng)產(chǎn)品在研發(fā)時(shí)往往不會(huì)專門記錄用戶身份和行為數(shù)據(jù),也不會(huì)包含專業(yè)的數(shù)據(jù)分析功能。但有時(shí)為了分析用戶產(chǎn)生某些動(dòng)作或不產(chǎn)生某些動(dòng)作的深層原因,就需要詳細(xì)的用戶數(shù)據(jù)進(jìn)行分析。這個(gè)時(shí)候就需要用到專業(yè)的用戶分析工具以及埋點(diǎn)了。
數(shù)據(jù)獲取是任何一個(gè)數(shù)據(jù)平臺(tái)的起始動(dòng)作。對(duì)于互聯(lián)網(wǎng)產(chǎn)品來說,用戶行為的捕捉及獲取是重中之重。如果沒有準(zhǔn)確、全面的用戶身份和行為數(shù)據(jù)作為輸入,在后續(xù)分析中得到準(zhǔn)確洞察的可能性就會(huì)存在不確定性,營銷閉環(huán)也會(huì)缺少過程數(shù)據(jù)依據(jù),精細(xì)化運(yùn)營更難以開展。
1.2 埋點(diǎn)的原理
對(duì)基于用戶行為的數(shù)據(jù)平臺(tái)來說,發(fā)生在用戶界面的,能獲取用戶信息的觸點(diǎn)就是用戶數(shù)據(jù)的直接來源,而建立這些觸點(diǎn)的方式就是埋點(diǎn)。
當(dāng)這些觸點(diǎn)獲取到用戶行為、身份數(shù)據(jù)后,會(huì)通過網(wǎng)絡(luò)傳輸?shù)椒?wù)器端進(jìn)行后續(xù)的處理。
埋點(diǎn)從準(zhǔn)確性角度考慮,分為客戶端埋點(diǎn)和服務(wù)端埋點(diǎn)。
客戶端埋點(diǎn),即客戶操作界面中,在客戶產(chǎn)生動(dòng)作時(shí)對(duì)用戶行為進(jìn)行記錄,這些行為只會(huì)在客戶端發(fā)生,不會(huì)傳輸?shù)椒?wù)器端;
服務(wù)端埋點(diǎn),通常是在程序和數(shù)據(jù)庫交互的界面進(jìn)行埋點(diǎn),這時(shí)的埋點(diǎn)會(huì)更準(zhǔn)確地記錄數(shù)據(jù)的改變,同時(shí)也會(huì)減小由于網(wǎng)絡(luò)傳輸?shù)仍蚨鴰淼牟淮_定性風(fēng)險(xiǎn)。
從分析的角度出發(fā),數(shù)據(jù)越準(zhǔn)確、越全面就越能達(dá)到理想狀態(tài);但在實(shí)際生產(chǎn)過程中卻不得不考慮數(shù)據(jù)獲取可行性等問題。
由于數(shù)據(jù)分析工具的最終用戶可能是企業(yè)內(nèi)部的各種角色,如工程師、產(chǎn)品運(yùn)營、市場(chǎng)甚至其他業(yè)務(wù)人員;大家會(huì)在不同時(shí)間,在產(chǎn)品不同的模塊中,以不同的規(guī)則向產(chǎn)品中注入自己關(guān)心的采集代碼。遵循傳統(tǒng)方式,常見工作流程如下:

團(tuán)隊(duì)內(nèi)部還會(huì)使用Excel表格來搜集各個(gè)團(tuán)隊(duì)的埋點(diǎn)需求,然后再交給工程師。
實(shí)際上,即使是赫赫有名的數(shù)據(jù)分析服務(wù)商Mixpanel,在很長一段時(shí)間內(nèi)也只能將這種工作流程作為它所建議的最佳實(shí)踐,甚至不得不花篇幅在文檔中心提供了幾種不同風(fēng)格的文檔,以此幫助大家熟悉這種工作流程。
2
Second Point
傳統(tǒng)埋點(diǎn)的不足
一遍又一遍的迭代,使行為采集和埋點(diǎn)管理這兩個(gè)動(dòng)作構(gòu)成了上圖中的工作流閉環(huán),但這個(gè)閉環(huán)卻存在幾個(gè)明顯的弊端。因此,在實(shí)際工作中傳統(tǒng)埋點(diǎn)有很多讓大家非常苦惱的地方,例如:
人力成本增加,即需要投入對(duì)業(yè)務(wù)和技術(shù)都具備一定專業(yè)水平的人專門負(fù)責(zé)
溝通成本增加,即前期需要同多方協(xié)作
犯錯(cuò)成本增加,即發(fā)現(xiàn)錯(cuò)漏無法快速事后補(bǔ)救
管理成本增加高,即跨版本后,廢點(diǎn)會(huì)造成代碼垃圾也會(huì)影響性能
實(shí)際工作過程中,部分企業(yè)一方面強(qiáng)調(diào)數(shù)據(jù)獲取的重要性,另一方面卻依然沒有真正把重心投入進(jìn)來。
對(duì)行業(yè)從業(yè)者來說,數(shù)據(jù)獲取及管理,從來不是一個(gè)做到某種程度就夠用的問題,而是只要數(shù)據(jù)業(yè)務(wù)還在發(fā)展,就要不斷通過自行迭代,去探索更好的獲取及管理方式的問題。
3
Third Point
3種主流的埋點(diǎn)方式
聊完“埋點(diǎn)”這個(gè)大的概念,其細(xì)分概念隨即出現(xiàn),如“無埋點(diǎn)”、“全埋點(diǎn)”、“無痕埋點(diǎn)”、“無碼埋點(diǎn)”、“可視化埋點(diǎn)”等等。
而站在用戶的角度,如果仍然對(duì)這些概念不甚了解,那么結(jié)合業(yè)務(wù)做好數(shù)據(jù)采集就難以展開,選擇適合自己團(tuán)隊(duì)和業(yè)務(wù)的埋點(diǎn)方法也無法進(jìn)行......
接下來將系統(tǒng)介紹我們?cè)跀?shù)據(jù)采集工作中所有可能遇到的埋點(diǎn)方式,重點(diǎn)介紹代碼埋點(diǎn)、全埋點(diǎn)、可視化埋點(diǎn)的優(yōu)劣及適用場(chǎng)景。
3.1 代碼埋點(diǎn)
代碼埋點(diǎn)是最經(jīng)典的幫助工程師了解用戶是如何使用產(chǎn)品的埋點(diǎn)方式。因?yàn)槭枪こ處熑斯⒙顸c(diǎn)結(jié)合到代碼邏輯中,理論上只要是客戶端種的操作,再復(fù)雜也能采集到。
常見的如:頁面停留時(shí)間,頁面瀏覽深度,視頻播放時(shí)長,用戶鼠標(biāo)軌跡,表單項(xiàng)停留及終止等等。尤其是一些非點(diǎn)擊的、不可視的行為,非代碼埋點(diǎn)實(shí)現(xiàn)不可。

所以如果我們需要對(duì)埋點(diǎn)有更加精準(zhǔn)的控制力,那么代碼埋點(diǎn)是最好的選擇。
當(dāng)然弊端也是很明顯的,前文說描述的那些苦惱幾乎全是代碼埋點(diǎn)相關(guān)的。例如數(shù)據(jù)采集周期長、人力成本高等。
3.2 全埋點(diǎn)
全埋點(diǎn),一些國內(nèi)的團(tuán)隊(duì)也稱“無埋點(diǎn)”、“無痕埋點(diǎn)”以及“自動(dòng)埋點(diǎn)”。是一種對(duì)全自動(dòng)埋點(diǎn)方式的探索,而且從名字看仿佛是個(gè)一勞永逸的解決方案,那我們先看看什么是全埋點(diǎn)。
客戶端埋點(diǎn)一般分為訪問級(jí)、頁面級(jí)、頁內(nèi)行為級(jí):
用戶訪問一個(gè)網(wǎng)站或啟動(dòng)一個(gè)移動(dòng)應(yīng)用時(shí)幾乎所有的廠商都會(huì)自動(dòng)采集上報(bào)用戶的訪問;
當(dāng)用戶訪問不同頁面時(shí),有一部分廠商就會(huì)選擇不默認(rèn)自動(dòng)采集,而將其作為一個(gè)選項(xiàng)交給用戶;
而對(duì)于用戶在某一個(gè)頁面內(nèi)詳細(xì)的操作行為,只有極少數(shù)廠商支持自動(dòng)采集上報(bào)。
實(shí)現(xiàn)了后兩種自動(dòng)采集的廠商,通常會(huì)說自己是全埋點(diǎn)。但頁內(nèi)行為級(jí)的采集也還可以進(jìn)一步探討其采集的范圍。最常見的就是自動(dòng)采集可交互元素和自動(dòng)采集所有元素的差別:
可交互元素包含:鏈接、表單項(xiàng)(如按鈕、輸入框等)、HTML的對(duì)象級(jí)元素等;
不可交互元素就太多了,絕大多數(shù)的頁面元素都屬于此類。
由于實(shí)際上網(wǎng)頁和移動(dòng)應(yīng)用中的大家可以看得到的界面很多都并不是標(biāo)準(zhǔn)元素,所以實(shí)際上界面上很多看似可交互的元素也都是無法自動(dòng)采集上報(bào)的。這一點(diǎn)不可不謂之遺憾。
不過我們還是來看看全埋點(diǎn)的優(yōu)點(diǎn)。

首先,全埋點(diǎn)確實(shí)會(huì)自動(dòng)采集非常多的數(shù)據(jù),而且未來在使用數(shù)據(jù)的時(shí)候就可以從數(shù)據(jù)庫中直接查詢,不會(huì)面臨我想看的時(shí)候因?yàn)闆]有埋點(diǎn)采集而獲取不到的情況。這是非常受分析師喜愛的方式,因此經(jīng)常會(huì)聽到“能采集就盡量都采集,后續(xù)分析總能用得到”。
其次,埋點(diǎn)是比較耗時(shí)的工作,需要業(yè)務(wù)方提供方案,工程師進(jìn)行埋點(diǎn),測(cè)試團(tuán)隊(duì)進(jìn)行測(cè)試。而由于實(shí)際工作中埋點(diǎn)數(shù)量比較多,每次發(fā)布新功能或新活動(dòng)都需要新的埋點(diǎn),所以埋點(diǎn)不但費(fèi)時(shí),而且錯(cuò)誤率也難以控制。
有了全埋點(diǎn),數(shù)據(jù)用不用都先收回來,由于都是程序自動(dòng)完成,業(yè)務(wù)人員想要A而工程師埋成B這種錯(cuò)誤也幾乎不存在。
然而任何事務(wù)都有它的兩面性。
第一,全埋點(diǎn)的“全”并非真的全部。基本的電腦瀏覽器和移動(dòng)應(yīng)用中頁面內(nèi)常見的用戶操作包括鼠標(biāo)行為、鍵盤行為和手指行為。例如網(wǎng)頁端常見的鼠標(biāo)點(diǎn)擊、鼠標(biāo)滑動(dòng)、屏幕滾動(dòng)、鍵盤錄入、光標(biāo)選取甚至靜止等;移動(dòng)端除了類似點(diǎn)擊的按下,還有多指開合、拉動(dòng)、用力按下等。
但這些操作并不會(huì)都被“埋點(diǎn)”,能埋點(diǎn)的通常僅限點(diǎn)擊或者按下,這顯然是遠(yuǎn)遠(yuǎn)不夠的,甚至我們都不能稱之為全埋點(diǎn)。
第二,全埋點(diǎn)的“全”以采集上報(bào)的數(shù)據(jù)量為代價(jià),隨著數(shù)據(jù)量上升導(dǎo)致客戶端崩潰的概率也會(huì)上升。尤其是移動(dòng)端,更多的數(shù)據(jù)量意味著更多的電量、流量和內(nèi)存消耗。從這個(gè)角度來看,想做到真正的“全”在現(xiàn)階段也是很難。
第三,即使全部行為數(shù)據(jù)可以被接收回來,具體分析時(shí)的二次梳理和加工也無法避免,甚至痛苦。因?yàn)闄C(jī)器無法在采集時(shí)能按照我們想要的方式對(duì)全部事件進(jìn)行有意義的命名,甚至無法保證采集上來的事件都正好是正確的。于是前期埋點(diǎn)時(shí)節(jié)省下來的人力成本,這個(gè)時(shí)候又都搭進(jìn)去了。
第四,現(xiàn)階段全埋點(diǎn)對(duì)于用戶身份信息和行為附帶的屬性信息也幾乎無能為力。
那么這個(gè)功能到底是我需要的嗎?這其實(shí)是個(gè)度的問題。關(guān)于這個(gè)問題,需要結(jié)合實(shí)際情況,如果你更需要隨機(jī)探索過去點(diǎn)擊行為的趨勢(shì),那么這個(gè)功能就合適,否則還有更好的選擇。
3.3 可視化埋點(diǎn)
代碼埋點(diǎn)的缺點(diǎn)對(duì)于網(wǎng)站還好,但對(duì)于移動(dòng)應(yīng)用來講無疑是格外低效的。為了解決這個(gè)問題,在一部分廠商選擇全埋點(diǎn)的同時(shí)也有大量廠商選擇了一種所見即所得埋點(diǎn)的道路,即可視化埋點(diǎn)。

可視化埋點(diǎn)的好處是可以直接在網(wǎng)站或移動(dòng)應(yīng)用的真實(shí)界面上操作埋點(diǎn),而且埋點(diǎn)之后立即可以驗(yàn)證埋點(diǎn)是否正確。此外,將埋點(diǎn)部署到所有客戶端也是幾乎實(shí)時(shí)生效的。
因?yàn)榭梢暬顸c(diǎn)的這些好處,分析的需求方,業(yè)務(wù)人員,沒有權(quán)限觸碰代碼或者不懂得編程的人都可以非常低的門檻獲取到用于分析的數(shù)據(jù)??芍^是埋點(diǎn)的一大進(jìn)步。
可視化埋點(diǎn)的部署原理也很簡(jiǎn)單。
支持可視化埋點(diǎn)的SDK會(huì)在被監(jiān)測(cè)的網(wǎng)站或移動(dòng)應(yīng)用被訪問時(shí)向服務(wù)器校驗(yàn)是否有新的埋點(diǎn),如果發(fā)現(xiàn)更新的埋點(diǎn),則會(huì)從服務(wù)器下載并且立即生效。這樣就能確保服務(wù)器收到最新的埋點(diǎn)后,所有客戶端都能在下一次訪問時(shí)得到部署了。
易觀方舟可視化埋點(diǎn)技術(shù)不僅能感知事件,即在定位埋點(diǎn)目標(biāo)時(shí)能使用位置、屬性等方式精確定位到事件觸發(fā)元素;還能獲取事件屬性,即能靈活地獲取與該事件相關(guān)的信息;還能多環(huán)境支持,例如安卓/IOS/JS等平臺(tái)、原生頁面/Hybrid模式(App內(nèi)嵌入網(wǎng)頁的)、以及mPaaS/React Native等架構(gòu)。

可視化埋點(diǎn)和全埋點(diǎn)有著對(duì)埋點(diǎn)和分析全然不同的追求:
可視化埋點(diǎn)的理念是提升原工作流程的效率——依然要梳理需求、設(shè)計(jì)埋點(diǎn);
全埋點(diǎn)則是將工作流都進(jìn)行了簡(jiǎn)化——反正數(shù)據(jù)會(huì)被采集回來,這兩步的必要性就容易被忽視。
這里不能說孰優(yōu)孰略,因?yàn)槭孪葒?yán)謹(jǐn)?shù)挠?jì)劃和事后發(fā)散的探索都是分析中的不同角度。況且這兩種埋點(diǎn)也完全不是排他的,完全可以同時(shí)使用。
但不可否認(rèn)的是,可視化埋點(diǎn)局限性也很多:
第一,可視化埋點(diǎn)也只是針對(duì)點(diǎn)擊可見元素的,其中可見元素最常見的就是點(diǎn)擊行為了。對(duì)于點(diǎn)擊操作的埋點(diǎn)也確實(shí)是目前可視化埋點(diǎn)的主攻點(diǎn)。但從實(shí)際情況看,復(fù)雜頁面、不標(biāo)準(zhǔn)頁面、動(dòng)態(tài)頁面都給可視化埋點(diǎn)增加不可用的風(fēng)險(xiǎn),一旦遇到就只能代碼埋點(diǎn)。
第二,對(duì)于點(diǎn)擊操作附帶的業(yè)務(wù)屬性,雖然也可通過進(jìn)一步選取屬性所在元素來獲取屬性信息,但國內(nèi)除了易觀方舟外,其他廠商支持得好的就比較少了。
第三,為了確保埋點(diǎn)準(zhǔn)確性,可視化埋點(diǎn)也逐步整合了更為復(fù)雜的高級(jí)設(shè)置,例如:“同頁面”、“同版本”、“同層級(jí)”、“同文本”……。但加上了這些復(fù)雜設(shè)置的可視化埋點(diǎn),還是那個(gè)為提效而生的可視化埋點(diǎn)嗎?
4
Fourth Poin
如何選擇不同類型的埋點(diǎn)
綜上,我們系統(tǒng)介紹了目前主流的三種埋點(diǎn)方式。至于如何選擇不同類型的埋點(diǎn),易觀數(shù)科總結(jié)出一張“埋點(diǎn)對(duì)比表”,通過對(duì)比這三類埋點(diǎn)的優(yōu)缺點(diǎn),根據(jù)自身的業(yè)務(wù)需求,選擇最適合的埋點(diǎn)方式。

例如,當(dāng)業(yè)務(wù)需要特別高的精度,不能有出錯(cuò)的空間,但對(duì)時(shí)間的要求不是很嚴(yán)格,就可以采用代碼埋點(diǎn)。
例如,數(shù)據(jù)采集需求不要求特別高的精度,比如說有一萬條數(shù)據(jù),我們能夠容忍1%或者2%的差錯(cuò),而且我們還想知道歷史數(shù)據(jù)的話,就可以采用全埋點(diǎn)。
例如,想知道更多的屬性、更多的信息,但不想通過代碼埋點(diǎn),且希望能馬上生效。那么就可以采用可視化埋點(diǎn)。
通過我們總結(jié)出的這張“埋點(diǎn)對(duì)比表”,便可以幫助大家更快地根據(jù)自身業(yè)務(wù)的具體需求采用更合適的埋點(diǎn)方式。再結(jié)合易觀方舟的數(shù)據(jù)采集能力,即可更方便、更快捷、更準(zhǔn)確地獲取數(shù)據(jù)。
+
往期「數(shù)據(jù)運(yùn)營」系列文章


關(guān)于「數(shù)據(jù)運(yùn)營系列」文章,你還想了解和學(xué)習(xí)哪些內(nèi)容?歡迎在留言區(qū)評(píng)論或者私信,我們下周四見~(PS:易大妹祝大家520“情人”節(jié)快樂)
點(diǎn)擊「閱讀原文」體驗(yàn)讓你大幅提效的數(shù)據(jù)運(yùn)營產(chǎn)品
