Product Management
Đăng nhập
ESC

Nhập từ khóa để tìm kiếm

↑↓ Di chuyển
Enter Mở
ESC Đóng

Tracking Plan & Instrumentation

Technical

Viết, kiểm và dùng tracking plan trước ngày ra mắt: từ câu hỏi readout xuống event, property, quy ước đặt tên, QA và dashboard.

Bạn đang ở đâu với kỹ năng này?

Làm bài Đánh giá Kỹ năng Kỹ thuật cho PM/BA — 2 người đã làm. Một lần làm chấm điểm cho tất cả kỹ năng trong nhóm Technical, không chỉ kỹ năng này.

Làm bài đánh giá

Kỹ năng này cho bạn điều gì

Bắt đầu từ đây

Hiểu vì sao event phải có trước ngày ra mắt — dữ liệu không đo ngược được — và biết một tracking plan gồm tên event, thời điểm bắn, property, định danh và nơi bắn. Biết bắt đầu từ câu hỏi cần trả lời, không từ màn hình.

Khi đã làm được

Đi ngược từ câu hỏi readout xuống chỉ số và từng event; viết tracking plan theo một quy ước đặt tên chung, có user_id và account_id, bắn event quan trọng từ server; đưa tracking vào tiêu chí chấp nhận và QA nó trên staging; và dựng dashboard readout có cả khối theo dõi chất lượng dữ liệu trước ngày ra mắt.

Roadmap — Cách học và đạt kỹ năng

Đã đọc 0/8 mục · còn khoảng 9 phút
Cách chúng tôi ghi nhận

Một mục được tính là đã đọc khi nó nằm giữa màn hình đủ lâu so với độ dài của nó (bảng và sơ đồ tính một nửa), bạn vẫn đang cuộn hoặc bấm phím, và bạn đã thấy tới cuối mục. Lướt nhanh hoặc để tab mở không được tính. Chúng tôi chỉ lưu thời gian đọc từng mục — không lưu gì khác.

Vì sao phải đo trước khi ra mắt, không phải sau

Trang này là bản thực hành của kỹ năng "Event tracking (khái niệm)". Nếu bạn chưa quen event và property là gì, đọc bài đó trước; ở đây giả định bạn đã biết, và đi vào cách viết, kiểm và dùng một tracking plan thật.

Event không đo ngược được quá khứ. Nếu ngày ra mắt chưa có event, hai tuần đầu — thời điểm có nhiều người thử nhất và nhiều điều để học nhất — sẽ mất vĩnh viễn. Không có cách nào lấy lại, dù đội data giỏi đến đâu.

Đo trước ra mắtĐo sau ra mắt
Readout 2 tuần có số thậtReadout 2 tuần bằng cảm giác và vài ảnh chụp màn hình
Thấy ngay bước nào người dùng bỏPhải đoán, rồi chờ thêm vài tuần để xác nhận
Tiêu chí rollback có thể đo đượcRollback dựa vào ticket support — luôn trễ
Event được viết trong ticket, dev làm cùng tính năngEvent là ticket riêng, xếp hàng sau việc mới, thường bị bỏ
So được nhóm bật và nhóm chưa bật trong rolloutKhông còn nhóm chưa bật để so

Dòng cuối thường bị quên: rollout theo nấc cho bạn một nhóm đối chứng miễn phí — người chưa được bật. Nếu không đo từ nấc đầu tiên, khi lên 100% bạn mất nó mãi mãi.

Ai làm việc này? Ở công ty có đội data, PM viết câu hỏi và chỉ số, data analyst cùng viết tracking plan, engineer cài đặt. Ở công ty nhỏ hơn, PM hoặc BA viết cả plan. Dù ở đâu, người sở hữu tracking plan là người sẽ phải trả lời câu hỏi "tính năng này có hiệu quả không" — thường là PM.

Từ chỉ số thành công xuống từng event

