在産品規劃的過程中,産品經理的工作往往需要使用數據來進行輔助,例如如何利用用戶的使用數據來為後續的産品叠代提供依據,如何向上級領導彙報産品成果,如何做精細化的運營活動,這些都需要通過埋點文檔獲取的數據來實現。
一、埋點文檔的定義、分類以及數據平台
1. 什麼是埋點文檔
舉個簡單的例子,如何才能知道自已一個月的收入與支出情況呢?有兩種做法,第一種是每個月初的時候看一下自己還有多少存款,然後到下個月月初的時候再看一下有多少存款,兩者相減就是一個月的開銷情況。
但如果你想知道錢到底花在哪了,哪裡該花哪裡該省,你就得有一個賬本,定義好一些類别,例如吃飯,住房,交通,服裝等等,然後分門别類的把收支記錄下來,這樣才能有針對性的對收支進行調整。
埋點文檔,就是一個定義好的産品賬本,它記錄的是産品的收支情況,例如哪些功能被哪些用戶使用了多少次,哪些頁面用戶流失率高,哪些内容被哪類用戶喜歡。
2. 埋點文檔的分類
從埋點的分類來看,埋點分為“前端埋點”和“後端埋點”兩種,前者是記錄用戶在客戶端的使用數據,包括但不限于網頁,APP,PC客戶端等等,而後端埋點主要是記錄程序接口的調用情況,例如接口訪問次數,接口返回各個狀态次數的統計等等。
産品經理通常說的埋點文檔指的是前端埋點文檔,前端埋點的優勢是可以事無巨細的統計到用戶的行為數據,但前端埋點為了性能考慮,并不會實時上報數據,所以注定了前端埋點的數據在時效性和準确性上不會做到100%精準無誤。
如果希望統計的數據是實時且精準的,則往往采用接口将數據在指定的觸發條件下上報至服務器,這時候就需要後端埋點來進行統計了。
3. 前端埋點的三種方法
目前常見的前端埋點分為三種方法,分别是使用代碼埋點,可視化埋點以及無埋點,我們一個一個來看一下:
(1)代碼埋點
代碼埋點是指在程序中加入用戶統計數據的代碼,當指定的觸發行為發生的時候,就統計用戶的使用數據,例如:想要統計某個活動頁的運營效果,則觸發行為是用戶點擊活動頁的入口,并且同時上報用戶本身的數據例如用戶ID等等。
代碼埋點的好處是可以根據使用者的需要任意的選擇在什麼時候發送什麼數據,并且可以自定義豐富的數據屬性。
而劣勢則是對于産品經理對業務的理解程度和用戶的理解程度要求較高,需要知道什麼數據需要被收集;另外一個劣勢是每一次加入埋點代碼都會帶來相對應的工作量,每一次更新埋點代碼會引起新舊版本的不兼容問題,因為總是有一些用戶不會更新到最新的版本(當然,如果你的産品可以确保每次用戶使用的都是最新版本可以忽視這個問題)。
(2)可視化埋點
可視化埋點一般由第三方數據平台提供,可以通過非常直觀的形式管理數據追蹤點,通過圈選頁面元素來實現數據的收集,例如下圖是國内數據平台Talkingdata的可視化埋點方案——靈動分析。
靈動分析
可視化埋點的優勢在于每次更新埋點的時候并不需要等待程序更新,而是把數據統計的代碼在應用程序啟動的時候通過網絡更新配置,解決了産品臨時想要加入或修改埋點的需求。
而可視化埋點的劣勢,是不能靈活的自定義事件,隻能使用平台提供的一些通用性事件,例如點擊次數,如果産品希望收集到用戶在文本框中輸入的内容,或者産品需要做大數據分析或人工智能推薦系統,可視化埋點方案是無法支持這樣的數據收集能力的。
(3)無埋點
無埋點方案又叫全埋點方案,是盡可能的收集所有控件的操作數據,然後通過界面配置的方式添加一些需要統計的數據。
這種方案的好處是可以解決數據的回溯問題,即使之前的版本沒有對某一個控件做精确的埋點,那麼全埋點方案也一樣會收集這個控件的數據,當後續有數據分析需要的時候就可以調出數據來查看了,
當然,無埋點的劣勢跟可視化埋點一樣,不能靈活的自定義事件,僅能用戶分析用戶在産品中的交互行為,且因為所有的事件都在收集,有時候會産生大量不必要的數據,給服務器帶來很多負載。
綜上所述,在三種埋點方案中,能最全面滿足産品需要的還是代碼埋點方案,所以本文重點介紹代碼埋點的文檔撰寫。
二、如何寫埋點文檔
1. 選擇數據平台
絕大多數公司的前端埋點會使用第三方數據平台來進行,極少數的大公司會有自己開發的數據平台,不想自己開發但又想确保數據安全的公司會選擇購買數據平台進行私有化部署。
知名的第三方數據平台有國外的Google Analytics、Mixpanel,國内的有百度統計、友盟、Talkingdata、諸葛IO,神策數據,還有專注于遊戲領域的dataeye等等。
通常來講埋點平台選擇一家即可,但因為前端埋點非實時性和精确度不高的特點,也會有公司在産品中同時使用兩個埋點平台,用兩個平台收集的數據來做相互的印證,提高數據的準确性,不過這種做法會帶來額外的工作量,建議謹慎選擇。
2. 查看平台技術文檔
選擇好平台之後,第二步就是要查看平台提供的技術接入文檔,不同的平台對于數據上報可能會有不同的限制,同時字段的命名也可能有一定的差異,所以需要通過查看平台提供的技術文檔來了解這些信息。
下面我們就用Talkingdata的文檔來舉例,首先點擊官網中的文檔中心。
進入文檔中心後我們會看到有很多的産品服務,包括APP、遊戲,廣告等等。我們點擊第一個App Analytics的集成文檔查看APP數據統計的技術文檔。
進到集成文檔之後,首先看到左邊畫紅框并且标注1的部分,這裡是各個不同客戶端的文檔,對應的是不同的開發語言,這個我們就不用一個一個去看了,因為平台給不同客戶端提供的數據統計功能都是一樣的,隻是各個客戶端編程語言不一樣所以需要這麼多,我們就以第一個iOS平台為例來講。
然後我們看到右邊紅框标注2的部分,這部分是在教開發人員怎麼把數據統計的功能快速集成到自己的app裡面,我們如果是做一款從0到1的産品,要做數據統計,隻要告訴開發同事,我們要使用哪個平台,然後他就會自己找到這個技術文檔來看,我們不用去操心這部分的事情。
右邊紅框标注3的部分,是一些基礎的統計功能,比如說:新增用戶數,活躍用戶數,7日留存,版本升級情況,這些數據隻要你的産品完成了标注2的那些事情之後,數據平台就會幫你自動統計好。等産品上線之後直接到這個數據平台來看數據就好了。
重點是紅框标注4的部分,高級功能中的自定義事件,我們的埋點文檔主要也就是為這個功能服務的。而靈動事件就是之前提到的可視化埋點,這裡我們省略不做說明。
埋點技術文檔
三、埋點文檔實例
通過查看埋點技術文檔,我們可以知道Talkingdata使用EventID來記錄自定義事件的名稱,使用Label來記錄自定義事件下的多個追蹤項,所以EventID Label就組成了一個具體的事件名稱。
在實際工作中,因各家公司使用的數據平台不同,所以埋點文檔并沒有形成一個統一的規範。我習慣于将EventID用于記錄某一個頁面,以Label記錄該頁面下的某個事件,以此達到對用戶行為進行歸類的目的。
我們用“人人都是産品經理”APP的首頁來做一個說明,看一下:
人人都是産品經理
1. EventID
在第一列的EventID,我們定義頁面的ID号和名字,這裡我采用的是英文字母 兩位數字的方式,可以通過英文字母區分不同的業務模塊,數字區分不同的頁面。
2. Label
第二列Label字段,定義的是用戶在這個頁面上的使用行為,因為Label是從屬于前面EventID的,所以在功能點編号上也要繼承前面的編号,例如:閱讀頁的EventID是A01,那麼閱讀頁下面的事件就是A01加上兩位數的編号,這樣可以很方便的查看事件的從屬頁面,特别是當有同一個事件在多個頁面重複被調用的時候。如果兩位數的編号不夠的話可以再增加位數。
另外一個需要注意的點是,如果某個點擊事件是進入到了EventID的子頁面,那麼這個事件Label的編号就自動變為這個EventID的編号,這樣可以很好的體現上級頁面與下級頁面的從屬關系。 但如果一個頁面可以由多個Label事件進入,那麼就不用這麼處理,而是直接使用一個公共的編号就可以了。
例如做一個電商系統的埋點,商品的詳情頁可以從A01-banner,從A02-廣告,從A03-商品列表,從A04-搜索,從A05-收藏等等入口進入,在不同的頁面中這些入口的Label編号肯定是不一樣,但商品詳情頁的EventID是唯一的。
3. 上報時機
第三列上報時機字段,需要說明這個埋點事件根據什麼條件來觸發,通常來講分為顯示時觸發和操作時觸發兩種,前者看的是曝光量,後者看的是轉化量,當有了全量的數據之後就可以用來構建曝光-轉化的漏鬥模型了。
對于平台之間差異化較小或沒有差異的産品,例如iOS和安卓如果功能頁面交互都一緻,那麼可以共用同一份埋點文檔,但如果産品分布的平台較多,互相之間差異較大,例如既有手機APP又有PC客戶端還有網頁版,那麼最好分不同平台來撰寫不同的埋點文檔。
4. 上線時間
第四列上線時間,這個字段是說明該埋點是什麼時候上線的,有些團隊會用版本号來說明上線時間,但我認為版本号有幾個弊端:
- 一是如果産品不同平台的版本号碼不一緻,會導緻混亂;
- 二是版本号無法體現埋點的生效時間,需要通過曆史的産品文檔查找到對應的功能才能知道,不夠直觀,所以我這邊選擇使用上線時間來作為埋點的生效時間。
5. 優先級
第五列是優先級,因為代碼埋點需要開發人員花費時間來進行代碼的編寫,所以與功能需求池一樣,需要标注埋點的優先級,以便開發人員根據優先級來評估工作量。我這裡使用的是騰訊對于需求優先級的排列習慣,以P0為優先級最高。
最後一列是備注列,通常用來做一些備注的說明,例如某個埋點事件可以不再統計了,就可以寫在備注說明裡面。
四、自定義事件
如果僅僅隻是按照這樣撰寫埋點文檔,隻能統計到事件發生的次數。而代碼埋點的核心是自定義事件的屬性,也就是在上報事件的時候,同時上報這個事件定義的屬性。
還是拿人人都是産品經理的APP來舉例,首頁上有很多文章,所以會有一個點擊查看文章詳情的事件,但是要想統計到誰在什麼時間點擊了一篇什麼文章,以便分析用戶的喜好和使用習慣,就需要通過定義數據字典來給自定義事件添加用戶是誰,點擊事件,點擊的文章ID這三個屬性。
1. 什麼是數據字典
數據字典是用來定義自定義事件屬性的文檔,通常和埋點文檔放在一起通常有以下幾個字段:
數據字典
- KEY:Key是數據字典的核心内容,表示的是屬性的名稱,例如如果要記錄用戶的ID,那麼就需要定義一個名為User_ID的key,如果是記錄文章的标題,則需要定義一個名為Title的key。
- 注釋:對于key字段的解釋,用來說明key值代表的是什麼,便于後續的查詢。
- 數據類型:數據類型分為名義數據、等級數據和連續數據三種,這三個數據類型的定義是基本的統計學知識,本文略去不表,标注數據的類型有助于後續的數據分析工作,
- Value:Value是Key對應的值,有一些Key對應的是不确定的值,例如User_ID,有多少個用戶就有多少個值,所以Value可以為空。但有一些Key的Value是限制在一定範圍内的,所以需要事先對Value的可選擇值作出定義,例如如果想統計一篇文章是否讀完,可以定義一個Is_Read_Off的Key,那麼對應的value值隻有兩個,是或否。
- 全局字段Global:在數據統計的過程中,有一些key值是需要所有的事件都要進行統計的,典型的例如用戶的ID,為了節省時間,可以将這些key值定義為全局字段,這樣就可以不用在每個事件當中重複填寫了。
2. 如何給key命名
在給數據字典的key命名的時候,建議可以使用程序員給字段變量取名的常用方法,主要有兩種:
(1)駝峰命名法
駝峰命名法是最常用的命名方法之一,第一個單詞以小寫字母開始;從第二個單詞開始以後的每個單詞的首字母都采用大寫字母,例如:userName,這種駝峰命名法又叫小駝峰法。而大駝峰法,則是把第一個單詞的首字母也大寫,例如:UserName。
(2)下劃線命名法
而下劃線命名法就顧名思義,是在多個單詞之間使用下劃線來進行分割,例如如果定義用戶名為UserName,那麼用下劃線命名法則會寫為User_Name。
我個人傾向于大駝峰 下劃線的寫法,當然,并沒有強制的要求說字段命名一定要這麼寫,甚至寫拼音也可以(就是顯得有點low)。這兩種命名方法是一種約定俗成的規則,隻是如果你這麼寫的話,負責埋點的開發GG會覺得你很專業。
3. 将自定義事件的屬性添加至事件中
基于這份數據字典,我們就可以給自定義事件添加屬性了,在原有的埋點文檔上添加一列Key/Value字段,然後把要添加的屬性加入到事件對應的行就可以了。
添加Key/Vlaue字段
如果要統計的屬性很多,可以使用分号或者換一行來描述,同時也可以在每一行後面寫上這個屬性是用來統計什麼内容的,方便負責埋點的開發同事了解屬性的内容。
五、埋點文檔注意事項
1. 埋點文檔隻可增加,不可修改和删除
埋點文檔不同于産品經理的其他文檔,像PRD文檔一般都是隻寫本次叠代的内容,但埋點文檔需要自始至終都在原有的基礎上進行填寫,且不能對原有的埋點進行修改或删除。
為什麼呢?舉個例子:
假設我們現在有一個編号A01的功能點,對應的事件是點擊了某一篇文章,對應的版本号是1.0版本,到了1.1版本的時候,我把原來A01編号的功能點從點擊了某一篇文章改了一下,變成了點擊搜索按鈕。
那麼問題就出現了,還沒有升級到1.1版本的用戶,也就是那些1.0版本的用戶,他們點擊文章的時候依然會使用A01的編号來上傳數據,而更新到1.1版本的用戶,點擊搜索按鈕的時候,也在用A01編号來上傳,這就會導緻A01這個編号同時記錄了兩個版本不同行為的數據,導緻數據不準确。
因為産品無法保證每個使用者都在使用同一版本,所以埋點文檔不可以修改,也不可以删除,因為即使從埋點文檔中删除了,已經上線了的統計代碼是不會删除的。删除某個埋點文檔可能會導緻這個事件依然在上報,但後續的産品經理卻不知道這是個什麼事件了。
如果要對埋點文檔進行删減,隻能在備注中标明,該埋點已于xx時間廢棄。
2. 事件必須獨立
為了确保埋點的準确性,需要讓不同的事件之間相互獨立,例如APP頁面中的返回事件,要統計該頁面的蹦失率(Bounce Rate)就需要統計有多少人點了返回按鈕,但是每個頁面可能都有返回按鈕,如果隻把Lable寫成“返回”則很有可能會與其他頁面的返回相互混淆,造成數據結果不正确,這個問題我們已經通過給每個EventID和Label加上唯一編碼解決了。
另外一個注意點之前也提到過,就是通用的頁面事件需保持唯一的編号,而不是用多個編号去統計同一個事件,造成數據的分散。如果有一個通用的頁面可以通過不同的入口進入,那麼可以在這個頁面的事件中加入一個From_page的屬性,來記錄是從哪個入口進入到這個通用頁面中來的。
3. 數據字典不重複
在一個大型的團隊中可能會有多個産品經理一起維護一份埋點文檔,為了确保每個事件屬性的含義保持一緻,所以數據字典中的每一個key也都是唯一的,如果自己需要的key已經由其他人定義好了,則可以直接拿過來使用。如果要定義之前沒有出現過的key,則隻需要在數據字典中添加,然後同步給其他産品經理即可。
4. 注意平台限制
不同的埋點平台可能對于事件和屬性有上限的限制,例如友盟平台一個APP隻能記錄500個事件,每個事件隻能定義10個屬性,而talkingdata的事件是可以無上限記錄的,每個事件可以記錄50個屬性,所以大家在撰寫埋點文檔的時候,一定要注意自己選擇的平台是否對于事件有限制規則,以免出現無法記錄的情況出現。
5. 埋點測試
埋點代碼編寫完成後需要對埋點進行測試,這個過程一般是和測試同事一起進行,用來确保埋點的數據上報正确,該統計的屬性也都添加成功了。
總結
對于産品經理來說,埋點的數據不僅僅是用于分析用戶的行為,它更是很多功能的基礎,例如有了埋點的數據才可以做産品報表,或者可以通過埋點構建大數據用戶畫像,用于Ai推薦系統,亦或者是分析渠道的優劣對運營作出指導。
以上就是對埋點文檔的一點經驗,希望能對你有所幫助,大家有什麼看法也歡迎在評論區讨論。
本文由 @黃瀚星 原創發布于人人都是産品經理。未經許可,禁止轉載
題圖來自Unsplash,基于CC0協議
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!