In this document:
Optimized CPM allows an advertiser to prioritize their marketing goals, and then automatically delivers ads against those goals in the most effective way possible. This allows advertisers to maximize the value they get from their budgets.
Goals can be specified in absolute or relative value, i.e. how much the fulfillment of a particular goal is worth to an advertiser. These values are not bids. For Optimized CPM using absolute values, the bids should be the value an advertiser places on each of those connections, when using relative values, the bids should be percentages reflecting the weight an advertiser puts on each goal and should add up to 100%.
The system will automatically bid on behalf of the advertiser, while remaining constrained by the campaign budget they define and the values they specify. The dynamic bids allow the system to capture the highest-value impressions for your goals, and you should expect the total ROI on the campaign to exceed that of either a CPC or a traditional CPM campaign.
At this time, advertisers can optimize their campaigns based on the following goals:
We will likely make more goals available as we continue to develop Optimized CPM.
Ads may be designed to reach as many unique users as possible, or to require traffic to a website via clicks, or to get fans or app installs. In fact, the goal of an ad may be "all of the above", with varying levels of importance.
If you use Optimized CPM, the ad system delivers ads based on the goal values that you specify when you create the ad. For example, you could optimize and ad based on these values:
Absolute values example
The above example indicates that you value a Page Like at approximately $0.50, reaching a new person at approximately $0.02, generating additional clicks at approximately $0.20, and delivering impressions with social context at approximately $0.10.
In this example, the ad system will put a high value on impressions likely to convert. Value is also allocated to the number of users who see at least one impression (Reach), users that are likely to click the ad, and (to a lesser degree) on ad impressions that have social context. In most cases, you should expect to see more actions from this ad relative to actions from an ordinary CPC ad.
While the example above optimizes across a number of dimensions, you can also use Optimized CPM to deploy ads that focus on a single goal. In the example above, assigning a value of $0.00 on goals other than “Page Likes” would optimize ad delivery fully toward generating Page Likes, and is likely to generate lower reach than the more balanced campaign described above.
The absolute version of Optimized CPM in the Ads API requires that you specify a bid_type value of 7 (see below for “Relative Version of Optimized CPM”). You also specify a bid_info parameter (normally not used on input for creating an ad), which contains the values for the ad goals. The max_bid input parameter should be omitted because bids are set automatically, per impression.
The adgroup object that you specify must include bid_type = 7 and must include the ad goal values in a bid_info parameter.
In bid_info, a numerical code is used to indicate a particular goal (e.g. 1 for Clicks, 55 for Actions). In the example below, each goal corresponds with a fixed numerical code and an advertiser controlled value (in cents).
The following request contains an adgroup with the above values for ad goals:
curl -F "campaign_id=6004672166189"\
-F "bid_type=7"\
-F "bid_info={'1':20,'38':10,'44':2,'55':50}"\
-F "targeting={'countries':['US']}"\
-F "creative={\
'type':27,\
'object_id':111656835535822,\
'auto_update':1}"\
-F "name=opm1"
"https://graph.facebook.com/act_71597454/adgroups?access_token=_____"
The result would be similar to the following:
{"id":"6004949407189"}
If you retrieve the data for that adgroup object in the Graph API explorer (i.e., https://graph.facebook.com/6004949407189), the result will be similar to the following:
{
"adgroup_id": 6004949407189,
"ad_id": 6004949407189,
"campaign_id": 6004672166189,
"name": "opm1",
"ad_status": 4,
"adgroup_status": 4,
"bid_type": 7,
"max_bid": "50",
"bid_info": {
"1": "20",
"38": "10",
"44": "2",
"55": "50"
},
"account_id": 71597454,
"id": "6004949407189",
"creative_ids": [
6004949400589
],
"targeting": {
"countries": [
"US"
]
},
"start_time": null,
"end_time": null,
"updated_time": "2011-11-11T10:33:36+0000"
}
When you retrieve data for an adgroup object, ignore the max_bid field as it’s for internal use only.
The relative version of Optimized CPM in the Ads API requires that you specify a bid_type = 6. You also specify a bid_info parameter, which contains the percentages for the ad goals. The specified percentages must sum to 100.
In bid_info, a numerical code is used to indicate a particular goal (e.g. 1 for Clicks, 55 for Actions). In the example below, each goal corresponds with a fixed numerical code and an advertiser controlled value (in percentages).
The following request contains an adgroup with the above values for ad goals:
curl -F "campaign_id=6003417011234"
-F "bid_type=6"
-F "bid_info={'1':20,'38':10,'44':20,'55':50}"
-F "targeting={'countries':['US']}"
-F "creative={type:9,object_id:125772667501234}"
-F "name=opm1"
"https://graph.facebook.com/act_368811234/adgroups?access_token=____"
The result would be similar to the following:
{"id":"6004949407189"}
If you retrieve the data for that adgroup object in the Graph API explorer (i.e., https://graph.facebook.com/6004949407189), the result will be similar to the following:
{
"adgroup_id": 6004949407189,
"ad_id": 6004949407189,
"campaign_id": 6004672166189,
"name": "opm1",
"ad_status": 4,
"adgroup_status": 4,
"bid_type": 6,
"max_bid": "50",
"bid_info": {
"1": "20",
"38": "10",
"44": "20",
"55": "50"
},
"account_id": 71597454,
"id": "6004949407189",
"creative_ids": [
6004949400589
],
"targeting": {
"countries": [
"US"
]
},
"start_time": null,
"end_time": null,
"updated_time": "2011-11-11T10:33:36+0000"
}
An Optimized CPM campaign must have a budget. The ad system will bid on each impression on your behalf, bidding high when the impression is likely to work for your goals, and bidding low when it’s unlikely to work for your goals.
Since each impression can support multiple goals, the underlying charging mechanism is per impression (as with CPM). However, keep in mind that the dynamic bids allow the system to capture the highest-value impressions for your goals, and you should expect the total ROI on the campaign to surpass your traditional CPC or CPM campaign. Note that stats for each of the goals are provided in Ad Manager and in the API, so you can observe the performance of an ad and gauge the success of a campaign, based on your goals.