Sai lầm phổ biến nhất là bắt đầu từ màn hình: "màn hình này có ba nút, track cả ba". Làm vậy bạn sẽ có rất nhiều event và không trả lời được câu nào. Bắt đầu từ câu hỏi bạn sẽ phải trả lời sau ra mắt, rồi đi ngược xuống.

  • Bước 1 — Viết các câu hỏi readout. "Bao nhiêu người thấy tính năng? Bao nhiêu người thử? Họ bỏ ở bước nào? Ai dùng lại sau 7 ngày? Nó có ăn mất của tính năng khác không?"
  • Bước 2 — Mỗi câu hỏi thành một chỉ số, có công thức: tử số là gì, mẫu số là gì.
  • Bước 3 — Mỗi phần của công thức cần một event, với những property cần để chia nhóm.
  • Bước 4 — Gạch những event không phục vụ câu hỏi nào. Nếu ai đó muốn giữ, yêu cầu họ viết câu hỏi mà event đó trả lời.

Ví dụ (giả định): một sàn thương mại điện tử thêm tính năng "Mua chung" — rủ bạn bè cùng mua để được giá thấp hơn.

Câu hỏiChỉ sốEvent cầnProperty cần
Bao nhiêu người thấy?Số người thấy nút Mua chung / người xem trang sản phẩm có hỗ trợgroup_buy_cta_viewedproduct_id, category, source_screen
Bao nhiêu người mở nhóm?Người tạo nhóm / người thấy nútgroup_buy_createdgroup_id, product_id, group_size_target, price_tier
Rủ được bạn không?Tỉ lệ nhóm có ít nhất 1 người tham gia trong 24 giờgroup_buy_invite_sent, group_buy_joinedgroup_id, channel (zalo, messenger, copy_link), is_new_user
Nhóm có thành công không?Tỉ lệ nhóm đủ người trước hạngroup_buy_completed, group_buy_expiredgroup_id, members_count, hours_to_complete
Có tạo đơn thật không?Đơn từ Mua chung / tổng đơnorder_placed (thêm property)order_id, purchase_type (single, group_buy), group_id
Có ăn mất đơn mua lẻ không?Đơn mua lẻ ở nhóm bật so với nhóm chưa bậtorder_placedpurchase_type, rollout_group

Để ý dòng cuối: nó không cần event mới, chỉ cần thêm property vào event đã có. Thêm property vào event cũ thường đáng giá hơn tạo event mới, vì nó giữ được khả năng so với dữ liệu trước đó.

Viết tracking plan: đặt tên, property, định danh, nơi bắn

Tracking plan là một bảng, mỗi event một dòng. Nó là hợp đồng giữa PM, data và engineer: engineer cài đúng như bảng, data dựng dashboard dựa trên bảng, và không ai phải đoán tên event lúc 10 giờ tối trước readout.

CộtĐiền gìVì sao cần
Tên eventTheo quy ước đặt tên chung của công tyMột sự kiện mang ba tên khác nhau là ba nguồn số liệu không khớp
Mô tả và thời điểm bắnBắn khi nào, chính xác: lúc bấm hay lúc server xác nhận?"Đặt hàng" lúc bấm nút và lúc thanh toán xong có thể chênh nhau 20%
PropertyTên, kiểu dữ liệu, giá trị cho phép, ví dụKhông ghi giá trị cho phép thì sẽ có "Zalo", "zalo", "ZALO" trong cùng một cột
Nơi bắnClient (app, web) hay serverEvent liên quan tiền và trạng thái nên bắn từ server — client mất event khi mạng yếu hoặc bị chặn quảng cáo
Định danhuser_id, anonymous_id, account_id (với B2B)Không có, không nối được hành vi trước và sau đăng nhập, hay người dùng với công ty của họ
Chỉ số phục vụCâu hỏi hoặc chỉ số nào dùng event nàyEvent không phục vụ chỉ số nào là ứng viên để xoá
Chủ và trạng tháiAi chịu trách nhiệm; đề xuất / đã cài / đã QAEvent không có chủ sẽ hỏng âm thầm và không ai biết

