A bid expresses how much you value your ad reaching a target audience and delivering results on your optimization_goal
. bid_amount
is the amount you want to spend to reach a given optimization_goal
.
At Facebook's ad auction, Facebook evaluates your bid_amount
and the probability of reaching your optimization_goal
. We apply an effective bid so you only win auctions and have your ads delivered when you are likely to reach your optimization_goal
.
Bidding and Optimization core concepts include:
In response to Apple’s new policy, we are announcing breaking changes that will affect SDKAdNetwork, Marketing API and Ads Insights API endpoints.
Optimization goals that will be impacted by the new attribution fields are as follows:
Campaign objectives that are either WEBSITE_CONVERSIONS
or PRODUCT_CATALOG_SALES
must have the following optimization goal:
For apps, only the APP_INSTALLS
objective can have is_skadnetwork_attribution
set to true
.
billing_event
cannot be APP_INSTALLS
if optimization_goal
is APP_INSTALLS
.conversion_domain
doesn't match the domains mapped to the pixel+event or custom conversion selected on the ad set level. Enforcement will only occur after Apple requires their AppTrackingTransparency prompt.
To learn more about how Apple’s iOS 14.5 requirements will impact Facebook advertising, visit our Business Help Center aricles and our changelog:
When you choose your bid:
You can also set objective
and billing_event
but neither directly impact bid_amount
or your effective bid. Your actual cost is usually equal or less than bid_amount
; occasionally it may be a little higher, see Billing Event.
For example, use these settings to spend about $10.00 for 1,000 daily unique views:
objective
: APP_INSTALLS
optimization_goal
: REACH
billing_event
: IMPRESSIONS
However, to spend $10.00 for each app install, use these settings:
objective
: APP_INSTALLS
optimization_goal
: APP_INSTALLS
billing_event
: any valid optionbilling_event
does not affect auction prices directly. It indirectly affects your actual spending due to Ads Delivery Pacing.
Define advertising goals you want to achieve when Facebook delivers your ads. We use your ad set's optimization_goal
to decide which people get your ad. For example with APP_INSTALLS
, Facebook delivers your ad to people who are more likely to install your app.
optimization_goal
defaults to a goal associated with your objective
. For example, if objective
is APP_INSTALLS
, optimization_goal
defaults to APP_INSTALLS
.
If you specify another optimization_goal
, Facebook delivers your ad to as many daily unique Accounts Center accounts as possible, regardlesss of the probability anyone takes action towards your objective
. See Campaign, Objective, Optimization Goal and attribution_spec.
In Marketing API v2.4, we replaced forms of bidding such as bid_type
, bid_info
, and conversion_specs
, with new fields: optimization_goal
, bid_amount
, and billing_event
. This decoupled campaign optimization
such APP_INSTALLS
or LINK_CLICKS
from billing, such as charges per IMPRESSIONS
, APP_INSTALLS
, or LINK_CLICKS
.
These older objectives are deprecated with the release of Marketing API v17.0. Please refer to the Outcome-Driven Ads Experiences mapping table to find the new objectives and their corresponding destination types, optimization goals and promoted objects.
Certain campaign objectives
support only certain ad set optimization_goal
s:
Campaign Objective | Default optimization_goal | Other valid optimization_goal |
---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Tracking specs help you track actions taken by users interacting with your ad. Tracking specs only track; they do not optimize ads delivery for an action or charge you based on that action.
You can use tracking specs with any bid type and creative. To specify tracking specs use the ad field, tracking_specs
.
We automatically select a default tracking spec set based on your objective, but you can track additional actions. For example, a link page post ad with POST_ENGAGEMENT
objective defaults to post_engagement
tracking, but you setup a Facebook pixel on the offsite page and track other actions.
The default tracking spec for the page post engagement objective is action.type = post_engagement
with ids for the post and page:
curl -X POST \
-F 'name="My First Ad"' \
-F 'adset_id="<AD_SET_ID>"' \
-F 'creative={
"creative_id": "<CREATIVE_ID>"
}' \
-F 'tracking_specs={
"action.type": "post_engagement",
"post": "<POST_ID>",
"page": "<PAGE_ID>"
}' \
-F 'status="PAUSED"' \
-F 'access_token=<ACCESS_TOKEN>' \
https://graph.facebook.com/v18.0/act_<AD_ACCOUNT_ID>/ads
For custom tracking specs, see Tracking Specs, Custom.