Tất cả bài viết
Cẩm nangĐọc trong 8 phút

ROAS của ứng dụng vẫn tính cả những giao dịch Apple và Google đã hoàn tiền, vì vậy hãy đặt giá thầu theo ROAS ròng

Khoản hoàn tiền hiếm khi được gửi ngược về nền tảng quảng cáo, nên ROAS vẫn ghi nhận những giao dịch mà Apple và Google đã trả lại tiền. Bài viết chỉ ra nơi Firebase, Google Ads và AdAttributionKit bỏ sót hoàn tiền, cái giá phải trả, và cách xây dựng ROAS ròng cho ứng dụng.

Bàn làm việc của một chuyên viên phân tích marketing với biểu đồ chiến dịch quảng cáo trên laptop, một chiếc iPhone, một điện thoại Android và các dòng in bị gạch bỏ, tượng trưng cho ROAS ròng sau khi ứng dụng bị hoàn tiền

Điểm chính

  • Sự kiện app_store_refund do Firebase tự động thu thập chỉ kích hoạt khi Google Play hoàn tiền một giao dịch mua trong ứng dụng. Google ghi rõ sự kiện này chỉ dành cho Android, nên hoàn tiền trên App Store không bao giờ làm giảm doanh thu in_app_purchase mà Firebase đã ghi nhận.
  • Google Ads tự động theo dõi giao dịch mua trong ứng dụng qua Google Play cho ứng dụng Android và báo cáo giá trị giao dịch làm giá trị chuyển đổi. Với gói đăng ký, nó chỉ ghi nhận lần mua đầu tiên và giá trị thanh toán đầu tiên.
  • Tính năng điều chỉnh chuyển đổi của Google Ads có thể sửa lại giá trị chuyển đổi hoặc rút nó về 0, và Google cho biết chuyển đổi trực tuyến chỉ điều chỉnh được nếu đã gửi kèm mã giao dịch.
  • AdAttributionKit của Apple có ba khung chuyển đổi sau lần mở ứng dụng đầu tiên, gồm ngày 0 đến 2, 3 đến 7 và 8 đến 35, và giá trị chuyển đổi chi tiết chỉ xuất hiện trong postback đầu tiên.
  • ROAS ròng là doanh thu được quy cho quảng cáo trừ đi tiền hoàn của chính các giao dịch đó, chia cho chi phí quảng cáo. Một chiến dịch có ROAS gộp cao hơn có thể xếp hạng thấp hơn về ROAS ròng nếu người mua của nó yêu cầu hoàn tiền nhiều hơn.
  • Tín hiệu hoàn tiền đến máy chủ của nhà phát triển, không đến mạng quảng cáo. Apple gửi App Store Server Notification loại REFUND, còn Google Play báo các giao dịch bị hủy qua thông báo nhà phát triển theo thời gian thực và Voided Purchases API, vốn chỉ tra lại 30 ngày gần nhất.
  • Chỉ có hai luồng hoàn tiền cho phép nhà phát triển gửi bằng chứng: CONSUMPTION_REQUEST của Apple, phải trả lời trong 12 giờ, và quy trình xem xét chargeback của Google Play qua orders.reviewrefund, phải trả lời trong 24 giờ.

Bảng điều khiển quảng cáo ghi nhận giao dịch mua trong ứng dụng ngay khi nó xảy ra, và phần lớn không bao giờ rút lại. Khi Apple hoặc Google sau đó hoàn tiền giao dịch ấy, tiền rời khỏi khoản thanh toán của bạn nhưng vẫn nằm trong doanh thu của chiến dịch, nên ROAS tiếp tục ghi công cho quảng cáo đã bán được nó. ROAS ròng, tức doanh thu sau hoàn tiền chia cho chi phí quảng cáo, là con số cho bạn biết chiến dịch nào thực sự có lãi. Bạn phải tự xây dựng nó, vì tín hiệu hoàn tiền đến máy chủ của bạn, không đến mạng quảng cáo.

Vì sao ROAS thổi phồng doanh thu khi bỏ qua hoàn tiền

