Mục lục trang
1 Funnel trả lời câu gì
Ba câu hỏi, tự mở Firebase là ra.
Tỉ lệ vào được app
Trong 100 người mở app, bao nhiêu người tới được màn hình chính.
Drop ở step nào
Step nào tụt số nhiều nhất so với step ngay trước — đó là chỗ sửa đầu tiên.
Ads có làm mất người dùng không
Người bấm ads có quay lại app không, quay lại rồi có đi tiếp không.
on… ↔ rn…) nên số liệu không lẫn.
ob01…ob17 → on01…on09 · rt01…rt05 →
rn01…rn04.
Rút step vì onboarding bỏ 5 vị trí đo (màn Sub, inter sau Sub, native ở Splash, ads thứ hai ở Language), và 7 event cũ chỉ là bản sao thời điểm của event ngay trước — "màn A xong" với "màn B hiện" là cùng một giây. Quy tắc mới: một event cho một ranh giới màn.
Bộ cũ tụt về 0 ngay ngày phát hành — đổi tên có chủ ý, không phải mất tracking. Bảng dò tên cũ ↔ mới ở mục 3. Dashboard / cảnh báo treo vào tên cũ phải chuyển trước ngày phát hành.
rn01_app_open — app biết trước lượt đó
cố ý bỏ ads: vừa đặt iOS Launcher làm màn hình chính mặc định · bấm phím Home khi
đã là mặc định · vừa đóng một ứng dụng trong app (Clock, Gallery…). Đếm vào chỉ phồng mẫu
số bằng các lượt không bao giờ có ads.
Quy ước tên — nhìn tên là biết step thứ mấy, flow nào
| Phần | Nghĩa | Ví dụ |
|---|---|---|
on / rn | Lần cài xong mở đầu tiên / các lần mở sau | on04_intro_p2 · rn04_home |
| Số 2 chữ số | Thứ tự step, luôn tăng theo thứ tự bắn thật — Firebase xếp alphabet ra đúng thứ tự funnel. Mỗi số = một ranh giới màn | 01 → 09 |
_end | Step của funnel ở màn có ads — bao nhiêu người rời được màn đó. Luôn bắn, kể cả lượt không có ads | on03_splash_end |
_done | Step của funnel ở màn không có ads — rời màn đó | on06_lang_done |
_ad_show | Nhánh 1 — ads hiện ra trước mắt người dùng | on03_splash_ad_show |
_ad_not_show | Nhánh 2 — ads không hiện, kèm reason | on03_splash_ad_not_show |
_ad_click / _ad_back | Bấm ads (rời app) / quay trở lại app sau khi bấm | on05_intro_ad_click |
_end02 gdpr_done
│
┌────┴────┐ màn Splash — vị trí ads full-screen
│ │
_ad_show _ad_not_show (đúng 1 trong 2 — reason cho biết vì sao không hiện)
│ │
└────┬────┘
on03_splash_end ← bao nhiêu người RỜI ĐƯỢC màn Splash = step 03
│
04 Intro (p2…p5) → 05 on05_intro_end (native đáy Intro, cũng 2 nhánh) → …
_end gánh hai vai: mốc "rời màn" của funnel và mốc đóng vị trí ads của màn đó.
Step ads phải dùng
_end, không dùng _ad_show —
_ad_show chỉ bắn khi ads hiện được thật, nên premium / Remote Config tắt / consent
không cho / no-fill / timeout đều rỗng ở step đó và closed funnel xoá luôn họ ở mọi step sau.
Bất biến:
_ad_show + _ad_not_show = _end ·
show rate = _ad_show ÷ _end.
reason) —
bảng param mục 4.
onboarding_complete vẫn bắn cùng lúc với on09_home nhưng không có
param nên không dùng dựng funnel.
2 Flow
Ô màu là chỗ có ads chen vào. Tới mỗi vị trí ads luồng tách hai nhánh — phải là thấy ads, trái là không thấy — rồi nhập lại đi tiếp. Điền số ở mục 5 thì sơ đồ hiện luôn số users từng nhánh; bấm Gọn để chỉ xem thứ tự step.
Lần mở đầu tiên — 6 màn hình, 9 step, đích on09_home
khối nền = một màn hình
màn hình / step chính
thấy native ads
thấy full-screen ads
không thấy ads = _ad_not_show (lý do đọc ở param reason)
line xanh = ads hiện được
line cam = ads không hiện
đích
_end, không nhánh nào bị cắt. Drop thật ở màn có ads = users(step trước) −
_end.
on09_homeon01_app_open — vào màn Splash.on02_gdpr_done — form consent của Google (UMP SDK) trả kết quả; ngoài vùng GDPR qua luôn trong tích tắc. Bỏ app lúc form đang hiện = on01 − on02.on03_splash_end — vị trí ads duy nhất của Splash đóng tại đây; hai nhánh on03_splash_ad_show / on03_splash_ad_not_show{reason} nhập lại vào chính event này. Kèm reason = normal/timeout + dur_ms. Remote Config đổi được AOA ↔ inter, param format cho biết loại thật.on04_intro_p2 … on04_intro_p5 — mỗi trang một event nên thấy được người bỏ ở trang thứ mấy. Trang 1 không có event riêng: thấy trang 1 = rời Splash = step 03, cùng một giây. Từ v1.0.15 vuốt / bấm được ngay từ giây đầu, không còn khoá 8 giây chờ ads.on05_intro_end — bấm nút ở trang cuối. Ô native ghim đáy màn (hiện suốt 5 trang) đóng tại đây: on05_intro_ad_show / on05_intro_ad_not_show{reason} nhập lại vào event này. Đi thẳng sang Language (v1.0.15 bỏ màn Sub và inter ở giữa).Lưu ý đọc số: nút Intro không còn bị khoá theo trạng thái ads, nên người bấm nhanh rời màn trước lúc native resolve → nhánh
_ad_not_show{no_ad} cao hơn bản cũ. Đó là số thật, không phải hồi quy.on06_lang_done — bấm Continue rời màn Language, kèm lang. Phụ: on06_lang_select bắn mọi lần user đổi ý (không phải step). Lần chọn đầu mở overlay "Applying language…" ~3 giây rồi bật nút Continue.Màn này không có step riêng cho lượt vào màn (trùng step 05), và
native_language_1 không có step — nó sống suốt màn nên không có mốc "rời vị trí"; impression đọc ở trang Events, đúng 1 impression mỗi lượt vào màn.on07_wall_done — kèm action = chọn hình nền hay bỏ qua. Không có ads.on08_hello_ready — nút "Let's Start" hiện ra, kèm ms = thời gian chờ nạp icon. Không có ads.on09_home — đích. Kèm tổng thời gian đi hết flow + số lần bấm ads trên đường đi.Các lần mở sau — 1 màn hình, 4 step, đích rn04_home
Flow này chạy mọi lượt chủ động mở app nên vị trí ads ở đây ăn số nhiều hơn hẳn onboarding — sửa được ở đây là lợi mọi ngày, không riêng ngày cài.
rn04_homern01_app_openrn02_gdpr_done — lượt mở app nào cũng chạy, không riêng lần đầu.rn03_splash_end — giống hệt step 03 của flow lần đầu, chỉ khác tên. rn03_splash_ad_show / rn03_splash_ad_not_show{reason} nhập lại vào đây.rn04_home — đích.Hai flow đặt cạnh nhau
Ba step đầu trùng hình dạng (mở app → consent → rời Splash kèm ads full-screen) nhưng tên event khác nhau nên số liệu không bao giờ trộn. Từ step 04 tách đôi.
có ở cả hai flow chỉ có ở lần đầu đích
app_open rồi chạy thẳng xuống
home mà không bao giờ có ads → phồng mẫu số mọi step. Giờ chúng im hẳn nên số
thấp hơn nhưng đúng hơn. Muốn so trước/sau thì so show rate
(_ad_show ÷ _end).
3 Bảng event đầy đủ
29 event của hai flow — 21 on… + 8 rn…. Dòng in
đậm STEP là step kéo vào funnel. Cột Event cũ (v1.0.14) là bảng dò — gõ tên cũ vào
ô tìm cũng ra đúng dòng; tên cũ không còn bắn nữa.
| Event | Event cũ (v1.0.14) | Nhóm | Bắn khi nào | params |
|---|---|---|---|---|
on01_app_open | ob01_app_open | Lần đầu | STEP 01 — mở app lần đầu sau khi cài. | Không có tham số |
on02_gdpr_done | ob02_gdpr_done | Lần đầu | STEP 02 — consent UMP trả kết quả (đồng ý / từ chối / lỗi). Event gdpr_start cũ đã bỏ: nó bắn ngay sau step 01 nên hai dòng số luôn bằng nhau. |
|
on03_splash_end | ob04_aoa_splash_end + ob05_splash_done | Ads lần đầu | STEP 03 — rời màn Splash. Vừa là mốc "bao nhiêu người đi qua được vị trí ads full-screen", vừa là mốc rời màn (bộ cũ tách thành 2 event, nay gộp 1). Luôn bắn 1 lần/lượt. |
|
on03_splash_ad_show | ob04_aoa_splash_show | Ads lần đầu | Nhánh 1 — ads full-screen ở màn Splash hiện ra. |
|
on03_splash_ad_not_show | ob04_aoa_splash_not_show | Ads lần đầu | Nhánh 2 — ads full-screen không hiện được. |
|
on03_splash_ad_click | ob04_aoa_splash_click | Ads lần đầu | Bấm vào ads đó. |
|
on03_splash_ad_back | ob04_aoa_splash_back | Ads lần đầu | Quay lại app sau khi bấm ads đó. |
|
on04_intro_p2 | ob06_intro_p2 | Lần đầu | STEP 04 — xem trang Intro 2. Mỗi trang chỉ tính 1 lần. Trang 1 không có event — trùng step 03. | Không có tham số |
on04_intro_p3 | ob06_intro_p3 | Lần đầu | Xem trang Intro 3. | Không có tham số |
on04_intro_p4 | ob06_intro_p4 | Lần đầu | Xem trang Intro 4. | Không có tham số |
on04_intro_p5 | ob06_intro_p5 | Lần đầu | Xem trang Intro 5 (trang cuối). | Không có tham số |
on05_intro_end | ob07_nt_intro_end + ob08_intro_done | Ads lần đầu | STEP 05 — rời màn Intro (bấm nút ở trang cuối). Vừa là mốc đóng vị trí native đáy Intro, vừa là mốc rời màn. | Không có tham số |
on05_intro_ad_show | ob07_nt_intro_show | Ads lần đầu | Nhánh 1 — native ads đáy màn Intro hiện ra. |
|
on05_intro_ad_not_show | ob07_nt_intro_not_show | Ads lần đầu | Nhánh 2 — native đáy Intro không hiện được. |
|
on05_intro_ad_click | ob07_nt_intro_click | Ads lần đầu | Bấm vào ads đó. |
|
on05_intro_ad_back | ob07_nt_intro_back | Ads lần đầu | Quay lại app sau khi bấm. |
|
on06_lang_done | ob14_lang_done | Lần đầu | STEP 06 — bấm Continue để chốt ngôn ngữ và rời màn Language. |
|
on06_lang_select | ob11_lang_select | Lần đầu | Không phải step — chọn một ngôn ngữ, tính mọi lần: đổi qua đổi lại đếm hết, để biết người dùng phân vân bao nhiêu lần. |
|
on07_wall_done | ob15_wall_done | Lần đầu | STEP 07 — rời màn ChooseWallpaper. |
|
on08_hello_ready | ob16_hello_ready | Lần đầu | STEP 08 — nút "Let's Start" hiện ra, nạp icon xong. |
|
on09_home | ob17_home | Lần đầu | STEP 09 · ĐÍCH — vào được màn hình chính, hoàn tất onboarding. |
|
rn01_app_open | rt01_app_open | Lần sau | STEP 01 — mở app (đã hoàn tất onboarding từ trước). Chỉ bắn ở lượt người dùng chủ động mở app — lượt cố ý bỏ ads im hoàn toàn, xem mục 2. | Không có tham số |
rn02_gdpr_done | rt02_gdpr_done | Lần sau | STEP 02 — consent UMP trả kết quả. |
|
rn03_splash_end | rt04_aoa_splash_end | Ads lần sau | STEP 03 — rời màn Splash + mốc đóng vị trí ads full-screen. |
|
rn03_splash_ad_show | rt04_aoa_splash_show | Ads lần sau | Nhánh 1 — ads full-screen ở màn Splash hiện ra. |
|
rn03_splash_ad_not_show | rt04_aoa_splash_not_show | Ads lần sau | Nhánh 2 — ads full-screen không hiện được. |
|
rn03_splash_ad_click | rt04_aoa_splash_click | Ads lần sau | Bấm vào ads đó. |
|
rn03_splash_ad_back | rt04_aoa_splash_back | Ads lần sau | Quay lại app sau khi bấm. |
|
rn04_home | rt05_home | Lần sau | STEP 04 · ĐÍCH — dùng được màn hình chính. |
|
🗑️ Event cũ đứng ở 0 từ v1.0.15 — hai lý do khác nhau
A · Vị trí đo không còn tồn tại (mất hẳn, không có tên mới tương ứng):ob03_nt_splash_*·rt03_nt_splash_*— bỏ ô native ở màn Splash.ob09_sub_*·ob10_int_sub_*— bỏ màn Sub + inter sau nó khỏi onboarding (màn Sub vẫn còn, chỉ vào được từ Cài đặt).ob12_nt_lang1_*—native_language_1vẫn chạy nhưng không còn step funnel; impression đọc ở trang Events.ob13_nt_lang2_*— bỏ hẳn ads thứ hai ở màn Language.
| Event cũ đã bỏ | Giờ đọc ở |
|---|---|
ob02_gdpr_start · rt02_gdpr_start | on01 / rn01_app_open |
ob05_splash_done · ob06_intro_p1 | on03_splash_end |
ob08_intro_done · ob11_lang_show | on05_intro_end |
ob15_wall_show | on06_lang_done |
ob16_hello_show | on07_wall_done |
4 Dựng báo cáo trên Firebase
Làm một lần, lưu lại là lần sau mở ra xem luôn. Không cần quyền Editor.
com.hp.theme.homescreen.smarton01_app_open → on02_gdpr_done → on03_splash_end → on04_intro_p2 → on04_intro_p3 → on04_intro_p4 → on04_intro_p5 → on05_intro_end → on06_lang_done → on07_wall_done → on08_hello_ready → on09_home.Không cần chi tiết từng trang Intro thì bỏ p3/p4/p5, còn 9 step đúng bằng 9 số.
rn01_app_open → rn02_gdpr_done → rn03_splash_end → rn04_home.- Đưa
_ad_showvào step ads. Nó chỉ bắn khi ads hiện được → closed funnel cắt hết người không thấy ads. Luôn dùng_end; show rate tính riêng bằng_ad_show÷_end. - Đọc theo Event count. Máy thu hồi bộ nhớ rồi mở lại là có thêm một
on01_app_open→ tỉ lệ thấp giả tạo. Đọc theo Users (mặc định của Funnel exploration, đừng đổi). - Bật Make open funnel. Phải để TẮT — onboarding bắt buộc đi đúng thứ tự.
ob… / rt…) để tra dữ liệu v1.0.14 trở về
trước, tạo báo cáo mới bên cạnh. Dashboard / cảnh báo treo vào tên cũ phải chuyển trước ngày
phát hành.
Mốc duy nhất so trực tiếp được: tỉ lệ tới đích
ob17_home ÷ ob01_app_open (v1.0.14 = 64,0%) ↔
on09_home ÷ on01_app_open (mục tiêu v1.0.15 = 72–78%).
intro_isSkip bật → app vào thẳng màn Language, cả
on04_intro_p2…p5 và on05_intro_end đều không bắn. Đang bật cờ đó thì
bỏ hẳn step 04 + 05 khỏi funnel, nếu không mọi số từ step 04 trở đi đọc ra gần 0.
on0 rồi rn0 — toàn bộ step hiện ra đúng
thứ tự kèm số users. on09_home ÷ on01_app_open = tỉ lệ hoàn thành. Ở màn
có ads lấy dòng _end.
Báo cáo chính thức trễ 24–48 giờ. Bản
debug / releaseDev
gửi event dưới tên debug_<tên gốc> nên không lẫn số thật — xem nhanh bằng
adb logcat -s Analytics hoặc DebugView.
Bấm ads xong có dùng tiếp app không
Trả lời bằng 2 event _ad_click / _ad_back của mỗi vị trí
ads. Mất trắng = _ad_click − _ad_back.
_ad_click · Step 2 = on09_homeon05_intro_ad_click (hoặc on03_splash_ad_click · rn03_splash_ad_click).on09_home (flow lần sau thì rn04_home).away_ms nói lên điều gìBảng param — khai Custom definition loại nào
Cột Khai Firebase là loại chọn ở Analytics → Admin ⚙️ → Custom
definitions. Bắt buộc khai reason (Dimension) — đó là chỗ đọc lý do ads
không hiện. Custom definition chỉ tính dữ liệu từ lúc khai trở đi, không hồi tố.
| Param | Kiểu dữ liệu thật | Ý nghĩa | Khai Firebase | Event dùng param này |
|---|---|---|---|---|
reason | Text | Trên 3 event _ad_not_show: rc_off (Remote Config tắt ads ở vị trí đó) · no_fill (xin ads nhưng không có) · timeout (hết giờ chờ) · no_consent (consent không cho ads) · not_init (SDK ads chưa sẵn sàng) · premium (thuê bao / tắt toàn bộ ads) · loaded_no_show (có ads nhưng không kịp hiện) · capped (chặn vì giãn cách) · no_ad (đã xin nhưng cuối cùng không hiện được).Trên on03/rn03_splash_end nghĩa KHÁC: normal/timeout = rời màn Splash bình thường hay bị cắt vì quá giờ. Hai event khác nhau, đừng gộp lại khi đọc.Lượt mở app cố ý bỏ ads không xuất hiện ở đây — từ bản 08/2026 cả lượt đó im, không bắn _ad_not_show nào. | Dimension | on03/rn03_splash_ad_not_show, on05_intro_ad_not_show, on03/rn03_splash_end |
format | Text | Loại ads thật đang chạy: native / aoa / inter | Dimension | mọi *_ad_show / *_ad_click |
away_ms | Number | Số mili-giây user đi vắng trước khi quay lại (dưới 700ms không tính là rời app) | Metric | mọi *_ad_back |
ms | Number | Thời gian chờ một tác vụ cụ thể (consent UMP, hoặc nạp icon ở màn Hello) | Metric | on02/rn02_gdpr_done, on08_hello_ready |
can_ads | Text ("true"/"false") | Sau consent có được phép request ads không | Dimension | on02/rn02_gdpr_done |
error_code | Number (null nếu không lỗi) | Mã lỗi UMP nếu consent trả lỗi | Dimension | on02/rn02_gdpr_done |
dur_ms | Number | Tổng thời gian tính từ on01/rn01_app_open tới lúc bắn event này | Metric | on03/rn03_splash_end, on09_home, rn04_home |
lang | Text | Mã ngôn ngữ đang chọn/đã chốt | Dimension | on06_lang_select, on06_lang_done |
action | Text | set (có chọn hình nền) / skip (bỏ qua) | Dimension | on07_wall_done |
ad_clicks | Number | Số lần đã bấm ads trên toàn đường đi, tính tới lúc vào Home | Metric | on09_home, rn04_home |
had_ad | Text ("true"/"false") | Có thấy ads nào không trên toàn đường đi | Dimension | on09_home, rn04_home |
can_ads/had_ad là Boolean trong code nhưng SDK ghi lên Firebase
dưới dạng chữ "true"/"false" — khai Dimension (Text), KHÔNG khai
Metric, khai Metric sẽ không lọc được giá trị.
5 Bảng tính tỉ lệ
Điền số Users lấy từ Firebase vào từng step — bảng tự tính % giữ so với step
trước, % còn lại từ đầu, và bôi đỏ dòng drop nhiều nhất. Cột Event count không bắt buộc.
Tính trong trình duyệt, không gửi số đi đâu.
Ô phụ nhánh _ad_show ở dòng ads chỉ để sơ đồ vẽ hai nhánh —
không tham gia phép tính funnel.
Import từ Firebase — không cần gõ tay
- Dán bảng. Mở Explore → Funnel exploration hoặc Analytics → Events → bôi
đen cả bảng kèm dòng header →
Ctrl+C→ dán vào ô dưới → Import vào bảng. - Hoặc chọn file CSV. Firebase → Export ⬇️ → Download CSV → bấm 📄 Chọn file CSV, hoặc kéo thẳng file thả vào ô dán. Nhận cột theo tên header, thứ tự cột không quan trọng; dòng ghi chú Firebase chèn đầu file và dấu phẩy ngăn nghìn tự xử lý. File chỉ đọc trong trình duyệt, không tải lên đâu cả.
Lần mở đầu tiên (9 step)
| # | Event | Users | Event count(không bắt buộc) | % giữ so với step trước | % còn lại từ đầu | Ghi chú |
|---|---|---|---|---|---|---|
| 01 | on01_app_open | |||||
| 02 | on02_gdpr_done | |||||
| 03 | on03_splash_endnhánh _ad_show: | |||||
| 04 | on04_intro_p2 | |||||
| 05 | on05_intro_endnhánh _ad_show: | |||||
| 06 | on06_lang_done | |||||
| 07 | on07_wall_done | |||||
| 08 | on08_hello_ready | |||||
| 09 | on09_home |
Các lần mở sau (4 step)
| # | Event | Users | Event count(không bắt buộc) | % giữ so với step trước | % còn lại từ đầu | Ghi chú |
|---|---|---|---|---|---|---|
| 01 | rn01_app_open | |||||
| 02 | rn02_gdpr_done | |||||
| 03 | rn03_splash_endnhánh _ad_show: | |||||
| 04 | rn04_home |
Kết luận & biểu đồ — tự sinh từ số vừa điền
Vẽ lại ngay mỗi khi số ở hai bảng trên đổi. Khối đầu là kết luận: xếp hạng 3 chỗ nên sửa trước kèm ước lượng thêm được bao nhiêu users vào Home. Trỏ chuột vào cột/thanh để xem số chi tiết.
Ở dòng ads, % giữ là drop thật; muốn biết show rate thì lấy
_ad_show của vị trí đó (Analytics → Events) chia cho _end ở bảng này.
Mốc so với bản trước: v1.0.14 vào Home 64,0% (
ob17_home ÷ ob01_app_open) → mục tiêu v1.0.15 72–78%
(on09_home ÷ on01_app_open). Con số duy nhất so trực tiếp được giữa hai bộ.
- Khớp Users — Event count ≈ Users (chênh dưới 2%), số liệu sạch.
- Có lặp nhẹ / lặp nhiều — Event count cao hơn Users đáng kể: thường do
_ad_clickbấm nhiều lần,on06_lang_select(cố ý đếm mọi lần đổi ý), hoặcon01/rn01_app_openbắn lại vì app bị hệ thống thu hồi rồi mở lại. Không phải lỗi, nhưng đừng lấy Event count để tính funnel. - Bất thường — Event count < Users: về lý thuyết không xảy ra. Thấy dòng này thì kiểm lại số đã nhập trước khi báo cáo.
on09_home / rn04_home, v1.0.15 có một dialog
promo trên màn hình chính, chạy ở 2 mode: mode FULL (carousel 6 card — set_default ·
Theme · Cài đặt · Control center · Chat AI · mua gói) và mode SET_DEFAULT_ONLY
(chỉ card set_default). Nó không nằm trong funnel này — bộ event riêng
(promo_carousel_shown / _page_picked / _dismissed) và luật
hiện riêng, mô tả ở trang Thay đổi v1.0.15 — mục 5.