Усі статті
Посібник8 хв читання

ROAS вашого застосунку досі враховує покупки, за які Apple і Google повернули гроші, тому робіть ставки на net ROAS

Повернення коштів рідко доходять до рекламних платформ, тож ROAS і далі зараховує покупки, за які Apple і Google уже повернули гроші. Пояснюємо, де Firebase, Google Ads і AdAttributionKit втрачають повернення, скільки це коштує і як побудувати net ROAS для застосунку.

Стіл маркетингового аналітика з графіками рекламних кампаній на ноутбуці, iPhone, Android-телефоном і закресленими рядками на роздруківці, що символізують net ROAS після повернень коштів у застосунку

Головне

  • Автоматично збирана подія Firebase app_store_refund спрацьовує лише тоді, коли Google Play повертає кошти за вбудовану покупку. Google позначає її як лише для Android, тож повернення в App Store ніколи не зменшують дохід in_app_purchase, який записав Firebase.
  • Google Ads автоматично відстежує вбудовані покупки Google Play в Android-застосунках і передає суму покупки як цінність конверсії. Для підписок він фіксує лише першу покупку і суму першого платежу.
  • Коригування конверсій у Google Ads можуть змінити цінність конверсії або відкликати її до нуля. За словами Google, онлайн-конверсії можна коригувати, лише якщо разом із ними було передано ідентифікатор транзакції.
  • В Apple AdAttributionKit є три вікна конверсії після першого запуску: дні від 0 до 2, від 3 до 7 і від 8 до 35. Детальна цінність конверсії є лише в першому postback.
  • Net ROAS дорівнює доходу, атрибутованому рекламі, мінус повернення за цими покупками, поділеному на рекламні витрати. Кампанія з вищим валовим ROAS може опинитися нижче за net ROAS, якщо її покупці частіше просять повернення.
  • Сигнали про повернення надходять на сервер розробника, а не в рекламну мережу. Apple надсилає REFUND App Store Server Notification, а Google Play повідомляє про анулювання через сповіщення для розробників у реальному часі та Voided Purchases API, який охоплює останні 30 днів.
  • Лише два сценарії повернення дають розробнику змогу подати докази: Apple CONSUMPTION_REQUEST з відповіддю протягом 12 годин і перевірка чарджбеку в Google Play через orders.reviewrefund з відповіддю протягом 24 годин.

Рекламні панелі записують вбудовану покупку в момент, коли вона відбувається, і більшість із них ніколи її не скасовує. Коли Apple або Google згодом повертає кошти за цю покупку, гроші зникають із вашої виплати, але залишаються в доході кампанії, тож ROAS і далі зараховує її рекламі, яка її продала. Net ROAS, тобто дохід після повернень, поділений на рекламні витрати, показує, які кампанії справді окупилися. Його доведеться будувати самостійно, бо сигнал про повернення потрапляє на ваш сервер, а не в рекламну мережу.

Чому ROAS завищує дохід, якщо не враховувати повернення

ROAS ділить атрибутований дохід на рекламні витрати. Дохід зазвичай записується один раз, у момент покупки: SDK на пристрої або імпорт конверсій із магазину. Повернення коштів відбувається пізніше і поза пристроєм, між клієнтом та Apple чи Google. Якщо ніщо не повертає цю подію до тієї самої кампанії, покупка й далі рахується.

Це було б нешкідливо, якби повернення були рідкісними й розподілялися рівномірно. Зазвичай це не так. Креатив, що обіцяє більше, ніж дає застосунок, пропозиція, показана не тій аудиторії, або джерело трафіку, повне викрадених карток, стягують повернення до конкретних кампаній. Валовий ROAS приховує саме цю різницю.

Що таке net ROAS?

Net ROAS це те саме співвідношення, але з вирахуваними з верхнього рядка поверненнями: дохід, атрибутований кампанії, мінус повернення за тими самими покупками, поділений на вартість кампанії. Деякі команди також віднімають комісію магазину і податки. Що б ви не віднімали ще, саме повернення змінюють те, яка кампанія перемагає.