Quy ước đặt tên. Chọn một kiểu và giữ nó ở mọi nơi. Kiểu phổ biến và dễ đọc là đối_tượng_hành_động ở thì quá khứ, chữ thường, gạch dưới: group_buy_created, invite_sent, order_placed. Quy tắc đi kèm:

  • Tên event và property bằng tiếng Anh không dấu, kể cả khi đội nói tiếng Việt — công cụ phân tích và câu SQL xử lý dấu kém, và người mới dễ gõ sai.
  • Một hành động, một event; khác nhau thì dùng property. Không tạo buy_button_red_clicked và buy_button_blue_clicked — tạo buy_button_clicked với property variant.
  • Không đưa giá trị thay đổi vào tên event: không có step_3_completed, chỉ có onboarding_step_completed với step_number.
  • Không bao giờ gửi dữ liệu cá nhân dạng thô — số điện thoại, CCCD, email — vào công cụ phân tích. Dùng mã định danh nội bộ.

Về định danh với sản phẩm B2B: với SaaS, người trả tiền là công ty, không phải từng người dùng. Mọi event cần cả user_id lẫn account_id; nếu không, bạn sẽ biết 400 người đã dùng tính năng mà không biết đó là 400 người ở 3 công ty hay ở 200 công ty — hai câu chuyện hoàn toàn khác nhau.

Mẫu tracking plan — bản trắng và ví dụ đã điền

Bản trắng, dán vào bảng tính của bạn — mỗi event một dòng:

TRACKING PLAN — [Tính năng] — Chủ: [tên] — Phiên bản: [ngày]
Câu hỏi readout: 1) ...  2) ...  3) ...

Event | Bắn khi (chính xác) | Nơi bắn | Property: kiểu, giá trị cho phép | Định danh | Phục vụ câu hỏi số | Trạng thái

Ví dụ đã điền (giả định): một phần mềm SaaS kế toán cho doanh nghiệp nhỏ thêm tính năng "Xuất hoá đơn điện tử hàng loạt". Câu hỏi readout: (1) bao nhiêu công ty thử, (2) bao nhiêu lần xuất thành công, lỗi chủ yếu ở đâu, (3) công ty dùng có giảm thời gian xuất hoá đơn không, (4) có công ty nào quay lại xuất từng tờ không.

TRACKING PLAN — Xuất hoá đơn hàng loạt — Chủ: PM Hoá đơn — v1.1

1. bulk_invoice_started
   Bắn khi: người dùng bấm "Xuất hàng loạt" và màn hình chọn hoá đơn mở ra
   Nơi bắn: web client
   Property: entry_point (string: invoice_list, dashboard_banner, menu)
   Định danh: user_id, account_id      Câu hỏi: 1

2. bulk_invoice_submitted
   Bắn khi: server nhận yêu cầu xuất hợp lệ
   Nơi bắn: server
   Property: batch_id (string), invoice_count (int, 1–500),
             template_type (string: standard, vat, sales)
   Định danh: user_id, account_id      Câu hỏi: 1, 2

3. bulk_invoice_completed
   Bắn khi: server nhận phản hồi cuối cùng từ nhà cung cấp hoá đơn điện tử
   Nơi bắn: server
   Property: batch_id, invoice_count, success_count (int), failed_count (int),
             top_error_code (string, null nếu không lỗi), duration_seconds (int)
   Định danh: user_id, account_id      Câu hỏi: 2, 3

4. invoice_issued   (event có sẵn — chỉ thêm property)
   Property mới: issue_mode (string: single, bulk), batch_id (null nếu single)
   Câu hỏi: 3, 4

