+1 vote
by (8.3k points)

1 Answer

+2 votes

I wrote a previous answer about how Facebook's targeting algorithm works, but in this answer I'll explore the topic in more general terms. When I talk about mobile ad networks, I'm really referring to the "Big 4" broker networks (Unity Ads, ironSource, Applovin, and Vungle) and the top-tier self-attributing networks (Facebook, Google, Snap, and Twitter).

Most mobile ad networks operate on the basis of goal optimization, which means that an advertiser doesn't pay the network simply to serve its ads but rather to try to achieve some objective with the ads. This could be an install, or generally high retention, or revenue, or the user adding something to a shopping cart, etc.; the idea is that the ad network should be optimizing its placements for the advertiser towards some user behavior rather than just optimizing for the number of impressions that its ads receive. Of couse, it's possible to buy traffic on a CPM basis on an exchange / via a DSP that isn't optimized for anything, but that's not what ad networks sell: ad networks offer an optimization product.

With goal-optimized bidding, the bid that an advertiser provides is for the goal, not necessarily just the install. Most networks obfuscate the completion of goal events within the app and possibly even what they optimize toward, but Facebook is very transparent about it: an advertiser can pick the exact event that it wants to optimize traffic acquisition around. But all ad networks use some optimization algorithm to serve impressions for an app advertiser: they'll monitor the way users behave in an app and then look for commonalities across the users that completed whatever the optimization goal is and disproportionately show impressions to users that fit that profile.


There are a few things to clarify here. One is: how does the ad network know when a goal event takes place? The only way it can is if the advertiser notifies them, which is why most ad networks request a postback for successful events, which is basically just a notification that some user did some thing. If an advertiser doesn't send events back to the network, the network can only optimize traffic for installs, meaning they look for the traffic most likely to install without any context around how those users engage with the app.

The second clarifiation point relates to profiling: what aspects of a user can a network use to group / classify them? When thinking about this, it becomes clear that the self-attributing networks (SANs), but especially Facebook, have a massive competitive advantage over broker networks because of the rich data set they have for each of their users. Broker networks have information about a user that pertains to the apps they have installed from that network as well as the ones they have monetized and engaged with, but they don't have any demographic data about them. So while a broker network like Unity Ads, when determining if it should serve an ad to a user, can use the types of apps (games) that a user has historically installed and monetized with as inputs into the likelihood that a user will install / engage with an app, Facebook can use its entire breadth of data to make a much more informed, complete decision.