ROAS lấy doanh thu được quy chia cho chi phí quảng cáo. Phần doanh thu thường được ghi một lần, tại thời điểm mua, bởi SDK trên thiết bị hoặc bởi dữ liệu chuyển đổi nhập từ cửa hàng. Hoàn tiền là sự kiện xảy ra sau, bên ngoài thiết bị, giữa khách hàng với Apple hoặc Google. Nếu không có gì đưa nó trở lại đúng chiến dịch, giao dịch đó vẫn được tính.

Điều này sẽ vô hại nếu hoàn tiền hiếm và phân bố đều. Thường thì không. Một mẫu quảng cáo hứa hẹn nhiều hơn những gì ứng dụng mang lại, một ưu đãi hiển thị sai đối tượng, hoặc một nguồn lưu lượng đầy thẻ bị đánh cắp sẽ kéo hoàn tiền dồn về những chiến dịch cụ thể. ROAS gộp che giấu chính sự khác biệt đó.

ROAS ròng là gì?

ROAS ròng là cùng tỷ lệ đó nhưng loại hoàn tiền ra khỏi dòng doanh thu: doanh thu được quy cho một chiến dịch, trừ tiền hoàn của chính các giao dịch đó, chia cho chi phí của chiến dịch. Một số nhóm còn trừ thêm hoa hồng của cửa hàng và thuế. Dù bạn trừ thêm gì, hoàn tiền vẫn là phần làm thay đổi chiến dịch nào thắng.

Hoàn tiền thất lạc ở đâu giữa cửa hàng và bảng điều khiển quảng cáo

Firebase ghi nhận hoàn tiền của Google Play, không ghi nhận hoàn tiền của App Store

Danh sách sự kiện tự động thu thập của Google có in_app_purchase, kích hoạt khi người dùng hoàn tất một giao dịch mua trong ứng dụng, kể cả gói đăng ký ban đầu, được xử lý bởi Apple App Store hoặc Google Play. Sự kiện hoàn tiền tương ứng, app_store_refund, kích hoạt khi giao dịch mua trong ứng dụng được Google Play hoàn tiền, và Google ghi rõ nó chỉ dành cho Android. Cả app_store_refund lẫn các sự kiện đăng ký tự động đều không được xuất sang BigQuery.

Cũng trang đó cho biết Analytics không tự động đo doanh thu và hoàn tiền của ứng dụng trả phí, và doanh thu báo cáo có thể khác với Google Play Developer Console. Trên iOS, không có cơ chế tự động nào trừ khoản hoàn tiền App Store khỏi giao dịch mà Firebase đã ghi nhận.

Google Ads ghi giá trị giao dịch làm giá trị chuyển đổi

Với ứng dụng Android dùng thanh toán trong ứng dụng, Google Ads có thể theo dõi giao dịch mua trong ứng dụng của những người đã nhấp vào quảng cáo của bạn, không cần viết mã trong ứng dụng. Google cho biết giá trị giao dịch được tự động báo cáo làm giá trị chuyển đổi. Với gói đăng ký, chỉ lần mua đầu tiên được ghi là chuyển đổi, và chỉ giá trị thanh toán đầu tiên được ghi nhận. Bài trợ giúp không nhắc đến hoàn tiền.

Google Ads có công cụ sửa sai. Điều chỉnh chuyển đổi cho phép bạn sửa lại giá trị chuyển đổi mà không đổi số lượng, hoặc rút chuyển đổi, tức đặt giá trị về 0.00 và đưa vào cả chiến lược giá thầu CPA lẫn ROAS. Google cho biết chuyển đổi trực tuyến chỉ điều chỉnh được nếu bạn dùng mã giao dịch, và chuyển đổi đã rút thì không thể điều chỉnh lại. Trang đó không nhắc đến chuyển đổi ứng dụng, vì vậy hãy xác nhận thiết lập chuyển đổi của bạn hỗ trợ điều chỉnh trước khi dựa vào nó.

Postback quảng cáo của Apple đóng lại trước khi nhiều khoản hoàn tiền đến