Де губляться повернення між магазином і вашою рекламною панеллю

Firebase записує повернення Google Play, але не App Store

У переліку автоматично збираних подій Google є in_app_purchase. Вона спрацьовує, коли користувач завершує вбудовану покупку, зокрема першу підписку, оброблену Apple App Store або Google Play. Її відповідник для повернень, app_store_refund, спрацьовує, коли Google Play повертає кошти за вбудовану покупку, і Google позначає її як лише для Android. Ні app_store_refund, ні автоматичні події підписок не експортуються в BigQuery.

На тій самій сторінці сказано, що Analytics не вимірює автоматично дохід від покупок платних застосунків і повернення, а звітний дохід може відрізнятися від даних Google Play Developer Console. На iOS ніщо автоматично не віднімає повернення App Store від покупки, яку Firebase уже записав.

Google Ads записує суму покупки як цінність конверсії

Для Android-застосунків із вбудованими платежами Google Ads може відстежувати вбудовані покупки людей, які натиснули вашу рекламу, без жодного коду в застосунку. За словами Google, сума покупки автоматично передається як цінність конверсії. Для підписок конверсією вважається лише перша покупка, і записується лише сума першого платежу. Довідкова стаття не згадує повернень.

Інструмент виправлення в Google Ads таки є. Коригування конверсій дають змогу змінити цінність конверсії, не змінюючи їх кількості, або відкликати конверсію, що встановлює її цінність на 0.00 і впливає на стратегії ставок CPA і ROAS. За словами Google, онлайн-конверсії можна коригувати, лише якщо ви використовували ідентифікатор транзакції, а відкликану конверсію вже не можна коригувати повторно. Та сторінка не згадує конверсій у застосунках, тож перш ніж на це спиратися, переконайтеся, що ваше налаштування конверсій підтримує коригування.

Рекламні postback від Apple закриваються раніше, ніж надходить багато повернень

В AdAttributionKit є три вікна конверсії, які починаються з першого запуску застосунку: дні від 0 до 2, дні від 3 до 7 і дні від 8 до 35. Застосунок може оновлювати цінність конверсії, доки вікно не закінчиться. Потім Apple надсилає postback із випадковою затримкою: від 24 до 48 годин для першого і від 24 до 144 годин для другого й третього. Якщо застосунок рано зафіксує значення, система ігнорує подальші оновлення в цьому вікні.

Детальна цінність конверсії є лише в першому postback. Наступні postback у найкращому разі містять грубе значення. Покупка першого дня, за яку Apple повернула кошти на десятий день, уже потрапила в postback, який більше не можна змінити.

Інструмент вимірюванняЩо він записує в момент покупкиЩо відбувається після повернення коштів
Firebase in_app_purchase, Android та iOSID продукту, ціна, цінність, валюта, кількістьAndroid: спрацьовує app_store_refund. iOS: автоматичної події повернення немає
Google Ads, конверсії Google Play, AndroidСума покупки як цінність конверсії, для підписок лише перший платіжНе описано. Коригування можуть змінити або відкликати онлайн-конверсії, передані з ідентифікатором транзакції
Postback AdAttributionKit, iOSЦінність конверсії для кожного вікна, детальна лише в першомуФіксується, щойно підготовлено postback цього вікна
Ваш власний серверКожна транзакція, прив'язана до вашого ID користувачаСповіщення Apple REFUND, сигнали Google Play про анульовані покупки

Коли надходять повернення в застосунках і хто їх ухвалює

Повернення не приходять за одним графіком. Деякі надходять за кілька годин після покупки, а деякі через місяці. Саме тому ROAS когорти продовжує знижуватися вже після того, як звіт кампанії здавався остаточним.

