Facebook Developers
DocsToolsSupportNewsApps
Log In
  • Social Plugins
  • Facebook Login
  • Open Graph
  • Facebook APIs
    • Graph API
    • FQL
    • Open Graph
    • Dialogs
    • Chat
    • Internationalization
    • Ads
  • Games
  • Media
  • Payments
  • App Center
  • Promote Your App
  • iOS
  • Android
  • Web
  • Technology Partners
  • Best Practices
    • Batch Requests
    • Using ETags
  • Reference
    • Conversion pixels
    • Cost Per Action (CPA) Ads
    • Currencies
    • Homepage Ads via API
    • Introduction to Action Spec
    • Introduction to Sponsored Stories
    • Mobile App Install Ads
    • Optimized CPM
    • Real Time Bidded Exchange protocol
    • Sponsored Results
    • Thrift file for Real Time Bidded Exchange protocol
  • Specs
    • Action Specs
    • Conversion Specs
    • Creative Specs
    • Targeting Specs
    • Tracking Specs
  • Advanced Targeting
    • Action Spec Targeting
    • Custom Audience targeting
    • Partner Categories
    • Topic Targeting
    • ZIP Code Targeting
  • Queries
    • Action Estimate
    • Action Spec Ad Previews
    • Ad Statistics
    • Autocomplete Data
    • Broad Target Categories
    • Connection Objects
    • Conversion Stats
    • Keyword Stats
    • Reach estimate
    • Targeting Description
  • Objects
    • Ad account
    • Ad account group
    • Ad campaign
    • Ad creative
    • Ad group
    • Ad image
    • Ad user

Optimized CPM

Facebook APIs › Ads › Optimized CPM

In this document:

  • Overview
  • Emphasizing your goals for ads
  • Absolute Version of Optimized CPM
  • Relative Version of Optimized CPM
  • Budget and Pricing

Overview

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:

  • Actions: Actions that happen on Facebook, e.g., Page Likes and App Installs.
    • You can specify actions using conversion specs.
  • Reach: Number of times an impression was served to a user for the first time in a day.
  • Clicks: Number of clicks received.
  • Social Impressions: Impressions with social context, i.e. with the names of one or more of the user’s friends attached to the ad who have already liked the page or installed the app.

We will likely make more goals available as we continue to develop Optimized CPM.

Emphasizing your goals for ads

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

  • Page Like Action: $0.50
  • Reach: $0.02
  • Clicks: $0.20
  • Social Impressions: $0.10

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.

Absolute Version of Optimized CPM

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).

  • Actions (numerical code 55): 50 cents
  • Reach (numerical code 44): 2 cents
  • Clicks (numerical code 1): 20 cents
  • Social Impressions (numerical code 38): 10 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.

Relative Version of Optimized CPM

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).

  • Actions (numerical code 55): 50 %
  • Reach (numerical code 44): 20 %
  • Clicks (numerical code 1): 20 %
  • Social Impressions (numerical code 38): 10 %

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"
 } 

Budget and Pricing

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.

Updated 12 minutes ago
Facebook © 2013 · English (US)
AboutAdvertisingCareersPlatform PoliciesPrivacy Policy