AdAttributionKit có ba khung chuyển đổi bắt đầu từ lần đầu người dùng mở ứng dụng: ngày 0 đến 2, ngày 3 đến 7 và ngày 8 đến 35. Ứng dụng có thể cập nhật giá trị chuyển đổi cho đến khi khung kết thúc. Sau đó Apple gửi postback sau một khoảng trễ ngẫu nhiên, 24 đến 48 giờ với postback thứ nhất và 24 đến 144 giờ với postback thứ hai và thứ ba. Nếu ứng dụng khóa giá trị sớm, hệ thống bỏ qua các cập nhật tiếp theo trong khung đó.

Giá trị chuyển đổi chi tiết chỉ xuất hiện trong postback đầu tiên. Các postback sau tối đa chỉ mang giá trị thô. Một giao dịch vào ngày 1 bị Apple hoàn tiền vào ngày 10 đã được báo cáo trong một postback không thể thay đổi nữa.

Nguồn đo lườngGhi nhận gì khi muaĐiều gì xảy ra khi giao dịch bị hoàn tiền
Firebase in_app_purchase, Android và iOSMã sản phẩm, giá, giá trị, tiền tệ, số lượngAndroid: app_store_refund kích hoạt. iOS: không có sự kiện hoàn tiền tự động
Google Ads, chuyển đổi Google Play, AndroidGiá trị giao dịch làm giá trị chuyển đổi, chỉ lần thanh toán đầu với gói đăng kýKhông được mô tả. Điều chỉnh có thể sửa hoặc rút chuyển đổi trực tuyến gửi kèm mã giao dịch
Postback AdAttributionKit, iOSMột giá trị chuyển đổi mỗi khung, chỉ chi tiết ở khung đầuCố định khi postback của khung đó đã được chuẩn bị
Máy chủ của chính bạnMọi giao dịch, gắn với mã người dùng của bạnThông báo REFUND của Apple, tín hiệu giao dịch bị hủy của Google Play

Hoàn tiền ứng dụng đến khi nào, và ai quyết định

Hoàn tiền không đến theo một lịch duy nhất. Có khoản đến trong vài giờ sau khi mua, có khoản vài tháng sau, đó là lý do ROAS của một nhóm người dùng cứ giảm dần sau khi báo cáo chiến dịch tưởng như đã chốt.

Con đường hoàn tiềnThời hạn theo lời chính cửa hàngAi quyết địnhTín hiệu trên máy chủ của bạn
Yêu cầu hoàn tiền Google PlayTrong 48 giờ, khách hàng yêu cầu Google. Sau đó, Google chuyển họ sang nhà phát triểnGoogle, sau đó là bạnGiao dịch bị hủy qua RTDN và Voided Purchases API
Hoàn tiền do nhà phát triển thực hiện trên Google PlayBất cứ khi nào bạn thực hiệnBạnGiao dịch bị hủy, nếu bạn thu hồi quyền
Báo cáo khoản phí trái phép trên Google PlayTrong vòng 120 ngày kể từ giao dịchGoogleGiao dịch bị hủy
Hoàn tiền AppleYêu cầu tại reportaproblem.apple.com, có phản hồi trong 24 đến 48 giờAppleThông báo REFUND kèm revocationReason
Yêu cầu dữ liệu sử dụng của AppleBạn trả lời trong 12 giờApple, dựa trên dữ liệu của bạnCONSUMPTION_REQUEST
Xem xét chargeback của Google PlayBạn trả lời trong 24 giờ qua orders.reviewrefundNgân hàng, sau khi xem bằng chứng của bạnGiao dịch bị hủy nếu chargeback được giữ nguyên

ROAS không tính hoàn tiền khiến bạn mất bao nhiêu tiền

Lấy hai chiến dịch có cùng ngân sách. Các con số dưới đây chỉ để minh họa, không phải số liệu chuẩn.

Hạng mụcChiến dịch AChiến dịch B
Chi phí quảng cáo$10,000$10,000
Doanh thu mua hàng được quy$14,000$12,500
ROAS gộp1.401.25
Tỷ lệ doanh thu bị hoàn tiền18%4%
Doanh thu sau hoàn tiền$11,480$12,000
ROAS ròng1.151.20

ROAS gộp bảo bạn dồn tiền vào A. ROAS ròng cho thấy B giữ lại được nhiều hơn trên mỗi đô la. Nếu đặt giá thầu theo giá trị gộp, thuật toán sẽ tiếp tục tìm thêm những người mua giống của A, vì không có gì báo cho nó biết họ đã đòi lại tiền.