Шлях поверненняСтроки за словами самого магазинуХто вирішуєСигнал на вашому сервері
Запит на повернення в Google PlayПротягом 48 годин клієнт звертається до Google. Після цього Google спрямовує його до розробникаGoogle, потім виАнульована покупка через RTDN і Voided Purchases API
Повернення від розробника в Google PlayКоли ви його оформитеВиАнульована покупка, якщо ви відкликаєте доступ
Скарга на неавторизоване списання в Google PlayПротягом 120 днів після транзакціїGoogleАнульована покупка
Повернення AppleЗапит на reportaproblem.apple.com, оновлення за 24 до 48 годинAppleСповіщення REFUND із revocationReason
Запит Apple про споживанняВи відповідаєте протягом 12 годинApple на основі ваших данихCONSUMPTION_REQUEST
Перевірка чарджбеку в Google PlayВи відповідаєте протягом 24 годин через orders.reviewrefundБанк, після ваших доказівАнульована покупка, якщо чарджбек залишається в силі

Скільки коштує ROAS, що не бачить повернень

Візьмімо дві кампанії з однаковим бюджетом. Цифри нижче є ілюстрацією, а не бенчмарком.

РядокКампанія AКампанія B
Рекламні витрати$10,000$10,000
Атрибутований дохід від покупок$14,000$12,500
Валовий ROAS1.401.25
Частка цього доходу, за яку повернули кошти18%4%
Дохід після повернень$11,480$12,000
Net ROAS1.151.20

Валовий ROAS радить перекинути гроші в A. Net ROAS каже, що B зберегла більше з кожного долара. Якщо ваші ставки працюють на валовій цінності, алгоритм і далі шукатиме більше покупців, схожих на покупців A, бо ніщо не повідомляє йому, що ті попросили гроші назад.

Рекламні витрати лише перший рахунок. Клієнт, якому повернули кошти, залишає по собі ще й таке:

  • Виплати. Партнерські угоди, угоди з авторами й інфлюенсерами з оплатою за покупку зазвичай платять із продажу, а не з продажу мінус повернення, якщо в договорі не сказано інше.
  • Обчислення, виклики API і сховище. Користувач, якому повернули кошти, навантажував ваші сервери, платні сторонні API і сховище, доки доступ не відкликали. Ці рахунки ніхто не повертає.
  • Витрати на чарджбеки. З 3 серпня 2026 року Google перекладає на розробника ціну покупки, за якою виник чарджбек, разом із банківськими комісіями. Тому джерело Android-трафіку з великою кількістю спорів коштує більше, ніж дохід, який воно втрачає.
  • Гірше таргетування. Ставки на основі цінності, навчені на покупках із поверненням, шукають більше людей, схожих на тих, кому повернули гроші.
Дві стопки монет на столі, одна нижча після того, як частину монет забрали, поруч телефон і калькулятор, що показують, як повернення зменшують дохід, на якому стоїть net ROAS

Високий рівень повернень в одній кампанії це шахрайство чи порушена обіцянка?

Часто це обіцянка. Поле Apple revocationReason показує, з якого боку виникло повернення. 0 означає, що App Store повернув кошти за транзакцію з інших причин, наприклад через випадкову покупку. 1 означає, що повернення сталося через реальну або уявну проблему у вашому застосунку. Скупчення одиниць з однієї кампанії зазвичай вказує на рекламний креатив або онбординг, до якого він веде. Скупчення скарг на неавторизовані списання в Google Play вказує на джерело трафіку.

Як побудувати net ROAS для застосунку

