Hướng dẫn cho QA / Marketing — tổng hợp các event đo lường và ý nghĩa từng số. Không cần đọc code.
Hai mục tiêu đo lường: (1) Dn — tỉ lệ user chọn app làm launcher mặc định theo số ngày sau cài; (2) Ad-show (inter / reward / native / open) tách theo user đã chọn default vs chưa.
🏬 Event Theme Store (Coin · Premium · Icons · Widgets · Me — 42 event) nằm ở báo cáo riêng: Theme Store — 6 tab & Tracking Analytics →
Mỗi lần app gửi request 1 quảng cáo Native lên AdMob.
Khi AdMob trả về quảng cáo (có fill — callback onAdLoaded).
Khi native thật sự bind & hiển thị lên UI — đo ngay lúc gắn ad vào view, không còn đo ở onAdImpression của Google.
Khi user đặt app làm launcher mặc định. Đổi hành vi: nay bắn mỗi lần user trở thành default (nhiều lần/user, không còn 1 lần/máy) và bỏ param days_since_install.
ad_displayed + bộ event default-launcher quanh việc set / gỡ defaultMỗi lần 1 quảng cáo hiển thị. format = inter/reward/native/aoa; is_default = user có đang là default launcher không.
Conversion thật, 1 lần/máy (giữ nguyên).
Mỗi lần thành default. count_set = tổng số lần đã set (đếm dồn).
Lịch sử ngày: mỗi ngày D chỉ log 1 lần (set nhiều lần cùng ngày → 1 log).
User mở dialog/ấn set-default ở Settings rồi quay lại app: true = đã thành default, false = vẫn chưa. Mỗi cái 1 lần/máy.
Đánh dấu lần đầu tiên đổi chiều (thành default / mất default). Mỗi cái 1 lần/máy, không param.
Chỉ ghi khi trạng thái đổi thật (baseline 1 lần ở lần đầu, sau đó chỉ khi flip). Bỏ user property default_launcher_day — số ngày nay nằm ở param event.
■ Firebase · ■ AppsFlyer. "Bắn khi nào" = thời điểm chính xác event được gửi đi.
| Event | Sink | Params / thuộc tính | Bắn khi nào |
|---|---|---|---|
ad_displayed | Firebase | format, placement, is_default | Ngay khi ad hiện: toàn màn (inter/reward/open) lúc phủ màn; native lúc bind ad vào view (cùng chỗ với af_native_displayed, không phải GMA impression). Với native, placement = surface hiển thị: daily_open / spotlight / app_library / gallery_library / settings / weather / language1 / language2 / programmatic … |
af_native_request | AppsFlyer | — | Khi app gửi request native lên AdMob (mỗi lần load()) |
af_native_matched_request | AppsFlyer | — | Khi AdMob trả về quảng cáo (có fill — callback onAdLoaded) |
af_native_displayed | AppsFlyer | — | Khi native bind & hiển thị lên UI (tại lúc gắn ad vào view — không phải onAdImpression) |
af_default_launcher | AppsFlyer | source | Mỗi lần app trở thành default (nhiều lần/máy). Đã bỏ param days_since_install |
default_launcher_confirmed | Firebase | source, days_since_install | Đúng 1 lần/máy, khi xác nhận đã thành default (kiểm lúc quay lại app). Dùng cho tỉ lệ Dn |
set_default_launcher | Firebase | count_set | Mỗi lần thành default. count_set = tổng số lần user đã set (1, 2, 3…) |
default_launcher_set_day | Firebase | source, days_since_install | Lịch sử ngày: 1 lần/mỗi ngày D (set 2 lần cùng ngày → 1 log; set ở D1 và D3 → 2 log) |
set_launcher_true | Firebase | source | 1 lần/máy. User mở dialog/ấn set-default ở Settings → quay lại app đã thành default |
set_launcher_false | Firebase | source | 1 lần/máy. User mở dialog/ấn set-default ở Settings → quay lại app vẫn chưa default (huỷ/không chọn) |
launcher_change_to_default | Firebase | — | 1 lần/máy, lần đầu đổi từ chưa-default → default |
launcher_change_to_non_default | Firebase | — | 1 lần/máy, lần đầu đổi từ default → chưa-default (user gỡ / đổi launcher khác) |
User property is_default_launcher | Firebase | true / false | Ghi baseline 1 lần ở lần đầu mở, sau đó chỉ khi trạng thái đổi (không còn seed lúc app init / không ghi lặp mỗi lần mở). Gắn vào mọi event của user |
af_native_request (xin ad) → af_native_matched_request (AdMob có trả về / fill rate) → af_native_displayed (thật sự hiển thị lên UI). So 3 số này ra ngay fill rate (matched÷request) và display rate (displayed÷matched). Cả hai tín hiệu "displayed" — AppsFlyer af_native_displayed và Firebase ad_displayed (native) — đo tại lúc bind ad vào view (không dùng onAdImpression của Google nữa) → bám sát thời điểm user thật sự thấy ô quảng cáo. onAdImpression giờ chỉ còn đếm nội bộ để đối chiếu, không bắn event.
af_default_launcher (AF) + set_default_launcher {count_set} — mỗi lần; default_launcher_set_day — nếu ngày D chưa log; launcher_change_to_default + default_launcher_confirmed — lần đầu thôi.launcher_change_to_non_default — lần đầu thôi.set_launcher_true (đã default) hoặc set_launcher_false (chưa) — mỗi cái 1 lần/máy. Set default trực tiếp trong Settings hệ thống (không qua nút app) → không bắn true/false.default_launcher_confirmed. Đo số lần set → set_default_launcher.count_set. Đo lịch sử ngày set → default_launcher_set_day. Đo funnel dialog → kết quả → set_launcher_true vs set_launcher_false.
"Sau khi cài N ngày thì bao nhiêu % user đã chọn app làm launcher mặc định?"
"Quảng cáo inter / reward / native / open hiển thị cho nhóm đã chọn default vs chưa chọn khác nhau ra sao?"
is_default, days_since_install…) và user property KHÔNG tự xuất hiện trong Explorations/Reports. Phải đăng ký Custom Definitions trước. Data chỉ tính từ lúc đăng ký trở đi (không hồi tố) — nên làm sớm. Trước khi đăng ký vẫn xem được realtime ở DebugView (mục 5).
Vào Firebase Console → Analytics (hoặc Google Analytics / GA4) → Admin (⚙️) → Custom definitions → Create custom dimensions/metrics. Đăng ký các mục sau:
| Tên tham số | Loại đăng ký | Scope | Ghi chú |
|---|---|---|---|
is_default | Custom dimension | Event | Lọc/tách ad-show theo default. Giá trị "true"/"false" |
days_since_install | Custom dimension | Event | Để group theo D (0,1,7…). Dùng cho default_launcher_confirmed + default_launcher_set_day |
count_set | Custom dimension | Event | Số lần user set default (event set_default_launcher). Group để xem phân bố 1/2/3… lần |
format | Custom dimension | Event | inter / reward / native / aoa — nếu chưa đăng ký từ trước |
placement | Custom dimension | Event | vd aoa_splash vs aoa_resume; native tách theo surface: daily_open / spotlight / app_library / gallery_library / settings / weather / language1|2 — nếu chưa có |
source | Custom dimension | Event | prompt / settings — nếu chưa có |
is_default_launcher | Custom dimension | User | Segment TOÀN BỘ event của user theo default hay không |
format/placement/source đã đăng ký từ đợt trước thì bỏ qua, không tạo trùng.adb shell setprop debug.firebase.analytics.app com.hp.theme.homescreen.smartad_displayed với format=native, is_default=false. Đặt default xong quay lại app → thấy default_launcher_confirmed kèm days_since_install; user property đổi sang is_default_launcher=true.adb shell setprop debug.firebase.analytics.app .none.days_since_install. Values = Total users. Thêm Filter: Event name = default_launcher_confirmed. → ra số user chọn default tại mỗi D (D0, D1, D7…).first_open). Tỉ lệ Dn = convert tại Dn ÷ tổng cohort. Muốn % theo cohort ngày cài chuẩn hơn → dùng Cohort Exploration trong GA4 (Analytics → Explore → Cohort).default_launcher_set_day (1 log/ngày D). Muốn nhóm convert-sớm vs convert-muộn → group default_launcher_confirmed theo days_since_install (user property default_launcher_day đã bỏ).is_default (thêm cả format để tách inter/reward/native/aoa). Values = Event count. Filter: Event name = ad_displayed. → so số lần ad hiện giữa 2 nhóm.is_default_launcher = true / false → áp lên bất kỳ report (retention, doanh thu, ad_revenue…), không riêng ad_displayed. Đây là lợi ích của việc seed user property từ lúc mở app.set_launcher_true và set_launcher_false. Kịch bản: user set thành default (set_launcher_true) → sau đó gỡ/đổi launcher khác (launcher_change_to_non_default) → lần sau mở dialog lại nhưng từ chối (set_launcher_false). Nếu đếm thô, user này bị tính vào cả "đồng ý" lẫn "từ chối".set_launcher_true (mỗi user tối đa 1 → đếm Total users = đếm event). Đây là số user ít nhất 1 lần đồng ý đặt default qua nút app.set_launcher_false − launcher_change_to_non_default. Trừ đi nhóm "từng là default rồi gỡ" (đã dính true trước đó) → còn lại user thật sự từ chối ngay từ đầu, chưa từng thành default qua nút.launcher_change_to_default = số user từng thành default ít nhất 1 lần (mỗi user 1 event). launcher_change_to_non_default = số user từng mất default ít nhất 1 lần (dùng làm số trừ ở trên).Total users, mỗi event 1 lần đếm (filter Event name). Lấy 2–3 số rồi trừ tay (mỗi event đã dedupe 1 lần/user nên đếm Total users là chuẩn).set_launcher_true ·
Số user từ chối thật (false) = set_launcher_false − launcher_change_to_non_default.
Đếm theo user (không phải event) vì cả 4 event đều tối đa 1 lần/máy.
af_native_request, af_native_matched_request, af_native_displayed và af_default_launcher nằm cùng danh sách với af_inters_displayed, af_rewarded_displayed sẵn có.af_native_matched_request ÷ af_native_request; display rate = af_native_displayed ÷ af_native_matched_request. Phát hiện no-fill (request cao, matched thấp) hay load được mà không hiển thị (matched cao, displayed thấp).af_default_launcher) và xem native nhiều (af_native_displayed).af_default_launcher có source + days_since_install. Bóc chi tiết dùng Raw Data / Data Locker export (dashboard tổng hợp không tách sâu theo param).af_native_request (lúc xin ad) → af_native_matched_request (khi có fill) → af_native_displayed (khi ô ad hiện lên UI). Firebase ad_displayed {format:native, is_default:...} bắn cùng lúc với af_native_displayed (đều tại bind), placement đổi theo màn (daily_open / spotlight / app_library / gallery_library…). Ô còn shimmer / no-fill → dừng ở request (hoặc matched), chưa có displayed (đúng).ad_displayed đúng format (inter/reward/aoa).placement=aoa_splash, quay lại app ra placement=aoa_resume.ad_displayed có is_default=false.set_launcher_true {source}, default_launcher_confirmed {days_since_install}, launcher_change_to_default, set_default_launcher {count_set:1}, default_launcher_set_day {days_since_install}, và AppsFlyer af_default_launcher {source}.set_launcher_false {source} (1 lần/máy). Thử huỷ lại lần nữa → không bắn lại.set_default_launcher lần này count_set:2. default_launcher_confirmed, set_launcher_true, launcher_change_to_default KHÔNG bắn lại (chỉ 1 lần/máy).default_launcher_set_day. Set ở ngày khác → thêm 1 log mới (đúng số days_since_install).af_default_launcher bắn mỗi lần thành default (và không còn kèm days_since_install).launcher_change_to_non_default (1 lần/máy), user property is_default_launcher=false.ad_displayed chuyển sang is_default=true; user property is_default_launcher=true.is_default_launcher có giá trị baseline (không "(not set)" sau lần onResume đầu). Mở app lại nhiều lần khi trạng thái không đổi → property không ghi lặp (khác bản cũ seed mỗi lần init).
Cập nhật 14/07/2026. Package: com.hp.theme.homescreen.smart. Report Firebase chuẩn trễ 24–48h; realtime dùng DebugView/Realtime. Custom Definitions chỉ tính data từ lúc đăng ký (không hồi tố) — đăng ký càng sớm càng tốt. Bản test luôn dùng quảng cáo test của Google.