In other words, Facebook can get much more granular with its classification of users: it can use things like gender, age, relationship status, etc. to build a profile of a user that is likely to complete some in-app goal, whereas the broker networks can only use what they know about how that user has interacted with other apps in the past (plus whatever third party data they have purchased and associated with that user's device ID).


This process of building a profile of a user that is likely to complete an in-app goal is iterative and involves "exploration," or experimenting on different users and observing which ones complete the event. This exploration process doesn't start from scratch: ad networks can use historical data from similar apps to inform an a priori starting targeting profile. The exploration process can be thought of as finding the positioning of success events on a graph of user features. "Feature" here means some characteristic about a user: it could be the number of apps they have installed from a network, or the amount of money the network knows they have spent in apps, or it could be a categorial / binary variable such as "installs RPG games," etc.

The exploration process (Facebook calls this the "Learning Phase") exposes the ad to many different users, finds the subset of users that completed the goal event (eg. made a purchase), and then "plots" those users on a graph of features as in the above diagram. The network would look for areas on the graph where those users are clustered and re-calibrate its targeting to that region. Imagine that "Feature 1" in the above diagram was "Number of RPG Games Historically Installed" and "Amount of Money Historically Spent in Mobile Games." That top left quadrant, where the cluster of the Xs (an X here represents a user that completed the goal event) reside, might be that which represents the intersection of Very Many RPG Games Historically Installed and Very Large Amount of Money Historically Spent in Mobile Games; in noting this, the ad network would update its targeting to users who had installed many RPG games historically and also had spent very much money in mobile games historically, which is an obvious user profile.

This raises the question of how ad networks decide to serve impressions to users. An advertiser will set a bid for a goal event (eg. a Cost Per Install bid if they are optimizing for installs or a Cost Per Action bid if they are optimizing toward some in-app event) and the ad network gets paid when it delivers that goal. So the ad network is sensitive to not only the bid that the advertiser sets but also the likelihood that users will click on their ads, install the app, and then complete that goal event. If an advertiser is only paying the network on the basis of successful events, the ad network is incentivized to make sure that the users it exposes the advertiser's ad to will complete the event: it has opportunity cost in the form of potentially missing out on revenue by showing an ad to a user that doesn't result in a goal event.


This is a really important concept for advertisers to understand: not only is the delivery of their ad dependent on the bid they provide but also on the probability that the ad impressions results in a conversion event. An ad network won't delivery an advertiser's ad if users don't respond to it with goal events, even if the bid is very high. Ad networks operate here using a concept called Expected Value: the predicted value of an ad being served to a user. The Expected Value is the bid value multiplied by the ad network's estimate of the probability that a user ultimately completes a goal event after seeing the ad. This probability is informed by a number of things:

  • What is the overall CTR, Install Rate, etc. of the ad?
  • What is the receptiveness of this user to ads for apps like this?




Each time an impression is made available for an auction, the advertiser is using historical performance information about both the user being shown the ad as well as the ad itself to decide which ad gets served. In this context, it's easy to see how important creative experimentation and interation is in optimizing ad performance: if an ad doesn't result in goal events being completed, increasing the bid might not necessarily improve delivery. This also explains why direct response mobile ads tend to perform better during periods of platform featuring or when they are paired with television campaigns: delivery improves because users are more prone to clicking on the ad as a result of a "halo effect" from other ongoing campaigns.


Within the context of an auction (which is how ad impressions are filled with ads), a bid is a cost constraint; it is the advertiser saying, "I will pay up to this amount for this goal to be delivered, but not more." This is why bids tend to need to increase as ad targeting is made more specific to produce delivery: if one advertiser is chasing an audience, it's likely that other advertisers are chasing that same audience, and so competition for impressions served to those users is more intense. But this also explains why bids don't match the price paid for events exactly: in a second-price auction (which most networks use, although Google is moving AdX to a first-price auction model), the bid is only used to select the winner of the auction, and the price paid is actually just slightly above the second-highest price submitted. In a max bid strategy, the cost paid for a goal event should never exceed the bid, but with a target cost strategy or a lowest cost strategy, actual costs might exceed the bid.

This also explains why costs tend to be volatile early on in the life of a campaign, as it is "learning" (exploring): the system needs to produce conversions in order to understand 1) to whom the ad should be exposed and 2) what the probabilities of goal completion look like for those audiences. It's important to keep in mind that broker networks pay their publishers on the basis of CPM, or cost per 1,000 impressions; they back into a CPI or CPA value in serving campaigns by understanding the expected value of impressions, which requires a large dataset on ad performance that they need to generate through experimentation and exploration.

So early on in a campaign, an ad might win many auctions at a set bid but not actually convert into installs or produce goal events, which causes the cost per goal event to be much higher than the bid (this article does a good job of explaining why this is the case). The deeper down-funnel the goal is (eg. a purchase), the more assumptions the ad network needs to make early on about performance and the greater the delta can be between the advertiser's bid and the cost they pay for goal events. After enough time, the ad network should be able to settle into an understanding of the probability of a goal event taking place at the impression level and the cost per goal event should settle below the bid. Note that SANs don't have to pay publishers since they own their inventory, so if a strict bid control is set (eg. using the Bid Cap strategy on Facebook), the cost per goal event shouldn't ever exceed the bid. Broker networks do have to pay publishers, so it's more likely to see a the cost per goal event exceed bids on those networks; in some cases, a campaign might produce 0 goal events but still cost the advertiser money (since the network needs to pay the publisher for the impressions it filled that didn't result in goal events).

by (8.3k points)