Щоб почати, новий інструмент не потрібен. Потрібно кілька об'єднань даних, яких ваші дані, імовірно, ще не роблять.

  • Прив'язуйте кампанію до користувача. Зберігайте результат атрибуції поруч із вашим власним ID користувача під час встановлення, щоб будь-яку подальшу транзакцію можна було простежити до кампанії.
  • Прив'язуйте транзакцію до користувача. Задавайте appAccountToken для покупок на iOS і обфускований ID акаунта для покупок у Google Play, щоб кожна подія магазину зіставлялася з вашим користувачем без здогадок.
  • Слухайте повернення на сервері. Обробляйте сповіщення Apple REFUND з App Store Server Notifications V2 і сповіщення Google Play про анульовані покупки. Регулярно опитуйте Voided Purchases API як запасний варіант, бо він повертає анулювання лише за останні 30 днів.
  • Показуйте валові й чисті показники поруч, за когортами покупок. Зараховуйте кожне повернення до кампанії та дати покупки, які його принесли, а не до дня, коли повернення з'явилося.
  • Надсилайте коригування туди, де платформа їх приймає. Якщо ваші конверсії Google Ads містять ідентифікатор транзакції, змінюйте цінність або відкликайте ті, за якими повернули кошти. Де платформа не приймає коригувань, перерозподіляйте її бюджет за чистими цифрами.
  • Вчасно відповідайте на два запити доказів. RefundHalt відповідає на Apple CONSUMPTION_REQUEST у межах 12-годинного вікна і на перевірку чарджбеку в Google Play протягом 24 годин, тож у поверненнях, які можна оскаржити, звучить і ваша позиція.

Зараховувати повернення на дату покупки чи на дату повернення?

Для рішень щодо кампаній на дату покупки. Повернення це факт про покупку, а покупка належить кампанії. Фінансовий відділ відображає його на дату повернення, тому ваш звіт ROAS і ваша виплата не збігатимуться в жоден конкретний день. Тримайте обидва подання і підписуйте їх.

Коли net ROAS когорти стає остаточним?

Він стабілізується поетапно. Вікно самостійного повернення в Google закривається через 48 годин, Apple радить клієнтам чекати оновлення щодо запиту на повернення за 24 до 48 годин, а скарга на неавторизоване списання в Google Play може надійти протягом 120 днів після транзакції. Вважайте ранні цифри попередніми і пізніше перевіряйте ту саму когорту ще раз.

Поширені запитання

Чи віднімає Firebase повернення від доходу з вбудованих покупок?
Лише для Google Play. Автоматично збирана подія Firebase app_store_refund спрацьовує, коли Google Play повертає кошти за вбудовану покупку, і Google позначає її як лише для Android. Автоматичного відповідника для повернень App Store немає, а Google зазначає, що Analytics не вимірює автоматично дохід від покупок платних застосунків і повернення.
Чи прибирає Google Ads вбудовані покупки з поверненням коштів із конверсій?
Власна стаття Google про конверсії Google Play цього не стверджує. У ній сказано, що сума покупки передається як цінність конверсії, а повернення не згадуються. Коригування конверсій у Google Ads можуть змінити або відкликати конверсію, і за словами Google, онлайн-конверсії можна коригувати, лише якщо разом із ними було передано ідентифікатор транзакції.
Чи можуть postback AdAttributionKit відобразити повернення?
Лише якщо повернення відбулося до того, як підготовлено postback цього вікна конверсії. Вікна охоплюють дні від 0 до 2, від 3 до 7 і від 8 до 35 після першого запуску. Щойно вікно закінчується або значення зафіксовано, Apple ігнорує подальші оновлення в цьому вікні.
Як розрахувати net ROAS для застосунку?
Візьміть дохід, атрибутований кампанії, відніміть повернення за тими самими покупками і поділіть на рекламні витрати кампанії. Зараховуйте кожне повернення до когорти покупок, яка його принесла, використовуючи сповіщення Apple REFUND і сигнали Google Play про анульовані покупки як запис про повернення.
Чи можу я оскаржити повернення, які знижують мій ROAS?
Лише два види. Apple CONSUMPTION_REQUEST дає змогу надіслати дані про споживання протягом 12 годин, а перевірка чарджбеку в Google Play через orders.reviewrefund дає вам 24 години. 48-годинні повернення в Google Play, повернення через підтримку та анульовані покупки вирішуються без вас, а банківські чарджбеки остаточні.

Джерела та додаткове читання

RefundHalt

Автопілот повернень для App Store і Google Play

Читайте далі

Наступний запит на повернення вже в дорозі.

Налаштуйте RefundHalt за час, потрібний, щоб прочитати черговий лист у підтримку про повернення, яке ви не встигли оскаржити.