Each app gets its own subdomain, one level under appfoyer.page — within
the subdomain depth AdMob's crawler probes. Set it as the website in your store listing; see the
app-ads.txt guide.
Two ways in
Let your coding agent do it, or fill in a short form.
Both paths end the same way: five pages drafted, and a review screen where you decide what goes public.
From your coding agent
Install the plugin, then say “Make this app store-ready” inside your app's
repository. It reads your build files — SDKs, permissions, bundle id — drafts every page from
what it finds, and asks you only what the code cannot tell it.
export APPFOYER_API_KEY=cpk_…
claude
/plugin marketplace add appfoyer/claude-plugin
/plugin install appfoyer@appfoyer
Only derived facts leave your machine — SDK and permission names, the app's name. Never source code.
The agent cannot publish. It writes drafts; publishing needs your click in the dashboard.
No agent needed. Add an app, answer a short form, and the five pages are generated from
templates you can then edit as Markdown.
App name
Developer or company name
Support email
Store listing URL
What the app collects
App icon (optional)
Everything a store requires is on the free plan. Start free →
What you get
Five pages, an ad file, and a checklist that tells you what is still missing.
Everything here is on the free plan. Nothing a store requires is behind a paywall — paid plans sell scale, not compliance.
Privacy policy
/privacy
Generated from your app's real SDK list. The editor asks which analytics, ads and crash reporters you use, and the checklist keeps warning you until the placeholder sentence is replaced.
Terms of service
/terms
A plain template covering use of the app, purchases and liability. Apple's standard EULA is linked when your app sells anything.
Support
/support
The support URL both stores ask for: your contact address and the basics reviewers look for.
Account deletion
/account-deletion
The page Google Play requires. A user submits a request, we store it and notify you by email, Telegram or Slack. You perform the deletion in your own systems — we never touch your users' data.
app-ads.txt
/app-ads.txt
Presets for AdMob, AppLovin, Unity and others, plus line-by-line validation. Served as plain text with no redirect, which is what crawlers require.
The legal pages are templates completed by you, not legal advice — every generated page says so,
and you stay responsible for what you publish.
The honest comparison
Why not GitHub Pages and a template?
You can do all of this yourself, and for a single app it is a reasonable afternoon. One part does not work on a static host at all.
Static host + template
AppFoyer
Time to first live URL
2–3 hours
Minutes
Domain
≈ $12 / year
Included, on a subdomain
Account-deletion form
Needs a backend you have to run
Included
When a deletion request arrives
Nothing happens
Email, Telegram or Slack notification
app-ads.txt
Hand-written, hand-checked
Presets and line-by-line validation
Privacy policy content
Copy a template, guess the SDK list
Drafted from the SDKs in your build files
Time to first live URL
Static host2–3 hoursAppFoyerMinutes
Domain
Static host≈ $12 / yearAppFoyerIncluded, on a subdomain
Account-deletion form
Static hostNeeds a backend you have to runAppFoyerIncluded
When a deletion request arrives
Static hostNothing happensAppFoyerEmail, Telegram or Slack notification
app-ads.txt
Static hostHand-written, hand-checkedAppFoyerPresets and line-by-line validation
Privacy policy content
Static hostCopy a template, guess the SDK listAppFoyerDrafted from the SDKs in your build files
That highlighted row is the whole argument. Google Play requires a page where a user can
submit a deletion request — a form that has to reach you. Static hosting cannot do it, so
the DIY route ends with a third-party form service or a small server you now maintain.
Trust & safety
What we do so a free subdomain stays worth trusting.
Every hosted page carries a footer
It names the developer, says the page is hosted by AppFoyer, states that we are not affiliated with any app store, and links a way to report abuse. You cannot remove it.
Your page content is Markdown, never raw HTML
Nothing you write can become a script, an embedded frame or a third-party image. Links to your own site, your store listings and your support address become clickable; anything else is printed as plain text. The only form on a hosted site is the account-deletion request form we provide, and it carries a bot-protection challenge.
Publishing is screened
Each publish is scored for impersonation and scam patterns before anything goes public. A false positive delays a page by a review; it never deletes your work.
Seeing a page that shouldn't exist? Report it — every report is read.
Questions developers actually ask
Do I need my own domain?
No. Each app gets its own subdomain, and that URL is what you paste into the store console. If you already own a domain, you can still use it for your app's marketing site — these pages are the compliance ones.
Can I point my own domain at these pages?
Not today. On the Pro plan you can replace the random subdomain with a name you choose — within naming rules that refuse reserved words, brand names and sign-in-sounding words like “login”, and that ask the name to relate to your app or company. Custom domains are not part of the product yet.
Does AppFoyer delete my users' data?
No, and it cannot. The account-deletion page collects the request, stores it, and notifies you. Deleting the account inside your own backend is yours to do — that is what Google Play actually requires of you. Any wording suggesting otherwise would be false.
Are the generated legal pages legally valid?
They are templates you complete, not legal advice. They cover what the stores ask for and each page says plainly that the developer is responsible for its accuracy. If your app operates somewhere with specific requirements, have a lawyer read them.
Does app-ads.txt on a subdomain really work with AdMob?
Yes, by the published rules. AdMob's app-ads.txt guide states that its crawler uses the hostname of the developer website in your store listing and probes up to one subdomain level, and it names platform hosting such as Firebase Hosting as an accepted place for the file. Your site is one level under appfoyer.page and serves the file the way the specification requires — plain text, HTTP 200, no redirect, correct headers. Set your store listing's website to your AppFoyer URL and check your ad network's dashboard after it has crawled.
What if the .page domain is blocked where my users are?
Every site answers on a second domain as well: the same address with .site instead of .page. Same pages, same slug, same app-ads.txt — one site, two addresses. Some countries and networks block whole top-level domains, so if .page is unreachable for you or your users, use the .site address in your store listing and in your app. You switch which address the dashboard shows with one click.
What happens to my pages if I stop paying?
Nothing at all while the charge is still being retried — that runs for two to four weeks and no countdown of ours starts during it. Once the subscription is actually cancelled you return to the free plan: you pick which one app stays published, the rest stay online but read-only for a week, and come offline three weeks in. You are emailed on day 0, day 7 and day 18. Nothing is deleted at any point, and your custom subdomain is held for you and never given to anyone else — subscribing again brings it all back with one publish.
If my pages come offline, how do my users still request account deletion?
They still can. The account-deletion page is the one page we keep serving after an app is unpublished — read-only, hidden from search engines, indefinitely. Requests still reach you by email. Your users never chose AppFoyer and have no idea about your billing, so losing their route to you over an unpaid invoice would be our mistake, not yours. The file that does stop immediately is app-ads.txt, because ad networks require it, not an app store.
What if AppFoyer shuts down? My URL is in a store listing.
The fair question to ask a hosting service, so the answer is in our Terms rather than only in a blog post. If we ever discontinue the service you get at least twelve months' notice: your pages stay online the whole time, and new sign-ups stop immediately so nobody starts a submission on a URL that is going away. You can edit and republish for the first three months; after that the pages keep serving but stop changing, nothing is billed for the remaining nine months, and a prepaid period is refunded pro rata. Export everything — the Markdown of every page, your app-ads.txt, your settings and your deletion-request log — from the day of the announcement.
Can I get a refund?
Ask within 14 days of any charge — the first one or a renewal — and you get it back in full, no reason needed. Cancelling is one click in the customer portal, and you keep the plan until the period you paid for ends.
Can I edit what was generated?
Yes. Every page is Markdown with a live preview, whether a template or your agent wrote the first draft. Nothing is published until you publish it.
Get the URLs your store listing is waiting for.
One app, all five pages and app-ads.txt on the free plan. No card,
and nothing a store requires is ever paywalled.