如何高質量設計埋點?
上一篇介紹了『用戶屬性』『事件』『埋點』的概念以及基本用法,而這篇文章會向大家介紹實際埋點過程中需要注意的事項,避免大家重復踩坑。
一、事件類型
1. 狀態事件與頻次事件
狀態事件:對于狀態事件,頻次是沒有參考價值的,只有事件的最終狀態才有價值
例如開關的開啟與關閉,在指定的時間段,我們只關心開關的最終狀態,至于期間開關了多少次,沒有實際的統計意義。對于狀態事件,我們一般用『用戶屬性』來表示。
但是對于很多統計平臺,用戶屬性存在數量限制,所以對于顆粒度很小,并且操作可能非常頻繁的狀態事件來說,也可以通過事件數的大小進行粗略判斷。例如,音樂應用中,通常會使用該音樂的收藏按鈕的點擊次數來判斷音樂的受歡迎程度。
頻次事件:頻次事件就是普通的統計事件,例如按鈕控件的點擊事件,頁面的展示事件。我們可以通過事件的頻次,判斷對應功能的價值。
2. 具體事件與抽象事件
- 具體事件: 指的是某個具體操作,例如按鈕的點擊、頁面的展示、彈窗的彈出等。
- 抽象事件: 往往指一類事件的集合,例如計算模塊之間的漏斗轉化率,往往會用到抽象事件,具體案例在下文會給出。
3. 主動事件與被動事件
- 主動事件: 需要用戶主動觸發,例如按鈕的點擊,或者tab的切換,主動事件代表了用戶的主動意愿,對于用戶行為分析具有很大的參考意義。
- 被動事件: 不能表明用戶的使用意愿,往往是用戶操作的附加結果。例如,用戶點擊back鍵退出當前頁面A,回到上一個頁面B,此時上一個頁面B的展示并不一定是用戶真的想要進入,只是退出頁面A的必經路徑而已。這類事件對于用戶的行為分析意義不是很大,但是對于其他維度的分析有著一定的參考價值,例如廣告展示等。
二、埋點前提
思考清楚有無埋點的必要,埋點的作用是為數據分析提供數據源。這些數據源往往需要組合運算才能得到數據結果,通常用于分析某個功能的使用情況。
很多問題不能或者沒有必要通過埋點來證明,例如驗證選品方向,通過統計平臺提供每日新增與次日留存即可驗證,沒有必要使用埋點進行細致的分析。
如果確定使用埋點,則要明確待驗證的核心問題,建議先理清產品方案的相關流程,并且明確定義每個模塊的核心指標。
三、埋點注意事項
1. 準確性原則
埋點事件一定是有效事件,而不是單純的事件頻次,下面是兩個說明案例:
案例1
產品邏輯:點擊某個按鈕,會進入到某個指定的頁面。
統計目標:計算『點擊按鈕』→『頁面展示』的事件頻次轉化率。
計算公式:轉化率 = 頁面展示次數÷按鈕點擊次數
埋點說明:如果僅僅把頁面展示的次數作為分子,會導致整個漏斗統計出錯。除了存在多個途徑進入該頁面的可能,還一個重要的原因:從該頁面進入其他頁面,并且從其它頁面返回至該頁面的時候,該頁面的展示也會被統計一次,如此計算的轉化率比真實情況要高。在該案例中,應該定義『有效頁面pv』:只有按鈕點擊進入該頁面,才算做一次有效的『頁面展示』事件。
案例2
產品邏輯:某個彈窗彈出,彈窗上有『確定』和『取消』兩個按鈕。
統計目標:計算『彈窗彈出』→『確定按鈕點擊』的頻次轉化率。
計算公式:轉化率=確定按鈕的點擊次數÷彈窗的彈出次數
埋點說明:其中,『確定按鈕點擊』應該是有效點擊,因為在無網或者卡頓情況下,存在用戶需點擊多次按鈕,彈窗才能消失的情況。這種情況下,第二步的事件數是大于第一步的。在進行類似埋點的時候,應該定義第二步的有效點擊:只要用戶點擊了按鈕,不管點了多少次,只算一次。
2. 高類聚,低耦合原則
如果是產品模塊之間的漏斗統計,建議為每個單獨的模塊設置一個事件作為代表,而不是使用模塊內部所包含的所有事件。
從產品結構上來說,模塊與模塊之間比較獨立,但是模塊內部往往由復雜的邏輯組成,所以將這些復雜的邏輯抽象成一個獨立的有效事件,有助于理清每個模塊間的轉化關系。
案例
產品邏輯:為了增加產品的使用時長,所以增加了積分體系邏輯,用戶可以在產品不同的地方,看到各種任務引導,然后通過完成不同的任務,兌換相應的積分,領取對應的獎勵。
統計目標:計算『任務引導』→『任務完成』的轉化率
計算公式:轉化率 = 任務完成次數÷任務引導次數
埋點說明:在積分體系中,應該將任務引導和完成任務分別抽象為兩個單獨的事件:只要任務引導出現,不管是哪種類型,哪個位置的引導,統統算作是『任務引導事件』。同理,不管用戶完成了哪個任務,也應該統統算作為『任務完成事件』。如此一來,能夠很輕松地從整體評估任務從曝光到完成的轉化率。若是對每個任務的曝光事件與完成都進行埋點分析,則是一個十分復雜繁瑣的過程。
3. 結果歸一性原則
如果某個動作的發生,必然導致另外一個唯一結果事件,則建議只統計結果事件即可,對于很多統計平臺來說,事件是十分稀有的資源。例如,Firebase最多允許添加500個事件,超出事件便不再顯示。
當這兩個事件具有高度的重合性與替代性,顯然結果事件對于數據分析更具有價值。
案例
產品邏輯:內購宣傳頁面有多個曝光入口,可以通過點擊首頁的卡片進入,也可以通過點擊彈窗進入。
統計目標:統計內購宣傳頁的展示次數。
埋點說明:為了獲得統計目標,只需要記錄內購宣傳頁的展示事件即可,而主頁卡片的點擊事件與彈窗點擊事件可以由『內購宣傳頁』的鍵值對來表示。如此一來,既能分析出內購宣傳頁面的展示與入口分布,又能節約了兩個入口事件。
4. 有效性原則
這一點是對上一點的補充,每個事件都應該對產品有著實際的分析價值與指導意義。對于那些沒有指導意義的事件,請勿添加。
這點對于剛接觸埋點設計的同學尤為重要,因為剛接觸埋點的時候,可能會存在『寧可錯埋一千,也不放過一個』的想法,這往往會浪費大量的事件資源。
- 對于產品邏輯不相關的事件不要添加,例如:彈窗關閉按鈕的點擊事件;
- 對于產品改善沒有任何指導意義的事件不要添加,例如:固定動畫的播放事件。
5. 分散與統一原則
如果一個事件,需要從多個維度進行分析,不僅每個維度在邏輯上相互關聯,而且要求統計上又相互獨立,則可以針對每個維度進行獨立的統計。同時,也建議把這些維度連接起來,作為一個整體的維度進行分析。
案例1
產品邏輯:一個購物商城包含多類商品(電子產品、日化產品等),每類商品有包含多種具體的產品。例如電子產品包含XX型號手機、XX型號電腦……用戶可以通過選擇某個商品,并點擊付款按鈕,完成付款行為。
統計目標:計算每類商品所在的銷售額與利潤
計算公式:
- 電子產品總銷售額=所有用戶購買的電子產品銷售額累加值
- 電子產品總利潤=所有用戶購買的電子產品利潤累加值
- 日化產品總銷售額……
埋點說明:每個商品都有專屬的種類、售價與利潤,其中種類、售價與利潤三個維度相互獨立,如果將這三個維度作為獨立的三個鍵值對,如下表所示:
會對統計目標造成割裂,上面的埋點要么只能統計商品種類數目,要么只能統計總銷售額,要么只能統計總利潤,無法實現統計目標。
所以,推薦將這三個維度連接起來作為一個鍵,如下表所示:
這樣可以通過SQL語句獲取用戶使用的原始數據,然后通過簡單地數據處理,就能得出用戶準確的使用情況。
這里的連接符推薦使用^,而不是_,因為很多命名的默認分隔符_,所以如果再以_作為分隔符,可能會給后續的數據處理造成麻煩。
四、其他
除了上面系統的原則與方法論,還剩一些零碎但同樣重要的補充。
1. 頁面展示統計差異
- 進入時觸發頁面展示事件,能夠獲取用戶主動進入該頁面的意愿;但是無法獲取該頁面的展示時長;
- 退出時觸發頁面展示時間,能夠獲取頁面展示時長,但是會造成部分統計丟失,例如用戶通過后臺清理的形式殺死該應用,則預埋的事件會無法發出;
2. 統計平臺的漏斗計算
一般統計平臺的步驟漏斗是按照用戶數來計算的,而不是事件數。
3. 埋點設計
進行埋點設計時,建議對照著產品設計圖,因為原型圖跟最終的設計圖存在著一些差異。例如,原型圖中存在的按鈕可能在設計圖中不會體現出來,所以參考最終設計圖埋點能夠保證埋點的準確性,同時還能夠校驗設計圖表達的準確性,一舉兩得。
五、小結
埋點的介紹基本上告一段落,接下來打算寫幾篇產品方案的設計心得,也請大家繼續關注。
#相關閱讀#
#專欄作家#
MING,個人公眾號:MING的大航海,知乎專欄:產品見知錄,人人都是產品經理專欄作家。一只專注于個人成長的產品汪,沉迷『方法論』,只分享值得收藏的『硬干貨』!
本文原創發布于人人都是產品經理。未經許可,禁止轉載。
題圖來自 Unsplash,基于CC0協議。
三個維度鏈接的鍵值對,上傳的時候,數據格式是MacBookPro13^1000^12000這樣么?然后在數據處理的時候可以分開為三個鍵值對?
特別棒
不錯 不錯
謝謝支持
不錯
謝謝支持