Đo lường quảng cáo app iOS sau ATT: SKAdNetwork, AdAttributionKit và cách đọc số lệch với MMP
Cập nhật tháng 10/2026.
AdAttributionKit là cách đo quảng cáo app iOS mà Apple đang khuyến nghị, còn SKAdNetwork vẫn chạy song song (Apple). Cùng với ATT, hai khung này là lý do số iOS không bao giờ khớp.
Ví dụ giả định: tuần này Meta báo 1,000 lượt cài, MMP ghi 700 lượt cho Meta, App Store Connect ghi 900 lượt tải. Số nào đúng? Cả ba, theo cách đếm của mình. Meta tự nhận mọi lượt cài từng chạm quảng cáo Meta, cộng số ước tính, nên có thể cao hơn tổng lượt tải. MMP chỉ trao mỗi lượt cài cho một kênh. App Store Connect là tổng lượt tải, kể cả người tự tìm app.
Câu nên hỏi là số nào dùng cho việc gì. Bài này viết cho người làm user acquisition không rành code. Phần kỹ thuật, tôi gom thành một bảng để bạn gửi đội dev.
ATT, SKAdNetwork và AdAttributionKit hiểu theo cách đời thường
ATT: app phải xin phép trước khi theo dõi
Từ iOS 14.5, app phải hỏi người dùng qua App Tracking Transparency (ATT) trước khi theo dõi họ hoặc đọc IDFA (mã định danh quảng cáo của máy). Người dùng từ chối thì IDFA toàn số 0 (Apple). Giống cửa hàng xin số điện thoại khách: khách không cho thì lần sau quay lại, cửa hàng không biết là ai.
Hệ quả: mobile attribution (ghi nhận lượt cài cho đúng quảng cáo) theo từng máy chỉ còn với nhóm đồng ý. Email, số điện thoại đã băm hay fingerprint cũng không được dùng để theo dõi người chưa đồng ý (Apple). Gửi danh sách người dùng cho mạng quảng cáo để nhắm lại cũng tính là theo dõi. Cách xin phép cho đúng nằm ở bài quy định ATT của Apple.
SKAdNetwork: đếm phiếu mà không biết ai bầu
SKAdNetwork ghi nhận lượt cài từ quảng cáo mà không cần IDFA. Giống bỏ phiếu kín: bạn biết mỗi ứng viên được bao nhiêu phiếu, không biết ai bầu ai. Apple đếm trên iPhone, rồi gửi postback (báo cáo lượt cài) cho mạng quảng cáo, chỉ nói lượt cài đến từ chiến dịch nào. Bản hiện hành là SKAdNetwork 4, chạy từ iOS 16.1 (Apple).
AdAttributionKit: bản mới của cùng cách đếm
AdAttributionKit (AAK) có từ iOS 17.4, đầu năm 2024, đo cả App Store lẫn chợ ứng dụng thay thế. Trợ giúp Apple Ads giờ ghi “SKAdNetwork is now called AdAttributionKit” (Apple Ads). Điểm mới: AAK đo được re-engagement (người đã có app quay lại nhờ quảng cáo), chỉ tính click (Apple).
Hai khung không đếm trùng: mỗi lượt cài chỉ một quảng cáo thắng, click thắng lượt xem (Apple). Cả hai đo được người đã từ chối ATT (Apple), đổi lại số về chậm và ít chi tiết.
MMP: người gom sổ sách
MMP (mobile measurement partner) như AppsFlyer, Adjust, Branch, Singular giống kế toán gom hóa đơn mọi chi nhánh về một sổ. MMP ghi nhận người đồng ý ATT và nguồn như link, QR, deep linking. MMP gom postback của mọi mạng, bỏ lượt đếm trùng và lọc install fraud (gian lận lượt cài) trước khi bạn trả tiền cho mạng.
Apple gửi tối đa 3 lần báo cáo về một lượt cài
Với mỗi lượt cài từ quảng cáo, Apple gửi tối đa 3 postback trong khoảng 35 ngày từ lần mở app đầu. Càng về sau càng ít chi tiết (Apple; Apple):
| Báo cáo | Ghi việc người dùng làm trong | Gửi đi sau đó | Chi tiết |
|---|---|---|---|
| Lần 1 | Ngày 0 đến 2 | 24 đến 48 giờ | Số từ 0 đến 63, hoặc low, medium, high |
| Lần 2 | Ngày 3 đến 7 | 24 đến 144 giờ | Chỉ low, medium, high |
| Lần 3 | Ngày 8 đến 35 | 24 đến 144 giờ | Chỉ low, medium, high |
Giống bảng điểm: lần đầu có điểm từng môn, hai lần sau chỉ còn xếp loại. Số 0 đến 63 gọi là fine value (mức chi tiết), ba mức low, medium, high là coarse value (mức thô). App tự quy định nghĩa từng mức.
Chi tiết còn phụ thuộc quy mô, Apple gọi là crowd anonymity (ẩn danh theo đám đông): chiến dịch ít lượt cài thì báo cáo bị cắt bớt. Mã chiến dịch trong postback gọi là source identifier (Apple):
| Bậc | Báo cáo lần 1 có gì |
|---|---|
| Tier 3 (nhiều lượt cài) | Mã 2 đến 4 chữ số, fine value, app hiển thị quảng cáo, quốc gia |
| Tier 2 | Mã 2 đến 4 chữ số, fine value |
| Tier 1 | Mã 2 chữ số, coarse value |
| Tier 0 (quá ít) | Chỉ mã 2 chữ số, không có lần 2 và 3 |
Hệ quả khi đọc báo cáo:
- Mấy ngày gần nhất luôn thiếu số: postback lần 1 có thể đến muộn khoảng 4 ngày.
- Đừng chấm điểm chiến dịch mới sau 1 đến 2 ngày. Tôi xem tối thiểu 7 ngày, kết thúc 3 đến 5 ngày trước hôm nay.
- Báo cáo lần 3 về sau ngày 35. A/B test chậm hơn, nên chạy ít biến thể.
- Chia nhiều campaign nhỏ thì mỗi campaign rơi xuống Tier 0 hoặc 1, mất fine value. Google Ads cũng khuyên giới hạn số campaign iOS (Google Ads Help).
Vì sao số Meta, Google lệch với MMP
Đừng đặt mục tiêu khớp 100%. Mỗi bên ghi nhận theo luật riêng (AppsFlyer, 11/2025; AppsFlyer, 5/2025):
| Nguyên nhân | Chuyện gì xảy ra | Việc nên làm |
|---|---|---|
| Attribution window (khoảng thời gian ghi nhận) | Meta mặc định 7 ngày sau click, 1 ngày sau lượt xem; MMP chỉnh được 1 đến 30 ngày | Đặt MMP giống Meta |
| Self-attribution (nền tảng tự nhận) | Meta nhận lượt cài bất kể nguồn khác; MMP trao cho lần bấm cuối giữa các nguồn | Tổng các mạng lớn hơn MMP là bình thường |
| Số ước tính | Meta dùng mô hình xác suất (AEM) trên iOS; Google dùng conversion modeling (mô hình hóa chuyển đổi) | Ghi rõ cột nào là số ước tính |
| Múi giờ, ngày cài | Meta theo giờ PST, SKAN theo UTC; ngày cài SKAN suy từ lúc postback đến; số Google Ads trong SKAN có thể trễ tới 13 ngày | Thống nhất múi giờ, so khoảng ngày đã đủ số |
| Thời gian tính sự kiện | Meta tính trong 7 ngày sau click, AppsFlyer tới 180 ngày | So doanh thu cùng mốc ngày |
| Sự kiện gửi trùng | Gửi cả từ Facebook SDK và MMP, Meta không khử trùng lặp | Mỗi sự kiện một nguồn |
Meta còn tự tối ưu phân phối theo tín hiệu nó nhận, nên số lệch phụ thuộc cả cách bạn dựng tài khoản theo Meta Andromeda.
4 bước đọc báo cáo khi số không khớp
- Đưa về cùng khung. Cùng khoảng ngày, múi giờ, attribution window, bỏ 3 đến 5 ngày gần nhất.
- Tính tỷ lệ. Với ví dụ đầu bài: 700 / 1,000 = 0.70. Ghi mỗi tuần, cho từng kênh.
- Xem tỷ lệ có ổn định. Ba tuần liền quanh 0.70 là chênh do cách đếm. Tuần thứ năm tụt còn 0.40 khi ngân sách không đổi thì có lỗi: SDK mới, schema đổi hoặc sự kiện gửi trùng. Gửi đội dev kiểm tra.
- Xem chất lượng postback. Nhờ MMP xuất tỷ lệ postback có fine value, chỉ coarse và trống, theo nguồn. Tỷ lệ trống tăng thường do campaign quá nhỏ. Mã chỉ còn 2 chữ số thì hỏi mạng quảng cáo đó là campaign hay creative.
Khi phần lượt cài đo qua postback lớn dần, cái giảm trước là khả năng đo, chưa chắc là hiệu suất. Lúc số theo kênh còn mờ, tôi lấy blended CPA và ROAS (tính chung toàn iOS) làm mốc.
Không nên:
- Cộng lượt cài Meta và Google rồi so với MMP. Tổng luôn dư.
- Tắt một kênh chỉ vì số MMP thấp hơn số nền tảng.
Nên dùng số nào cho quyết định nào
| Quyết định | Số nên dùng | Lý do |
|---|---|---|
| Tối ưu hằng ngày: tắt creative, chỉnh ngân sách | Số trong Meta Ads, Google Ads | Thuật toán học theo số này. Xem xu hướng, không lấy đi báo cáo |
| Báo cáo tháng | Số MMP, kèm blended CPA và ROAS iOS | Mỗi lượt cài chỉ thuộc một kênh |
| Tăng, giảm, chia lại ngân sách giữa kênh | Kết quả incrementality test | Cho biết kênh nào tạo thêm lượt cài thật |
| Chất lượng người dùng sau một tháng | Tỷ lệ high trong postback lần 3 | Tín hiệu gần LTV nhất mà SKAN cho bạn |
Incrementality test bằng ngôn ngữ đơn giản
Incrementality test (thử nghiệm tăng trưởng thực) trả lời câu hỏi: tắt quảng cáo thì mất bao nhiêu lượt cài? Giống chủ quán phát tờ rơi ở quận 1, không phát ở quận 3, rồi so lượng khách. Phần chênh là phần tờ rơi tạo ra.
Geo test (thử nghiệm theo vùng) chỉ so số tổng nên không cần IDFA:
- Chia tỉnh, thành thành hai nhóm có lượt cài và doanh thu trước đó tương đồng. Nhóm đối chứng tắt kênh cần đo.
- Đo tổng lượt cài iOS, kể cả organic install (lượt cài tự nhiên), và doanh thu theo vùng từ MMP hoặc dữ liệu nội bộ, vì postback không có cấp tỉnh.
- Giữ creative, giá, khuyến mãi giống nhau.
- So chênh lệch lúc thử với trước khi thử, quy ra chi phí mỗi lượt cài tăng thêm.
Ví dụ giả định: Meta báo 1,000 lượt cài, thử nghiệm thấy 400 lượt tăng thêm. Hệ số 400 / 1,000 = 0.4, tôi nhân vào số Meta khi chia ngân sách. Google Ads có Conversion Lift based on geography cho cả App campaign, phải qua đại diện Google và chiến dịch nhắm một quốc gia (Google Ads Help).
Bảng conversion value mẫu cho app thương mại điện tử
Conversion value (giá trị chuyển đổi) là con số app gắn vào lượt cài để báo người dùng đã làm gì. Bảng quy ước nghĩa từng số là schema. Bạn nên tự quyết bảng này, vì thuật toán quảng cáo học theo hành vi bạn chọn.
Ví dụ giả định, app mỹ phẩm, giá trị đơn trung bình khoảng 350,000 đồng:
| Việc người dùng làm, ngày 0 đến 2 | Fine value (lần 1) | Coarse value |
|---|---|---|
| Mở app lần đầu | 0 | low |
| Đăng ký tài khoản | 1 | low |
| Thêm vào giỏ | 2 | medium |
| Bắt đầu thanh toán | 3 | medium |
| Đơn đầu tiên, 10 dải doanh thu, mỗi dải 100,000 đồng | 10 (dưới 100,000) đến 19 (từ 900,000) | medium dưới 300,000, high từ 300,000 |
| Từ 2 đơn, chia dải theo doanh thu cộng dồn | 30 đến 39 | high |
Báo cáo lần 2 và 3 chỉ có coarse value: low là quay lại app, medium là 1 đơn, high là từ 2 đơn hoặc cộng dồn từ 700,000 đồng. Tỷ lệ high theo nguồn giúp ước ROAS ngày 35. Kênh cho loại app này: xem bài user acquisition cho app thương mại điện tử.
Không nên:
- Dùng hết 64 số cho 64 sự kiện. Chỉ chiến dịch từ Tier 2 mới nhận fine value.
- Đổi schema giữa chiến dịch.
- Đặt “mở app” là high. Thuật toán sẽ đi tìm người cài rồi bỏ.
- Chọn sự kiện khác bộ app marketing KPIs đội đang báo cáo.
Việc giao cho đội dev và MMP
Bạn chỉ cần gửi bảng này, rồi hỏi lại từng dòng.
| Việc | Chi tiết cho dev | Vì sao |
|---|---|---|
| 1. Nâng SDK MMP | Hỗ trợ SKAdNetwork 4 và AAK. Bỏ registerAppForAdNetworkAttribution() (ngừng từ iOS 15.4), gọi updatePostbackConversionValue và updateConversionValue ở lần mở app đầu | Có gọi thì giai đoạn ghi nhận mới bắt đầu |
| 2. Nhận postback copy (bản sao postback) | Khai báo NSAdvertisingAttributionReportEndpoint (SKAN) và AttributionCopyEndpoint (AAK) theo tên miền MMP; bật “Opt in for Reengagement Postback Copies” | Để đối chiếu, vì số mạng báo lại có thể bị sửa (AppsFlyer) |
| 3. Nhập schema | Bảng trên, một bản cho mọi mạng, giá trị tăng dần theo mức quan trọng. Chọn lock (khóa sớm, dữ liệu về nhanh) hay chờ (đo đủ hơn). Xem lại sau 2 tuần | Mọi bên đọc cùng nghĩa |
| 4. Thử trước khi chạy | Development postbacks trong phần Developer của iPhone, ở Tier 0 và 3 | Biết server đọc đúng |
| 5. Sự kiện server-to-server | Ghép bằng IDFV, ID của MMP hoặc user ID, không dùng IDFA | IDFA bằng 0 khi người dùng từ chối |
| 6. Cài đặt MMP | Attribution window, múi giờ khớp từng nền tảng; mỗi sự kiện về Meta một nguồn; bật chống gian lận | Bớt nguyên nhân lệch số |
| 7. Re-engagement (AAK) | Từ iOS 18, quảng cáo mở universal link của app (tham số AdAttributionKitReengagementOpen). Lần cập nhật conversion value đầu phải gửi trong 2 ngày (lượt cài có 60 ngày) | Apple giới hạn số lượt theo tháng mỗi app, theo năm mỗi máy |
Khác biệt dev cần nhớ: attribution window của SKAdNetwork cố định (click 30 ngày, view 24 giờ), của AAK chỉnh được (click 1 đến 30 ngày, view 1 đến 7 ngày). Nền tảng hỗ trợ chưa đều. Google Ads (tra 10/2026) chưa hỗ trợ AAK. Apple Ads đăng ký SKAdNetwork từ 10/4/2025 (Apple Ads), và từ iOS 26.2 gửi postback bằng AAK (AppsFlyer, 5/2026). Vì vậy cần postback copy của cả hai khung.
Checklist đo lường quảng cáo app iOS trước khi tăng ngân sách UA
Còn mục nào “không” thì chưa nên tăng.
- Đội dev và MMP xác nhận xong 7 việc ở bảng trên.
- Báo cáo postback copy trên MMP đã có số.
- Schema có tài liệu, giống nhau trên MMP, Meta, Google.
- Phần lớn postback có fine value.
- Tỷ lệ nền tảng so với MMP ổn định ít nhất 3 tuần.
- Theo dõi tỷ lệ đồng ý ATT hằng tuần.
- Đã ghi mức organic install nền, để thấy quảng cáo có ăn vào lượt cài tự nhiên không.
Xong mới chọn kênh, ngân sách theo chiến lược app marketing từng giai đoạn. App game xem thêm user acquisition cho game mobile; app sắp ra mắt thì rà lại các bước khởi chạy ứng dụng trên App Store. Cần rà đo lường iOS hoặc lên kế hoạch UA, đội App User Acquisition của Adtek (có chứng chỉ Apple Ads) làm cùng bạn qua trang liên hệ Adtek.
Nguồn tham khảo
- Apple Developer: SKAdNetwork; SKAdNetwork 4 release notes; SKAN conversion windows; SKAdNetwork postbacks; registerAppForAdNetworkAttribution().
- Apple Developer: AdAttributionKit; AdAttributionKit Updates (tra 17/10/2026); conversion windows; postback parameters; AAK postbacks; developer settings; advertised app; interoperability.
- Apple: advertisingIdentifier; User Privacy and Data Use.
- Apple Ads: App ad attribution overview; Measuring ad performance.
- AppsFlyer: Meta ads discrepancies (11/2025); iOS metrics dashboard (5/2025); Apple Ads bulletin (5/2026).
- Google Ads Help: iOS App campaigns; Conversion Lift.
Bạn muốn áp dụng bài này cho doanh nghiệp mình?
Gửi câu hỏi hoặc tình huống cụ thể của bạn. Đội ngũ Adtek đọc từng câu hỏi và liên hệ lại để trao đổi.
Hoặc chat với Adtek qua Zalo