Không track: hover, mở/đóng bộ lọc, cuộn danh sách — không phục vụ câu hỏi nào.
QA: data analyst kiểm trên staging trước ngày 20/9.

Ba điều đáng học từ ví dụ: event quan trọng (2, 3) bắn từ server vì liên quan trạng thái thật; câu hỏi 4 được trả lời bằng một property thêm vào event cũ chứ không phải event mới; và có hẳn một dòng "Không track" — ghi ra điều bạn cố ý không đo cũng quan trọng như ghi điều bạn đo.

QA tracking — kiểm như kiểm tính năng

Tracking hỏng là tracking hỏng âm thầm: không có màn hình lỗi, không có khách phàn nàn. Bạn chỉ phát hiện vào ngày readout, khi con số trông vô lý. Vì vậy tracking cần tiêu chí chấp nhận và được QA như mọi phần khác của tính năng.

Kiểm gìCách kiểmLỗi hay gặp
Event có bắn khôngĐi hết luồng trên staging, xem công cụ debug hoặc bảng sự kiện thôQuên bắn ở một nhánh, ví dụ luồng đăng nhập bằng Google
Bắn đúng một lầnBấm nhanh hai lần, tải lại trang, quay lại màn hình trướcBắn trùng khi tải lại, làm số tăng gấp đôi
Property đúng kiểu, đúng giá trịSo với bảng: số là số, chuỗi đúng danh sách cho phépGiá tiền gửi dạng chuỗi "150.000"; viết hoa lẫn lộn
Định danh đúngKiểm user_id và account_id trước và sau đăng nhậpuser_id rỗng ở event đầu tiên sau đăng nhập
Khớp với nguồn thậtSo số đơn trong công cụ phân tích với số đơn trong cơ sở dữ liệu cho cùng một ngàyLệch 10–30% do event phía client bị chặn hoặc mất mạng
Trên thiết bị thậtAndroid tầm thấp, iOS, trình duyệt trong Zalo hoặc FacebookTrình duyệt trong ứng dụng chặn script phân tích

Đưa tracking vào tiêu chí chấp nhận của ticket: "Khi người dùng bấm Xuất hàng loạt, event bulk_invoice_started bắn một lần với entry_point đúng." Ticket chưa qua dòng này thì chưa xong, giống như chưa qua kiểm thử chức năng.

Sau ra mắt, kiểm lại trong 48 giờ đầu: so số event với số thật ở cơ sở dữ liệu. Lệch dưới 5% với event phía client thường chấp nhận được; lệch lớn hơn cần tìm nguyên nhân trước khi dùng số để quyết định.

Dashboard cho readout ra mắt

Dashboard ra mắt không phải dashboard tổng của công ty. Nó trả lời đúng các câu hỏi readout, theo thứ tự, và nên dựng xong — với số liệu thử từ staging — trước ngày ra mắt.

KhốiHiển thịĐọc thế nào
Tiếp cậnSố người hoặc công ty thấy tính năng theo ngày, chia theo nấc rolloutThấp thì vấn đề là điểm chạm, chưa phải tính năng
PhễuTừng bước từ thấy, thử, hoàn thành; tỉ lệ chuyển giữa các bướcBước có tỉ lệ rơi lớn nhất là nơi điều tra đầu tiên
Quay lạiTỉ lệ dùng lại sau 7 và 28 ngày, theo nhóm tuần bắt đầuĐây là tín hiệu giá trị; số tuần đầu luôn đẹp vì tò mò
Chỉ số bảo vệCác chỉ số không được xấu đi: thanh toán, lỗi, ticketSo nhóm bật với nhóm chưa bật, không so trước với sau
Chất lượng dữ liệuSố event mỗi ngày; tỉ lệ property rỗngMột ngày bỗng về 0 nghĩa là tracking hỏng, không phải người dùng biến mất

