Publishers rely on ad quality tools to catch bad ads: creatives that redirect, auto-click, crash the app, or serve inappropriate content. AppLovin offers this through AppLovin Ad Review (formerly SafeDK, which we acquired in 2019) inside MAX. Other providers offer similar tools.
These tools only work if they can see the ad, and a provider gets that access from the publisher. The access comes with an obligation: the data belongs to the network that served the ad and to the user who saw it, and it should be collected to find and kill bad ads, nothing else.
This post covers that standard and how AppLovin Ad Review meets it.
How AppLovin Ad Review works
AppLovin Ad Review runs only on impressions MAX mediates, and only after a publisher turns it on in the MAX dashboard. The data is used to moderate ads and is aggregated for reporting; user-level detail exists today only so a publisher can trace a specific bad ad and block it. We do not build user or device profiles from it, and we do not feed it into Axon or any other AppLovin model. There is no scenario where we take another network's ad output and train our models on it. Even so, we are removing the user-level detail entirely. Catching a bad ad does not require it, and we would rather hold Ad Review to the standard we think every ad quality tool should meet.
Why this matters
Users. The ad a network serves is the output of a model trained on data that network collected under its own agreements with users and publishers. When another company captures a network's served ads at the user level, it takes a piece of that network's and its users' data outside those agreements, and publishers and users may not even know it is happening.
Networks. Every network's competitive advantage is its own served-ad history: what it showed, to whom, and what happened. Sit inside every other network's ad stream and you get the entire industry's output paired with pricing. Our terms bar transferring data derived from our service to third parties and treat our pricing as confidential for exactly this reason.
Attribution. Think through what network A's real-time model trained on this stream can do. It sees that network B just served a specific advertiser's ad to a specific user at a given price. Network A's bidder can then buy the next impression for that user, show the same advertiser, and take the click and the install that network B's spend created.
What we are doing
The standard is simple: an ad quality tool should export only aggregated, de-identified data, and should not capture another network's user-level ad output. Aggregated data catches bad ads just as well, so the limit costs ad quality nothing. What it protects is the incentive to serve good ads in the first place: a network invests in its served-ad output because the returns should come back to it, and a tool that takes that output to feed competing ad serving models diverts those returns to a party that did not pay the cost, discouraging the investment and innovation that drive the ecosystem.
Ad Review now meets this standard. User-level ad journey views go away; publishers see aggregate reporting by network, ad unit, and creative instead. The aggregated Ad Review SDK is available for iOS and Android. Any provider is free to follow this example, and we encourage publishers to ask every ad quality SDK in their apps to meet the same standard.
We are not willing to let data tied to our impressions, or our partners' data, be collected in the name of "ad quality" and misused for anything else wherever it is taken. Our terms protect it in every environment, not only within MAX. That practice would undermine the trust, fairness, and aligned incentives the ecosystem depends on.
Adam Foroughi
CEO
Sep 16, 2026