Chi phí quảng cáo chỉ là hóa đơn đầu tiên. Một khách hàng được hoàn tiền còn để lại những khoản sau:

  • Khoản chi trả. Các thỏa thuận với đối tác liên kết, nhà sáng tạo nội dung và người có ảnh hưởng tính theo từng giao dịch thường trả theo doanh số, không phải doanh số trừ hoàn tiền, trừ khi hợp đồng quy định khác.
  • Điện toán, lệnh gọi API và lưu trữ. Người dùng được hoàn tiền đã dùng máy chủ, các API bên thứ ba trả phí và kho lưu trữ của bạn cho đến khi quyền truy cập bị thu hồi. Những hóa đơn đó không được hoàn lại.
  • Chi phí chargeback. Từ August 3 2026, Google chuyển giá mua bị chargeback cùng phí ngân hàng sang nhà phát triển, nên một nguồn lưu lượng Android nhiều tranh chấp gây tốn kém hơn cả doanh thu mà nó làm mất.
  • Nhắm mục tiêu kém hơn. Đặt giá thầu theo giá trị được huấn luyện trên các giao dịch bị hoàn tiền sẽ đi tìm thêm những người giống với những người đã được trả lại tiền.
Hai chồng xu trên bàn, một chồng thấp hơn sau khi bị lấy bớt xu, bên cạnh điện thoại và máy tính bỏ túi, cho thấy hoàn tiền làm thu hẹp doanh thu đứng sau ROAS ròng

Tỷ lệ hoàn tiền cao ở một chiến dịch là gian lận hay lời hứa không được giữ?

Thường là do lời hứa. revocationReason của Apple cho biết khoản hoàn tiền thuộc về phía nào. Giá trị 0 nghĩa là App Store hoàn tiền giao dịch vì lý do khác, ví dụ mua nhầm. Giá trị 1 nghĩa là hoàn tiền do sự cố thực tế hoặc được cho là có trong ứng dụng của bạn. Một cụm giá trị 1 từ cùng một chiến dịch thường chỉ ra mẫu quảng cáo hoặc phần onboarding mà nó dẫn tới. Một cụm báo cáo khoản phí trái phép trên Google Play chỉ ra nguồn lưu lượng.

Cách xây dựng ROAS ròng cho ứng dụng

Bạn không cần công cụ mới để bắt đầu. Bạn cần vài phép nối dữ liệu mà có lẽ hệ thống của bạn chưa làm.

  • Gắn chiến dịch vào người dùng. Lưu kết quả phân bổ cạnh mã người dùng của chính bạn khi cài đặt, để mọi giao dịch sau này đều truy được về một chiến dịch.
  • Gắn giao dịch vào người dùng. Đặt appAccountToken cho giao dịch iOS và mã tài khoản đã làm mờ cho giao dịch Google Play, để mọi sự kiện từ cửa hàng khớp với người dùng của bạn mà không cần đoán.
  • Lắng nghe hoàn tiền trên máy chủ. Xử lý thông báo REFUND của Apple từ App Store Server Notifications V2 và thông báo giao dịch bị hủy của Google Play. Định kỳ gọi Voided Purchases API làm phương án dự phòng, vì nó chỉ trả về giao dịch bị hủy trong 30 ngày gần nhất.
  • Báo cáo số gộp và số ròng song song, theo nhóm ngày mua. Tính mỗi khoản hoàn tiền vào chiến dịch và ngày mua đã tạo ra nó, không phải ngày khoản hoàn tiền xuất hiện.
  • Gửi điều chỉnh đến nền tảng nào chấp nhận. Nếu chuyển đổi Google Ads của bạn có kèm mã giao dịch, hãy sửa hoặc rút những chuyển đổi đã bị hoàn tiền. Với nền tảng không nhận điều chỉnh, hãy phân bổ ngân sách theo số ròng.
  • Trả lời đúng hạn hai yêu cầu bằng chứng. RefundHalt trả lời CONSUMPTION_REQUEST của Apple trong khung 12 giờ và quy trình xem xét chargeback của Google Play trong 24 giờ, để những khoản hoàn tiền bạn có thể phản đối đều có phần trình bày của bạn.