Khối cuối cùng hiếm ai làm và cứu được rất nhiều readout. Một biểu đồ nhỏ đếm số event mỗi ngày sẽ cho bạn biết ngay khi một bản cập nhật ứng dụng làm hỏng tracking — trước khi bạn trình bày một con số sai cho ban lãnh đạo.

Lỗi thường gặp

LỗiVì sao xảy raLàm thay bằng
Track mọi thứSợ thiếu; nghĩ dữ liệu càng nhiều càng tốtMỗi event phải phục vụ một câu hỏi; ghi rõ danh sách không track
Tên event không nhất quánMỗi đội, mỗi engineer đặt một kiểuMột quy ước chung; tracking plan được review trước khi cài
Không có chủTracking là việc "của data" hoặc "của dev"PM sở hữu plan; mỗi event có chủ và trạng thái
Tracking là ticket riêng làm sauCoi đo lường là phụTracking nằm trong tiêu chí chấp nhận của ticket tính năng
Event tiền bắn từ clientDễ cài hơnĐơn hàng, thanh toán, trạng thái: bắn từ server
B2B mà không có account_idSao chép mẫu tracking của B2CMọi event có user_id và account_id
Phát hiện tracking hỏng ở buổi readoutKhông có QA và không theo dõi số event mỗi ngàyQA trên staging; khối chất lượng dữ liệu trên dashboard
Đổi tên event giữa chừngMuốn tên "đẹp hơn"Giữ tên cũ; nếu buộc phải đổi, ghi ngày đổi và nối dữ liệu

Luyện kỹ năng này trong tuần này

  • Chọn tính năng sắp ra mắt gần nhất và viết 4–5 câu hỏi readout. Đi ngược xuống chỉ số và event theo bảng ở trên. Bạn vừa có bản nháp tracking plan.
  • Mở công cụ phân tích của công ty, liệt kê 20 event được bắn nhiều nhất. Có bao nhiêu kiểu đặt tên khác nhau? Có event nào không ai biết dùng để làm gì?
  • So số đơn hoặc số đăng ký của hôm qua giữa công cụ phân tích và cơ sở dữ liệu. Lệch bao nhiêu? Bạn có biết vì sao không?
  • Thêm một dòng tracking vào tiêu chí chấp nhận của ticket bạn viết tuần này, và nhờ QA kiểm dòng đó như mọi dòng khác.
  • Dựng một biểu đồ "số event mỗi ngày" cho ba event quan trọng nhất của sản phẩm. Lần tới tracking hỏng, bạn sẽ là người đầu tiên biết.

Khóa học liên quan (2)

Sử dụng trong vai trò

Thảo luận & tài liệu thêm 0

Chia sẻ kinh nghiệm, đặt câu hỏi, hoặc đính kèm tài liệu/YouTube giúp người khác học kỹ năng này.

Hãy là người đầu tiên chia sẻ kinh nghiệm cho kỹ năng này.

Kiểm tra kỹ năng này

Bài kiểm tra của các khóa dạy kỹ năng này
1 Quiz

Chương 3: Spec chuyên sâu: Edge case, a11y, i18n & AI Spec

Bài kiểm tra của một khóa dạy kỹ năng này.

1 người đã làm
Làm bài này
2 Quiz

Chương 1: Nền tảng viết PRD & tài liệu sản phẩm

Bài kiểm tra của một khóa dạy kỹ năng này.

1 người đã làm
Làm bài này
3 Quiz

Chương 2: Cấu trúc PRD & Spec: từ Context đến Wireframe

Bài kiểm tra của một khóa dạy kỹ năng này.

1 người đã làm
Làm bài này
4 Quiz

Kiểm tra bài 10: Khi ra mắt không như kỳ vọng — triage, quyết định với cược lớn

Bài kiểm tra của một khóa dạy kỹ năng này.

chưa ai làm
Làm bài này

Học kỹ năng này ở đâu?

Có 2 khóa dạy đúng phần này, miễn phí và bằng tiếng Việt.

Bắt đầu học