Il ROAS della tua app conta ancora gli acquisti che Apple e Google hanno rimborsato, quindi fai offerte sul ROAS netto
I rimborsi raramente tornano alle piattaforme pubblicitarie, così il ROAS continua ad attribuire acquisti che Apple e Google hanno già restituito. Ecco dove Firebase, Google Ads e AdAttributionKit perdono i rimborsi, quanto costa e come costruire il ROAS netto di un'app.

Punti chiave
- L'evento app_store_refund, raccolto automaticamente da Firebase, si attiva solo quando Google Play rimborsa un acquisto in-app. Google lo indica come solo Android, quindi i rimborsi dell'App Store non riducono mai le entrate in_app_purchase registrate da Firebase.
- Google Ads monitora automaticamente gli acquisti in-app di Google Play per le app Android e riporta il valore dell'acquisto come valore di conversione. Per gli abbonamenti registra solo il primo acquisto e il valore del primo pagamento.
- Le rettifiche delle conversioni di Google Ads possono modificare il valore di una conversione o ritrattarla a zero, e Google afferma che le conversioni online si possono rettificare solo se sono state inviate con un ID transazione.
- AdAttributionKit di Apple ha tre finestre di conversione dopo il primo avvio, giorni da 0 a 2, da 3 a 7 e da 8 a 35, e il valore di conversione dettagliato compare solo nel primo postback.
- Il ROAS netto è dato dalle entrate attribuite agli annunci meno i rimborsi su quegli acquisti, diviso per la spesa pubblicitaria. Una campagna con un ROAS lordo più alto può scendere in classifica sul ROAS netto se i suoi acquirenti chiedono più rimborsi.
- I segnali di rimborso arrivano al server dello sviluppatore, non alla rete pubblicitaria. Apple invia una App Store Server Notification di tipo REFUND, e Google Play segnala gli annullamenti tramite le notifiche in tempo reale per sviluppatori e la Voided Purchases API, che copre gli ultimi 30 giorni.
- Solo due flussi di rimborso consentono allo sviluppatore di presentare prove: il CONSUMPTION_REQUEST di Apple, a cui si risponde entro 12 ore, e la revisione dei chargeback di Google Play tramite orders.reviewrefund, a cui si risponde entro 24 ore.
Le dashboard pubblicitarie registrano un acquisto in-app nel momento in cui avviene, e la maggior parte non lo annulla mai. Quando Apple o Google in seguito rimborsano quell'acquisto, il denaro esce dal tuo pagamento ma resta nelle entrate della campagna, così il ROAS continua ad attribuire il merito all'annuncio che l'ha venduto. Il ROAS netto, entrate al netto dei rimborsi divise per la spesa pubblicitaria, è il numero che ti dice quali campagne hanno davvero reso. Devi costruirlo tu, perché il segnale di rimborso arriva al tuo server, non alla rete pubblicitaria.
Perché il ROAS sovrastima le entrate quando i rimborsi restano fuori
Il ROAS divide le entrate attribuite per la spesa pubblicitaria. Le entrate di solito vengono registrate una sola volta, al momento dell'acquisto, da un SDK sul dispositivo o da un'importazione di conversioni dallo store. Un rimborso è un evento successivo che avviene fuori dal dispositivo, tra il cliente e Apple o Google. Se nulla lo riporta alla stessa campagna, l'acquisto continua a contare.
Non sarebbe un problema se i rimborsi fossero rari e distribuiti in modo uniforme. Di solito non lo sono. Una creatività che promette più di quanto l'app offra, un'offerta mostrata al pubblico sbagliato o una fonte di traffico piena di carte rubate concentrano i rimborsi su campagne specifiche. Il ROAS lordo nasconde proprio questa differenza.
Che cos'è il ROAS netto?
Il ROAS netto è lo stesso rapporto con i rimborsi sottratti dalla riga superiore: entrate attribuite a una campagna, meno i rimborsi su quegli stessi acquisti, diviso per il costo della campagna. Alcuni team sottraggono anche la commissione dello store e le imposte. Qualunque altra voce sottrai, sono i rimborsi a cambiare quale campagna vince.
Dove si perdono i rimborsi tra lo store e la tua dashboard pubblicitaria
Firebase registra i rimborsi di Google Play, non quelli dell'App Store
L'elenco degli eventi raccolti automaticamente da Google include in_app_purchase, che si attiva quando un utente completa un acquisto in-app, incluso un abbonamento iniziale, elaborato dall'App Store di Apple o da Google Play. Il suo corrispettivo per i rimborsi, app_store_refund, si attiva quando Google Play rimborsa un acquisto in-app, e Google lo indica come solo Android. Né app_store_refund né gli eventi automatici di abbonamento vengono esportati in BigQuery.
La stessa pagina afferma che Analytics non misura automaticamente le entrate e i rimborsi degli acquisti di app a pagamento, e che le entrate riportate possono differire da quelle di Google Play Developer Console. Su iOS, nulla sottrae automaticamente un rimborso dell'App Store da un acquisto già registrato da Firebase.
Google Ads registra il valore dell'acquisto come valore di conversione
Per le app Android che usano la fatturazione in-app, Google Ads può monitorare gli acquisti in-app di chi ha fatto clic sul tuo annuncio, senza codice nell'app. Google afferma che il valore dell'acquisto viene riportato automaticamente come valore di conversione. Per gli abbonamenti, solo il primo acquisto viene registrato come conversione, e solo il valore del primo pagamento viene registrato. L'articolo del centro assistenza non menziona i rimborsi.
Google Ads ha comunque uno strumento di correzione. Le rettifiche delle conversioni ti permettono di modificare il valore di una conversione senza cambiarne il conteggio, oppure di ritrattarla, il che ne porta il valore a 0.00 e alimenta sia le strategie di offerta CPA sia quelle ROAS. Google afferma che le conversioni online si possono rettificare solo se hai usato un ID transazione, e che una conversione ritrattata non può essere rettificata di nuovo. Quella pagina non menziona le conversioni delle app, quindi verifica che la tua configurazione delle conversioni supporti le rettifiche prima di farci affidamento.
I postback pubblicitari di Apple si chiudono prima che arrivino molti rimborsi
AdAttributionKit ha tre finestre di conversione che partono quando l'utente avvia l'app per la prima volta: giorni da 0 a 2, giorni da 3 a 7 e giorni da 8 a 35. L'app può aggiornare il proprio valore di conversione fino alla chiusura di ciascuna finestra. Apple invia poi il postback dopo un ritardo casuale, da 24 a 48 ore per il primo e da 24 a 144 ore per il secondo e il terzo. Se l'app blocca un valore in anticipo, il sistema ignora gli aggiornamenti successivi in quella finestra.
Il valore di conversione dettagliato compare solo nel primo postback. Quelli successivi contengono al massimo un valore approssimativo. Un acquisto del giorno 1 che Apple rimborsa il giorno 10 è stato riportato in un postback che non può più cambiare.
| Strumento di misurazione | Cosa registra all'acquisto | Cosa succede quando l'acquisto viene rimborsato |
|---|---|---|
| Firebase in_app_purchase, Android e iOS | ID prodotto, prezzo, valore, valuta, quantità | Android: si attiva app_store_refund. iOS: nessun evento di rimborso automatico |
| Google Ads, conversioni Google Play, Android | Il valore dell'acquisto come valore di conversione, solo il primo pagamento per gli abbonamenti | Non descritto. Le rettifiche possono modificare o ritrattare le conversioni online inviate con un ID transazione |
| Postback AdAttributionKit, iOS | Un valore di conversione per finestra, dettagliato solo nel primo | Fisso una volta preparato il postback di quella finestra |
| Il tuo server | Ogni transazione, collegata al tuo ID utente | Notifica REFUND di Apple, segnali di acquisti annullati di Google Play |
Quando arrivano i rimborsi delle app e chi li decide
I rimborsi non seguono un unico calendario. Alcuni arrivano poche ore dopo l'acquisto e altri mesi dopo, ed è per questo che il ROAS di una coorte continua a scendere quando il report della campagna sembrava definitivo.
| Percorso di rimborso | Tempistiche, con le parole dello store | Chi decide | Segnale sul tuo server |
|---|---|---|---|
| Richiesta di rimborso su Google Play | Entro 48 ore il cliente lo chiede a Google. Dopo, Google lo indirizza allo sviluppatore | Google, poi tu | Acquisto annullato tramite RTDN e la Voided Purchases API |
| Rimborso dello sviluppatore su Google Play | Quando decidi di emetterlo | Tu | Acquisto annullato, se revochi l'accesso |
| Segnalazione di addebito non autorizzato su Google Play | Entro 120 giorni dalla transazione | Acquisto annullato | |
| Rimborso Apple | Richiesto su reportaproblem.apple.com, aggiornamento entro 24 a 48 ore | Apple | Notifica REFUND con revocationReason |
| Richiesta di consumo Apple | Rispondi entro 12 ore | Apple, usando i tuoi dati | CONSUMPTION_REQUEST |
| Revisione dei chargeback di Google Play | Rispondi entro 24 ore tramite orders.reviewrefund | La banca, dopo le tue prove | Acquisto annullato se il chargeback viene confermato |
Quanto costa in denaro un ROAS che ignora i rimborsi
Prendi due campagne con lo stesso budget. I numeri qui sotto sono un esempio, non un benchmark.
| Voce | Campagna A | Campagna B |
|---|---|---|
| Spesa pubblicitaria | $10,000 | $10,000 |
| Entrate da acquisti attribuiti | $14,000 | $12,500 |
| ROAS lordo | 1.40 | 1.25 |
| Quota rimborsata di quelle entrate | 18% | 4% |
| Entrate al netto dei rimborsi | $11,480 | $12,000 |
| ROAS netto | 1.15 | 1.20 |
Il ROAS lordo ti dice di spostare budget su A. Il ROAS netto dice che B ha trattenuto di più di ogni dollaro. Se le tue offerte si basano sul valore lordo, l'algoritmo continua a trovare altri acquirenti come quelli di A, perché nulla gli dice mai che hanno chiesto indietro i soldi.
La spesa pubblicitaria è solo la prima fattura. Un cliente rimborsato si lascia dietro anche questo:
- Compensi. Gli accordi con affiliati, creator e influencer pagati per acquisto di solito pagano sulla vendita, non sulla vendita meno i rimborsi, salvo diversa previsione del contratto.
- Calcolo, chiamate API e storage. Un utente rimborsato ha usato i tuoi server, le API a pagamento di terze parti e il tuo storage fino alla revoca dell'accesso. Quelle fatture non vengono rimborsate.
- Costi dei chargeback. Dal 3 agosto 2026, Google trasferisce allo sviluppatore il prezzo dell'acquisto contestato più le commissioni bancarie, quindi una fonte di traffico Android con molte contestazioni costa più delle entrate che fa perdere.
- Targeting peggiore. Le offerte basate sul valore addestrate su acquisti rimborsati vanno a cercare altre persone simili a quelle che sono state rimborsate.