Nên tính hoàn tiền theo ngày mua hay ngày hoàn tiền?

Với quyết định về chiến dịch, hãy dùng ngày mua. Hoàn tiền là một sự thật về một giao dịch, và giao dịch thuộc về một chiến dịch. Bộ phận tài chính ghi nhận nó vào ngày hoàn tiền, đó là lý do báo cáo ROAS và khoản thanh toán của bạn sẽ không khớp nhau vào bất kỳ ngày nào. Hãy giữ cả hai góc nhìn và ghi nhãn rõ ràng.

Khi nào ROAS ròng của một nhóm người dùng được chốt?

Nó ổn định theo từng bước. Khung hoàn tiền tự phục vụ của Google đóng sau 48 giờ, Apple cho khách hàng biết sẽ có phản hồi về yêu cầu hoàn tiền trong 24 đến 48 giờ, và báo cáo khoản phí trái phép trên Google Play có thể đến trong vòng 120 ngày kể từ giao dịch. Hãy coi các con số ban đầu là tạm thời và kiểm tra lại cùng nhóm đó sau.

Câu hỏi thường gặp

Firebase có trừ hoàn tiền khỏi doanh thu mua trong ứng dụng không?
Chỉ với Google Play. Sự kiện app_store_refund do Firebase tự động thu thập kích hoạt khi Google Play hoàn tiền một giao dịch mua trong ứng dụng, và Google ghi rõ nó chỉ dành cho Android. Không có sự kiện tự động tương đương cho hoàn tiền App Store, và Google cho biết Analytics không tự động đo doanh thu và hoàn tiền của ứng dụng trả phí.
Google Ads có loại bỏ giao dịch mua trong ứng dụng đã hoàn tiền khỏi chuyển đổi không?
Chính bài viết của Google về chuyển đổi Google Play không nói vậy. Bài viết cho biết giá trị giao dịch được báo cáo làm giá trị chuyển đổi và không nhắc đến hoàn tiền. Điều chỉnh chuyển đổi của Google Ads có thể sửa hoặc rút một chuyển đổi, và Google cho biết chuyển đổi trực tuyến chỉ điều chỉnh được nếu đã gửi kèm mã giao dịch.
Postback của AdAttributionKit có phản ánh được hoàn tiền không?
Chỉ khi hoàn tiền xảy ra trước khi postback của khung chuyển đổi đó được chuẩn bị. Các khung kéo dài ngày 0 đến 2, 3 đến 7 và 8 đến 35 sau lần mở đầu tiên, và khi một khung kết thúc hoặc giá trị đã bị khóa, Apple bỏ qua các cập nhật tiếp theo trong khung đó.
Làm sao tính ROAS ròng cho một ứng dụng?
Lấy doanh thu được quy cho một chiến dịch, trừ tiền hoàn của chính các giao dịch đó, rồi chia cho chi phí quảng cáo của chiến dịch. Tính mỗi khoản hoàn tiền vào nhóm ngày mua đã tạo ra nó, dùng thông báo REFUND của Apple và tín hiệu giao dịch bị hủy của Google Play làm bản ghi hoàn tiền.
Tôi có thể phản đối các khoản hoàn tiền làm giảm ROAS không?
Chỉ hai loại. CONSUMPTION_REQUEST của Apple cho phép bạn gửi dữ liệu sử dụng trong 12 giờ, và quy trình xem xét chargeback của Google Play qua orders.reviewrefund cho bạn 24 giờ. Hoàn tiền Google Play trong 48 giờ, hoàn tiền qua bộ phận hỗ trợ và giao dịch bị hủy đều được quyết định mà không có bạn, còn chargeback của ngân hàng là quyết định cuối cùng.

Nguồn và tài liệu đọc thêm

RefundHalt

Chế độ tự động xử lý hoàn tiền cho App Store và Google Play

Đọc tiếp

Yêu cầu hoàn tiền tiếp theo đã đang trên đường đến.

Thiết lập RefundHalt trong khoảng thời gian bạn cần để đọc thêm một email hỗ trợ về khoản hoàn tiền mà mình chưa kịp phản biện.