MON - FRI : 09:00 AM-18:00 PM
VIEVI

Đo lường quảng cáo app iOS sau ATT: SKAdNetwork, AdAttributionKit và cách đọc số lệch với MMP

Tháng 10 28, 2026
Tin Le
Cỡ chữ

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

  1. Đư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.
  2. 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.
  3. 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.
  4. 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:

  1. 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.
  2. Đ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.
  3. Giữ creative, giá, khuyến mãi giống nhau.
  4. 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.

  1. Đội dev và MMP xác nhận xong 7 việc ở bảng trên.
  2. Báo cáo postback copy trên MMP đã có số.
  3. Schema có tài liệu, giống nhau trên MMP, Meta, Google.
  4. Phần lớn postback có fine value.
  5. Tỷ lệ nền tảng so với MMP ổn định ít nhất 3 tuần.
  6. Theo dõi tỷ lệ đồng ý ATT hằng tuần.
  7. Đã 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

Hỏi chuyên gia Adtek

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

    Yêu cầu một cuộc gọi lại
    Hãy để lại thông tin bên dưới, đội ngũ Adtek sẽ gọi lại để trao đổi về mục tiêu tăng trưởng của bạn.

    Tin mới nhất