Un tasso di rimborso alto su una campagna è frode o una promessa non mantenuta?
Spesso è la promessa. Il revocationReason di Apple ti dice da che parte è caduto un rimborso. Uno 0 significa che l'App Store ha rimborsato la transazione per altri motivi, ad esempio un acquisto accidentale. Un 1 significa che l'ha rimborsata per un problema reale o percepito all'interno della tua app. Una concentrazione di 1 su una campagna di solito indica la creatività dell'annuncio o l'onboarding a cui porta. Una concentrazione di segnalazioni di addebiti non autorizzati su Google Play indica la fonte di traffico.
Come costruire il ROAS netto di un'app
Per iniziare non serve un nuovo strumento. Servono alcuni collegamenti tra dati che probabilmente oggi non fai ancora.
- Associa la campagna all'utente. Salva il risultato dell'attribuzione accanto al tuo ID utente al momento dell'installazione, così ogni transazione successiva può essere ricondotta a una campagna.
- Associa la transazione all'utente. Imposta un appAccountToken sugli acquisti iOS e un ID account offuscato sugli acquisti Google Play, così ogni evento dello store corrisponde al tuo utente senza congetture.
- Ascolta i rimborsi sul server. Gestisci la notifica REFUND di Apple da App Store Server Notifications V2 e le notifiche di acquisti annullati di Google Play. Interroga la Voided Purchases API come rete di sicurezza, perché restituisce solo gli annullamenti degli ultimi 30 giorni.
- Riporta lordo e netto affiancati, per coorte di acquisto. Imputa ogni rimborso alla campagna e alla data di acquisto che lo hanno generato, non al giorno in cui il rimborso è comparso.
- Invia correzioni dove la piattaforma le accetta. Se le tue conversioni Google Ads hanno un ID transazione, modifica o ritratta quelle rimborsate. Dove una piattaforma non accetta correzioni, sposta il suo budget in base ai numeri netti.
- Rispondi in tempo alle due richieste di prove. RefundHalt risponde al CONSUMPTION_REQUEST di Apple entro la finestra di 12 ore e alla revisione dei chargeback di Google Play entro 24 ore, così i rimborsi che puoi contestare ricevono la tua versione dei fatti.
I rimborsi vanno contati alla data di acquisto o alla data di rimborso?
Per le decisioni sulle campagne, alla data di acquisto. Un rimborso è un fatto che riguarda un acquisto, e l'acquisto appartiene a una campagna. L'amministrazione lo contabilizza alla data del rimborso, ed è per questo che il tuo report sul ROAS e il tuo pagamento non coincideranno in nessun giorno specifico. Mantieni entrambe le viste ed etichettale.
Quando il ROAS netto di una coorte è definitivo?
Si assesta per gradi. La finestra di rimborso self-service di Google si chiude dopo 48 ore, Apple dice ai clienti di aspettarsi un aggiornamento sulla richiesta di rimborso entro 24 a 48 ore, e una segnalazione di addebito non autorizzato su Google Play può arrivare entro 120 giorni dalla transazione. Considera provvisori i primi numeri e ricontrolla la stessa coorte più avanti.
Domande frequenti
- Firebase sottrae i rimborsi dalle entrate degli acquisti in-app?
- Solo per Google Play. L'evento app_store_refund, raccolto automaticamente da Firebase, si attiva quando Google Play rimborsa un acquisto in-app, e Google lo indica come solo Android. Non esiste un equivalente automatico per i rimborsi dell'App Store, e Google afferma che Analytics non misura automaticamente le entrate e i rimborsi degli acquisti di app a pagamento.
- Google Ads rimuove dalle conversioni gli acquisti in-app rimborsati?
- L'articolo di Google sulle conversioni Google Play non dice che lo faccia. Afferma che il valore dell'acquisto viene riportato come valore di conversione e non menziona i rimborsi. Le rettifiche delle conversioni di Google Ads possono modificare o ritrattare una conversione, e Google afferma che le conversioni online si possono rettificare solo se sono state inviate con un ID transazione.
- I postback di AdAttributionKit possono riflettere un rimborso?
- Solo se il rimborso avviene prima che il postback di quella finestra di conversione sia preparato. Le finestre coprono i giorni da 0 a 2, da 3 a 7 e da 8 a 35 dopo il primo avvio, e quando una finestra si chiude o il valore viene bloccato, Apple ignora gli aggiornamenti successivi in quella finestra.
- Come si calcola il ROAS netto di un'app?
- Prendi le entrate attribuite a una campagna, sottrai i rimborsi su quegli stessi acquisti e dividi per la spesa pubblicitaria della campagna. Imputa ogni rimborso alla coorte di acquisto che lo ha generato, usando la notifica REFUND di Apple e i segnali di acquisti annullati di Google Play come registro dei rimborsi.
- Posso contestare i rimborsi che abbassano il mio ROAS?
- Solo due tipi. Il CONSUMPTION_REQUEST di Apple ti consente di inviare dati di consumo entro 12 ore, e la revisione dei chargeback di Google Play tramite orders.reviewrefund ti concede 24 ore. I rimborsi Google Play entro 48 ore, i rimborsi concessi dall'assistenza e gli acquisti annullati vengono decisi senza di te, e i chargeback bancari sono definitivi.
Fonti e approfondimenti
- Firebase Help: [GA4] Automatically collected events
- Google Ads Help: Measure app conversions with Google Play
- Google Ads Help: About conversion adjustments
- Apple Developer Documentation: Receiving postbacks in multiple conversion windows
- Apple Developer Documentation: notificationType
- Apple Developer Documentation: revocationReason
- Google Play Developer API: Voided Purchases API
- Google Play Help: Apps, games, and in-app purchases refund policies
- Google Play Help: Learn about Google Play refund policies
- Apple Support: Request a refund for apps or content that you bought from Apple
RefundHalt
Il pilota automatico dei rimborsi per App Store e Google Play
Continua a leggere
L'order ID sulla ricevuta App Store di un cliente ti dice cosa ha comprato e se Apple lo ha già rimborsato
L'endpoint Look Up Order ID di Apple trasforma l'order ID della ricevuta App Store di un cliente in transazioni firmate, con date e motivi dei rimborsi. Come usarlo con le email di rimborso, cosa non può fare e come si confronta con l'order ID di Google Play.
I rimborsi del checkout web su iOS ora arrivano a te invece che ad Apple, e così le contestazioni bancarie
Le app per iPhone negli Stati Uniti ora possono indirizzare gli acquirenti a un checkout web. Apple dice di non poter aiutare con i rimborsi di queste vendite, quindi la gestione dei rimborsi, i chargeback e le commissioni di contestazione da $15 passano a te. Ecco cosa cambia, quanto costa e come tenere basse le contestazioni.