Vai al contenuto
AppFoyer
Inizia

Guide app-ads.txt

Cos'è app-ads.txt, e dove deve stare

Il file in un paragrafo, il formato della riga campo per campo, l'unica regola sulla posizione che decide se tutto funziona, e cosa fare senza un sito web.

app-ads.txt è un file di testo semplice che elenca le società pubblicitarie autorizzate a vendere l'inventario della tua app. Si trova in /app-ads.txt sul sito web indicato nella tua scheda dello store, e le reti lo scaricano per verificare che i venditori siano autorizzati. Un sottodominio di piattaforma funziona: AdMob verifica i file sui sottodomini AppFoyer. Niente annunci, niente file.

1:22
Video di 1:22 · si apre su YouTube

Fallo invece in pochi minuti

AppFoyer ospita le pagine di cui parla questa guida (informativa sulla privacy, termini, supporto, eliminazione dell'account e app-ads.txt) su un sottodominio dedicato, senza un tuo dominio o server. Un'app è gratis, e niente di ciò che uno store richiede è mai a pagamento.

Verificata il 12 ottobre 2026. Le policy degli store cambiano, a volte senza preavviso. Tutto ciò che segue rimanda alla documentazione ufficiale, ed è quella pagina, non questa, a fare fede. Se le due non concordano, ha ragione lo store. Questa guida è tradotta dall'inglese; le citazioni dalla documentazione degli store restano nell'originale inglese.

app-ads.txt è un file di testo semplice che elenca le società pubblicitarie autorizzate a vendere l’inventario pubblicitario della tua app. Si trova in /app-ads.txt sul sito web che hai dichiarato nella tua scheda dello store, e le reti pubblicitarie lo scaricano per verificare che chi offre il tuo inventario sia davvero autorizzato da te. Senza di esso un acquirente non ha modo di confermarlo, ed è proprio questa la ragione per cui lo standard esiste.

Se non mostri annunci nella tua app, questo file non ti serve affatto. Se li mostri, richiede circa dieci minuti, e nove di questi servono a mettere il file nella posizione giusta, l’unica parte che va regolarmente storta.

Quale problema risolve

L’inventario pubblicitario viene rivenduto. Tra la tua app e l’inserzionista ci sono exchange, rivenditori e intermediari, e finché non sono esistiti ads.txt e il suo fratello per le app non c’era un modo economico per un acquirente di distinguere “questo è davvero l’inventario di quell’app” da “qualcuno sostiene di venderlo”. La frode funzionava perché l’affermazione non era verificabile.

La soluzione è volutamente semplice: l’editore pubblica l’elenco di chi è autorizzato a vendere per suo conto, a un indirizzo che solo l’editore controlla. Un acquirente scarica il file e confronta. Questo è l’intero meccanismo, ed è per questo che l’indirizzo conta più del contenuto: un file che chiunque avrebbe potuto mettere lì non dimostrerebbe nulla.

Il formato della riga

Un venditore autorizzato per riga, tre campi obbligatori e uno facoltativo, separati da virgole:

google.com, pub-0000000000000000, DIRECT, f08c47fec0942fa0
CampoSignificato
google.comIl dominio del sistema pubblicitario: il dominio canonico della rete, non il tuo.
pub-0000000000000000Il tuo ID publisher presso quella rete. Copialo dalla sua dashboard.
DIRECT o RESELLERDIRECT se hai un contratto diretto con loro; RESELLER se li hai autorizzati a rivendere.
f08c47fec0942fa0ID facoltativo dell’autorità di certificazione, quando la rete ne pubblica uno.

Tutto ciò che segue # è un commento. Le righe che iniziano con contact=, subdomain=, inventorypartnerdomain= e simili sono variabili, non record di venditori, e vengono lasciate stare.

Due errori spiegano la maggior parte dei file non funzionanti: una virgola mancante, che rende illeggibile l’intera riga, e incollare l’ID publisher di qualcun altro preso da un forum di supporto, che autorizza uno sconosciuto a vendere il tuo inventario. La dashboard di ogni rete mostra la riga esatta che vuole: usa quella, non un modello.

Dove deve stare: la parte che decide tutto

Il crawler non conosce il nome del tuo pacchetto e non ti cerca per app. Legge l’URL del sito web dello sviluppatore dalla tua scheda dello store e scarica /app-ads.txt alla radice di quel dominio. Sbaglia l’URL nella scheda e un file perfettamente corretto diventa invisibile.

AdMob documenta le regole di ricerca, e vale la pena leggerle una volta invece di tirare a indovinare:

  • La directory radice significa “the directory following the top level domain” («la directory che segue il dominio di primo livello»): example.com/app-ads.txt, non example.com/some/path/app-ads.txt.
  • I crawler “probe up to one subdomain level from the developer website when constructing an app-ads.txt URL” («sondano fino a un livello di sottodominio a partire dal sito web dello sviluppatore quando costruiscono un URL di app-ads.txt»). Per una scheda che punta a support.help.example.com/game, l’esempio di AdMob stessa mostra che prova help.example.com/app-ads.txt e example.com/app-ads.txt.
  • www. e m. sono esclusi come posizioni di sottodominio, quindi si riducono al dominio stesso.

Oltre all’indirizzo, il modo in cui viene servito deve essere banalmente corretto: HTTP 200, Content-Type: text/plain, nessun reindirizzamento davanti, nessun login, nessun JavaScript che lo generi, niente in robots.txt che lo blocchi. Un file che compare solo dopo un reindirizzamento da http a https, o dal dominio principale a www, è un errore comune e del tutto invisibile.

Controllalo come farebbe un crawler:

curl -i https://your-domain.example/app-ads.txt

Vuoi 200 OK, text/plain, nessuna intestazione Location: e le tue righe nel corpo.

“Ma non ho un sito web”

È il caso normale per uno sviluppatore indipendente, ed è per questo che tante app non hanno affatto il file.

Il requisito è un hostname che controlli e che serva un file: non è un requisito di avere un sito promozionale, un dominio aziendale o una landing page. AdMob lo dice direttamente: “If you don’t have a suitable website that allows the uploading of an app-ads.txt file at the root level, you can use Firebase Hosting to host your app-ads.txt file.” («Se non hai un sito web adatto che consenta di caricare un file app-ads.txt al livello radice, puoi usare Firebase Hosting per ospitare il tuo file app-ads.txt.») L’hosting su una piattaforma è previsto, non è un ripiego. La guida per chi non ha un sito web illustra le opzioni.

Qualunque cosa usi, due cose devono restare vere ben oltre la settimana del lancio: l’indirizzo deve restare lo stesso, perché è stampato in una scheda dello store a cui non penserai più, e deve continuare a servire testo semplice senza che un reindirizzamento ci si infili davanti la prima volta che qualcuno “migliora” la configurazione.

Quando cambi qualcosa, non succede nulla subito

Le reti pubblicitarie rieseguono la scansione con i loro tempi. AdMob afferma che “it can take up to 24 hours for AdMob to crawl and verify your app-ads.txt files” («possono essere necessarie fino a 24 ore perché AdMob esegua la scansione e verifichi i tuoi file app-ads.txt»), e altre reti sono più lente. Un file caricato un’ora fa che risulta ancora mancante quasi sempre è solo troppo presto: vedi la guida al file non trovato prima di cambiare qualsiasi altra cosa.

Cosa fa AppFoyer

La pagina della tua app serve app-ads.txt sul suo sottodominio (testo semplice, 200, nessun reindirizzamento, con le intestazioni richieste dalla specifica) e l’editor convalida ogni riga mentre la digiti, così una virgola mancante viene individuata prima che la veda un crawler. Imposti quel sottodominio come sito web dello sviluppatore nella tua scheda dello store, un livello sotto appfoyer.page.

AdMob lo verifica lì: nell’ottobre 2026 ha segnalato “app-ads.txt file found and verified” («file app-ads.txt trovato e verificato») per app il cui sito web dello sviluppatore è un indirizzo AppFoyer. Non abbiamo ancora risultati di scansione nostri da altre reti pubblicitarie.

Le fonti ufficiali