A campaign is the highest level organizational structure within an ad account and should represent a single objective for an advertiser, for example, to drive page post engagement. Setting objective of the campaign will enforce validation on any ads added to the campaign to ensure they also have the correct objective.
Facebook will no longer be able to aggregate non-inline conversion metric values across iOS 14.5 and non-iOS 14.5 campaigns due to differences in attribution logic. Querying across iOS 14.5 and non-iOS 14.5 campaigns will result in no data getting returned for non-inline conversion metrics such as app installs and purchases. Inline event metrics like impressions, link clicks, and video views, however, can still be aggregated. Please visit our changelog for more information.
Ad campaigns that target iOS 14.5 must set the new is_skadnetwork_attribution
field to true
.
The date_preset = lifetime
parameter is disabled in Graph API v10.0 and replaced with date_preset = maximum
, which returns a maximum of 37 months of data. For v9.0 and below, date_preset = maximum
will be enabled on May 25, 2021, and any lifetime
calls will default to maximum
and return only 37 months of data.
All businesses using the Marketing API must identify whether or not new and edited campaigns belong to a Special Ad Category. Current available categories are: housing, employment, credit, or issues, elections, and politics. Businesses whose ads do not belong to a Special Ad Category must indicate NONE or send an empty array in the special_ad_categories
field.
Businesses running housing, employment, or credit ads must comply with targeting and audience restrictions. Targeting for ads about social issues, elections or politics are not affected by the special_ad_categories
label.
As of Marketing API 7.0, the special_ad_category
parameter on the POST /act_<ad_account_id>/campaigns
endpoint has been deprecated and replaced with a new special_ad_categories
parameter. The new special_ad_categories
parameter is required and accepts an array.
If you use the special_ad_category
parameter, it will still return a string, but you should use GET /{campaign-id}?fields=special_ad_categories
to get an array back. Refer to Special Ad Category for additional information.
A campaign is a grouping of ad sets which are organized by the same business objective. Each campaign has an objective that must be valid across the ad sets within that campaign.
After your ads begin delivering, you can query stats for ad campaigns. The statistics returned will be unique stats, deduped across the ad sets. You can also get reports and statistics for all ad sets and ads in an campaign simultaneously.GET v21.0/...?fields={fieldname_of_type_Campaign} HTTP/1.1
Host: graph.facebook.com
/* PHP SDK v5.0.0 */
/* make the API call */
try {
// Returns a `Facebook\FacebookResponse` object
$response = $fb->get(
'...?fields={fieldname_of_type_Campaign}',
'{access-token}'
);
} catch(Facebook\Exceptions\FacebookResponseException $e) {
echo 'Graph returned an error: ' . $e->getMessage();
exit;
} catch(Facebook\Exceptions\FacebookSDKException $e) {
echo 'Facebook SDK returned an error: ' . $e->getMessage();
exit;
}
$graphNode = $response->getGraphNode();
/* handle the result */
/* make the API call */
FB.api(
"...?fields={fieldname_of_type_Campaign}",
function (response) {
if (response && !response.error) {
/* handle the result */
}
}
);
/* make the API call */
new GraphRequest(
AccessToken.getCurrentAccessToken(),
"...?fields={fieldname_of_type_Campaign}",
null,
HttpMethod.GET,
new GraphRequest.Callback() {
public void onCompleted(GraphResponse response) {
/* handle the result */
}
}
).executeAsync();
/* make the API call */
FBSDKGraphRequest *request = [[FBSDKGraphRequest alloc]
initWithGraphPath:@"...?fields={fieldname_of_type_Campaign}"
parameters:params
HTTPMethod:@"GET"];
[request startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection,
id result,
NSError *error) {
// Handle the result
}];
Parameter | Description |
---|---|
date_preset enum{today, yesterday, this_month, last_month, this_quarter, maximum, data_maximum, last_3d, last_7d, last_14d, last_28d, last_30d, last_90d, last_week_mon_sun, last_week_sun_sat, last_quarter, last_year, this_week_mon_today, this_week_sun_today, this_year} | Date Preset |
time_range {'since':YYYY-MM-DD,'until':YYYY-MM-DD} | Time Range. Note if time range is invalid, it will be ignored. |
Field | Description |
---|---|
id numeric string | Campaign's ID |
account_id numeric string | ID of the ad account that owns this campaign |
adlabels | Ad Labels associated with this campaign |
enum {LOWEST_COST_WITHOUT_CAP, LOWEST_COST_WITH_BID_CAP, COST_CAP, LOWEST_COST_WITH_MIN_ROAS} | Bid strategy for this campaign when you enable campaign budget optimization and
when you use
|
boosted_object_id numeric string | The Boosted Object this campaign has associated, if any |
brand_lift_studies | Automated Brand Lift V2 studies for this ad set. |
budget_rebalance_flag bool | Whether to automatically rebalance budgets daily for all the adsets under this campaign. This has been deprecated on Marketing API V7.0. |
budget_remaining numeric string | Remaining budget |
buying_type string | Buying type, possible values are: |
campaign_group_active_time numeric string | campaign_group_active_time this is only for Internal, This will have the active running length of Campaign Groups |
can_create_brand_lift_study bool | If we can create a new automated brand lift study for the ad set. |
can_use_spend_cap bool | Whether the campaign can set the spend cap |
configured_status enum {ACTIVE, PAUSED, DELETED, ARCHIVED} | If this status is |
created_time datetime | Created Time |
daily_budget numeric string | The daily budget of the campaign |
effective_status enum {ACTIVE, PAUSED, DELETED, ARCHIVED, IN_PROCESS, WITH_ISSUES} | IN_PROCESS is available for version 4.0 or higher |
has_secondary_skadnetwork_reporting bool | has_secondary_skadnetwork_reporting |
is_budget_schedule_enabled bool | Whether budget scheduling is enabled for the campaign group |
is_skadnetwork_attribution bool | When set to |
Issues for this campaign that prevented it from deliverying | |
last_budget_toggling_time datetime | Last budget toggling time |
lifetime_budget numeric string | The lifetime budget of the campaign |
name string | Campaign's name |
objective string | Campaign's objective See the Outcome Ad-Driven Experience Objective Validation section below for more information. |
pacing_type list<string> | Defines pacing type of the campaign. The value is an array of options: "standard". |
primary_attribution enum | primary_attribution |
promoted_object | The object this campaign is promoting across all its ads |
smart_promotion_type enum | Smart Promotion Type. guided_creation or smart_app_promotion(the choice under APP_INSTALLS objective). |
source_campaign | The source campaign that this campaign is copied from |
source_campaign_id numeric string | The source campaign id that this campaign is copied from |
list<enum> | special ad categories |
special_ad_category enum | The campaign's Special Ad Category. One of |
list<enum> | Country field for Special Ad Category. |
spend_cap numeric string | A spend cap for the campaign, such that it will not spend more than this cap. Expressed as integer value of the subunit in your currency. |
start_time datetime | Merging of |
status enum {ACTIVE, PAUSED, DELETED, ARCHIVED} | If this status is |
stop_time datetime | Merging of |
topline_id numeric string | Topline ID |
updated_time datetime | Updated Time. If you update |
Edge | Description |
---|---|
Edge<AdStudy> | The ad studies containing this campaign |
Edge<AdRule> | Ad rules that govern this campaign - by default, this only returns rules that either directly mention the campaign by id or indirectly through the set entity_type |
Edge<Adgroup> | Ads under this campaign |
Edge<AdCampaign> | The ad sets under this campaign |
Edge<AdCampaignGroup> | The copies of this campaign |
Error | Description |
---|---|
100 | Invalid parameter |
80004 | There have been too many calls to this ad-account. Wait a bit and try again. For more info, please refer to https://developers.facebook.com/docs/graph-api/overview/rate-limiting#ads-management. |
2635 | You are calling a deprecated version of the Ads API. Please update to the latest version. |
190 | Invalid OAuth 2.0 Access Token |
104 | Incorrect signature |
200 | Permissions error |
3018 | The start date of the time range cannot be beyond 37 months from the current date |
2500 | Error parsing graph query |
async_batch_requests
edge from the following paths: Parameter | Description |
---|---|
adbatch list<Object> | JSON encoded batch reqeust Required |
name UTF-8 encoded string | Name of the batch request for tracking purposes. Required |
id
in the return type.id
: numeric string, Error | Description |
---|---|
100 | Invalid parameter |
2500 | Error parsing graph query |
194 | Missing at least one required parameter |
copies
edge from the following paths: Parameter | Description |
---|---|
deep_copy boolean | Default value: false Whether to copy all the child ads. Limits: the total number of children ads to copy should not exceed 3 for a synchronous call and 51 for an asynchronous call. |
end_time datetime | For deep copy, the end time of the sets under the copied campaign, e.g. |
rename_options JSON or object-like arrays | Rename options |
start_time datetime | For deep copy, the start time of the sets under the copied campaign, e.g. |
status_option enum {ACTIVE, PAUSED, INHERITED_FROM_SOURCE} | Default value: PAUSED
|
copied_campaign_id
in the return type.copied_campaign_id
: numeric string, ad_object_ids
: List [ad_object_type
: enum {unique_adcreative, ad, ad_set, campaign, opportunities, privacy_info_center, topline, ad_account}, source_id
: numeric string, copied_id
: numeric string, Error | Description |
---|---|
100 | Invalid parameter |
200 | Permissions error |
campaigns
edge from the following paths: POST /v21.0/act_<AD_ACCOUNT_ID>/campaigns HTTP/1.1
Host: graph.facebook.com
name=My+campaign&objective=OUTCOME_TRAFFIC&status=PAUSED&special_ad_categories=%5B%5D
/* PHP SDK v5.0.0 */
/* make the API call */
try {
// Returns a `Facebook\FacebookResponse` object
$response = $fb->post(
'/act_<AD_ACCOUNT_ID>/campaigns',
array (
'name' => 'My campaign',
'objective' => 'OUTCOME_TRAFFIC',
'status' => 'PAUSED',
'special_ad_categories' => '[]',
),
'{access-token}'
);
} catch(Facebook\Exceptions\FacebookResponseException $e) {
echo 'Graph returned an error: ' . $e->getMessage();
exit;
} catch(Facebook\Exceptions\FacebookSDKException $e) {
echo 'Facebook SDK returned an error: ' . $e->getMessage();
exit;
}
$graphNode = $response->getGraphNode();
/* handle the result */
/* make the API call */
FB.api(
"/act_<AD_ACCOUNT_ID>/campaigns",
"POST",
{
"name": "My campaign",
"objective": "OUTCOME_TRAFFIC",
"status": "PAUSED",
"special_ad_categories": "[]"
},
function (response) {
if (response && !response.error) {
/* handle the result */
}
}
);
Bundle params = new Bundle();
params.putString("name", "My campaign");
params.putString("objective", "OUTCOME_TRAFFIC");
params.putString("status", "PAUSED");
params.putString("special_ad_categories", "[]");
/* make the API call */
new GraphRequest(
AccessToken.getCurrentAccessToken(),
"/act_<AD_ACCOUNT_ID>/campaigns",
params,
HttpMethod.POST,
new GraphRequest.Callback() {
public void onCompleted(GraphResponse response) {
/* handle the result */
}
}
).executeAsync();
NSDictionary *params = @{
@"name": @"My campaign",
@"objective": @"OUTCOME_TRAFFIC",
@"status": @"PAUSED",
@"special_ad_categories": @"[]",
};
/* make the API call */
FBSDKGraphRequest *request = [[FBSDKGraphRequest alloc]
initWithGraphPath:@"/act_<AD_ACCOUNT_ID>/campaigns"
parameters:params
HTTPMethod:@"POST"];
[request startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection,
id result,
NSError *error) {
// Handle the result
}];
curl -X POST \
-F 'name="My campaign"' \
-F 'objective="OUTCOME_TRAFFIC"' \
-F 'status="PAUSED"' \
-F 'special_ad_categories=[]' \
-F 'access_token=<ACCESS_TOKEN>' \
https://graph.facebook.com/v21.0/act_<AD_ACCOUNT_ID>/campaigns
Parameter | Description |
---|---|
adlabels list<Object> | Ad Labels associated with this campaign |
enum{LOWEST_COST_WITHOUT_CAP, LOWEST_COST_WITH_BID_CAP, COST_CAP, LOWEST_COST_WITH_MIN_ROAS} | Choose bid strategy for this campaign to suit your specific business goals.
Each strategy has tradeoffs and may be available for certain Notes:
|
budget_schedule_specs list<JSON or object-like arrays> | Initial high demand periods to be created with the campaign. |
buying_type string | Default value: AUCTION This field will help Facebook make optimizations to delivery, pricing, and limits. All ad sets in this campaign must match the buying type. Possible values are: |
campaign_optimization_type enum{NONE, ICO_ONLY} | campaign_optimization_type |
daily_budget int64 | Daily budget of this campaign. All adsets under this campaign will share this budget. You can either set budget at the campaign level or at the adset level, not both. |
execution_options list<enum{validate_only, include_recommendations}> | Default value: Set An execution setting |
is_skadnetwork_attribution boolean | To create an iOS 14 campaign, enable SKAdNetwork attribution for this campaign. |
is_using_l3_schedule boolean | is_using_l3_schedule |
iterative_split_test_configs list<Object> | Array of Iterative Split Test Configs created under this campaign . |
lifetime_budget int64 | Lifetime budget of this campaign. All adsets under this campaign will share this budget. You can either set budget at the campaign level or at the adset level, not both. |
name string | Name for this campaign Supports Emoji |
objective enum{APP_INSTALLS, BRAND_AWARENESS, CONVERSIONS, EVENT_RESPONSES, LEAD_GENERATION, LINK_CLICKS, LOCAL_AWARENESS, MESSAGES, OFFER_CLAIMS, OUTCOME_APP_PROMOTION, OUTCOME_AWARENESS, OUTCOME_ENGAGEMENT, OUTCOME_LEADS, OUTCOME_SALES, OUTCOME_TRAFFIC, PAGE_LIKES, POST_ENGAGEMENT, PRODUCT_CATALOG_SALES, REACH, STORE_VISITS, VIDEO_VIEWS} | Campaign's objective. If it is specified the API will validate that any ads created under the campaign match that objective. |
promoted_object Object | The object this campaign is promoting across all its ads. It’s required for Meta iOS 14+ app promotion (SKAdNetwork or Aggregated Event Measurement) campaign creation. Only |
source_campaign_id numeric string or integer | Used if a campaign has been copied. The ID from the original campaign that was copied. |
array<enum {NONE, EMPLOYMENT, HOUSING, CREDIT, ISSUES_ELECTIONS_POLITICS, ONLINE_GAMBLING_AND_GAMING, FINANCIAL_PRODUCTS_SERVICES}> | special_ad_categories Required |
array<enum {AD, AE, AF, AG, AI, AL, AM, AN, AO, AQ, AR, AS, AT, AU, AW, AX, AZ, BA, BB, BD, BE, BF, BG, BH, BI, BJ, BL, BM, BN, BO, BQ, BR, BS, BT, BV, BW, BY, BZ, CA, CC, CD, CF, CG, CH, CI, CK, CL, CM, CN, CO, CR, CU, CV, CW, CX, CY, CZ, DE, DJ, DK, DM, DO, DZ, EC, EE, EG, EH, ER, ES, ET, FI, FJ, FK, FM, FO, FR, GA, GB, GD, GE, GF, GG, GH, GI, GL, GM, GN, GP, GQ, GR, GS, GT, GU, GW, GY, HK, HM, HN, HR, HT, HU, ID, IE, IL, IM, IN, IO, IQ, IR, IS, IT, JE, JM, JO, JP, KE, KG, KH, KI, KM, KN, KP, KR, KW, KY, KZ, LA, LB, LC, LI, LK, LR, LS, LT, LU, LV, LY, MA, MC, MD, ME, MF, MG, MH, MK, ML, MM, MN, MO, MP, MQ, MR, MS, MT, MU, MV, MW, MX, MY, MZ, NA, NC, NE, NF, NG, NI, NL, NO, NP, NR, NU, NZ, OM, PA, PE, PF, PG, PH, PK, PL, PM, PN, PR, PS, PT, PW, PY, QA, RE, RO, RS, RU, RW, SA, SB, SC, SD, SE, SG, SH, SI, SJ, SK, SL, SM, SN, SO, SR, SS, ST, SV, SX, SY, SZ, TC, TD, TF, TG, TH, TJ, TK, TL, TM, TN, TO, TR, TT, TV, TW, TZ, UA, UG, UM, US, UY, UZ, VA, VC, VE, VG, VI, VN, VU, WF, WS, XK, YE, YT, ZA, ZM, ZW}> | special_ad_category_country |
spend_cap int64 | A spend cap for the campaign, such that it will not spend more than this cap. Defined as integer value of subunit in your currency with a minimum value of $100 USD (or approximate local equivalent). Set the value to 922337203685478 to remove the spend cap. Not available for Reach and Frequency or Premium Self Serve campaigns |
start_time datetime | start_time |
status enum{ACTIVE, PAUSED, DELETED, ARCHIVED} | Only |
stop_time datetime | stop_time |
topline_id numeric string or integer | Topline ID |
id
in the return type.id
: numeric string, success
: bool, Error | Description |
---|---|
100 | Invalid parameter |
80004 | There have been too many calls to this ad-account. Wait a bit and try again. For more info, please refer to https://developers.facebook.com/docs/graph-api/overview/rate-limiting#ads-management. |
200 | Permissions error |
190 | Invalid OAuth 2.0 Access Token |
2635 | You are calling a deprecated version of the Ads API. Please update to the latest version. |
368 | The action attempted has been deemed abusive or is otherwise disallowed |
2615 | Invalid call to update this adaccount |
300 | Edit failure |
/{campaign_id}
.Parameter | Description |
---|---|
adlabels list<Object> | Ad Labels associated with this campaign |
adset_bid_amounts JSON object {numeric string : int64} | A map of child adset IDs to their respective bid amounts required in the process of toggling campaign from autobid to manual bid |
adset_budgets array<JSON object> | An array of maps containing all the non-deleted child adset IDs and either daily_budget or lifetime_budget, required in the process of toggling between campaign budget and adset budget |
enum{LOWEST_COST_WITHOUT_CAP, LOWEST_COST_WITH_BID_CAP, COST_CAP, LOWEST_COST_WITH_MIN_ROAS} | Choose bid strategy for this campaign to suit your specific business goals.
Each strategy has tradeoffs and may be available for certain Notes:
|
budget_rebalance_flag boolean | Whether to automatically rebalance budgets daily for all the adsets under this campaign. |
campaign_optimization_type enum{NONE, ICO_ONLY} | campaign_optimization_type |
daily_budget int64 | Daily budget of this campaign. All adsets under this campaign will share this budget. You can either set budget at the campaign level or at the adset level, not both. |
execution_options list<enum{validate_only, include_recommendations}> | Default value: Set An execution setting |
is_skadnetwork_attribution boolean | Flag to indicate that the campaign will be using SKAdNetwork, which also means that it will only be targeting iOS 14.x and above |
is_using_l3_schedule boolean | is_using_l3_schedule |
iterative_split_test_configs list<Object> | Array of Iterative Split Test Configs created under this campaign . |
lifetime_budget int64 | Lifetime budget of this campaign. All adsets under this campaign will share this budget. You can either set budget at the campaign level or at the adset level, not both. |
name string | Name for this campaign Supports Emoji |
objective enum{APP_INSTALLS, BRAND_AWARENESS, CONVERSIONS, EVENT_RESPONSES, LEAD_GENERATION, LINK_CLICKS, LOCAL_AWARENESS, MESSAGES, OFFER_CLAIMS, OUTCOME_APP_PROMOTION, OUTCOME_AWARENESS, OUTCOME_ENGAGEMENT, OUTCOME_LEADS, OUTCOME_SALES, OUTCOME_TRAFFIC, PAGE_LIKES, POST_ENGAGEMENT, PRODUCT_CATALOG_SALES, REACH, STORE_VISITS, VIDEO_VIEWS} | Campaign's objective. If it is specified the API will validate that any ads created under the campaign match that objective. See the Outcome Ad-Driven Experience Objective Validation section below for more information. |
promoted_object Object | The object this campaign is promoting across all its ads. Only |
smart_promotion_type enum{GUIDED_CREATION, SMART_APP_PROMOTION} | smart_promotion_type |
array<enum {NONE, EMPLOYMENT, HOUSING, CREDIT, ISSUES_ELECTIONS_POLITICS, ONLINE_GAMBLING_AND_GAMING, FINANCIAL_PRODUCTS_SERVICES}> | special_ad_categories |
special_ad_category enum{NONE, EMPLOYMENT, HOUSING, CREDIT, ISSUES_ELECTIONS_POLITICS, ONLINE_GAMBLING_AND_GAMING, FINANCIAL_PRODUCTS_SERVICES} | special_ad_category |
array<enum {AD, AE, AF, AG, AI, AL, AM, AN, AO, AQ, AR, AS, AT, AU, AW, AX, AZ, BA, BB, BD, BE, BF, BG, BH, BI, BJ, BL, BM, BN, BO, BQ, BR, BS, BT, BV, BW, BY, BZ, CA, CC, CD, CF, CG, CH, CI, CK, CL, CM, CN, CO, CR, CU, CV, CW, CX, CY, CZ, DE, DJ, DK, DM, DO, DZ, EC, EE, EG, EH, ER, ES, ET, FI, FJ, FK, FM, FO, FR, GA, GB, GD, GE, GF, GG, GH, GI, GL, GM, GN, GP, GQ, GR, GS, GT, GU, GW, GY, HK, HM, HN, HR, HT, HU, ID, IE, IL, IM, IN, IO, IQ, IR, IS, IT, JE, JM, JO, JP, KE, KG, KH, KI, KM, KN, KP, KR, KW, KY, KZ, LA, LB, LC, LI, LK, LR, LS, LT, LU, LV, LY, MA, MC, MD, ME, MF, MG, MH, MK, ML, MM, MN, MO, MP, MQ, MR, MS, MT, MU, MV, MW, MX, MY, MZ, NA, NC, NE, NF, NG, NI, NL, NO, NP, NR, NU, NZ, OM, PA, PE, PF, PG, PH, PK, PL, PM, PN, PR, PS, PT, PW, PY, QA, RE, RO, RS, RU, RW, SA, SB, SC, SD, SE, SG, SH, SI, SJ, SK, SL, SM, SN, SO, SR, SS, ST, SV, SX, SY, SZ, TC, TD, TF, TG, TH, TJ, TK, TL, TM, TN, TO, TR, TT, TV, TW, TZ, UA, UG, UM, US, UY, UZ, VA, VC, VE, VG, VI, VN, VU, WF, WS, XK, YE, YT, ZA, ZM, ZW}> | special_ad_category_country |
spend_cap int64 | A spend cap for the campaign, such that it will not spend more than this cap. Defined as integer value of subunit in your currency with a minimum value of $100 USD (or approximate local equivalent). Set the value to 922337203685478 to remove the spend cap. Not available for Reach and Frequency or Premium Self Serve campaigns |
start_time datetime | start_time |
status enum{ACTIVE, PAUSED, DELETED, ARCHIVED} | Only |
stop_time datetime | stop_time |
success
: bool, Error | Description |
---|---|
100 | Invalid parameter |
200 | Permissions error |
80004 | There have been too many calls to this ad-account. Wait a bit and try again. For more info, please refer to https://developers.facebook.com/docs/graph-api/overview/rate-limiting#ads-management. |
2625 | The request for a reach frequency campaign is invalid. |
190 | Invalid OAuth 2.0 Access Token |
/{campaign_id}
.success
: bool, Error | Description |
---|---|
200 | Permissions error |
100 | Invalid parameter |
80004 | There have been too many calls to this ad-account. Wait a bit and try again. For more info, please refer to https://developers.facebook.com/docs/graph-api/overview/rate-limiting#ads-management. |
190 | Invalid OAuth 2.0 Access Token |
/act_{ad_account_id}/campaigns
.Parameter | Description |
---|---|
before_date datetime | Set a before date to delete campaigns before this date |
delete_strategy enum{DELETE_ANY, DELETE_OLDEST, DELETE_ARCHIVED_BEFORE} | Delete strategy Required |
object_count integer | Object count |
objects_left_to_delete_count
: unsigned int32, deleted_object_ids
: List [Error | Description |
---|---|
100 | Invalid parameter |
These older objectives are deprecated with the release of Marketing API v17.0. Please refer to the Outcome-Driven Ads Experiences mapping table below to find the new objectives and their corresponding destination types, optimization goals and promoted objects.
Your campaign objective choice can limit the settings available to you.
Certain campaign objectives support only certain ad set optimization_goals
. See Bidding Overview, Validation.
See our ads guide for a list of creatives supported per objective. In the API, the objective determines which ad creatives are valid.
Objective | Creative Fields |
---|---|
|
|
|
Notes:
|
|
|
|
|
|
Notes:
|
|
|
|
|
|
Note: Creative cannot include link ads pointing to an app store. |
|
|
Tracking specs are applied by default based on the objective specified, please see the full list of defaults by objective here.
There are two important scenarios to take into account:
CONVERSIONS
.To specify to track an install or app event, set the following in your ad:
tracking_specs=[{'action.type':['mobile_app_install'],'application':[{your_app_id}]},{'action.type':['app_custom_event'],'application':[{your_app_id}]}]
Certain objectives require the promoted_object
to be set in ad sets. See Promoted Object for more information.
Objective | Required promoted_object Fields |
---|---|
|
|
|
|
| For mobile app or Instant Experiences app engagement link clicks: |
|
|
|
|
|
|
Certain types of ad placements are valid only for specific objectives or creatives. See Business Help Center, Available ad placements for marketing objectives.
The table below shows some placements and their compatible objectives or creatives. You can pick a combination of those compatible placements. Note that:
LEAD_GENERATION
, device_platforms: desktop
cannot be selected together with publisher_platforms: instagram
.story
for facebook_positions
does not support destination_type: messenger
.story
for messenger_positions
does not support destination_type: messenger
. ig_search
and explore_home
for instagram_positions
do not support destination_type: whatsapp & messenger
.Objective | Creative | Placement |
---|---|---|
| Desktop app ads |
|
| Photo or video mobile app ads |
|
| all |
|
| Photo or video link ads from a page | We support
Exception: |
| Link ads not connected to a page |
|
| Photo or video mobile app ads |
|
| Event ads | As of 3.0, you cannot use |
| Page post ads |
As of 3.0, you cannot use |
| Page post ads |
instagram_positions: stream As of 3.0, you cannot use |
| Photo or video link ads from a page | All, including |
| Link ads not connected to a page |
|
| Desktop app ads |
|
| Photo or video mobile app ads |
|
| Video creatives |
As of 3.0, you cannot use |
| Page post ads with video or photo |
As of 3.0, you cannot use |
| Page post ads with text only |
As of 3.0, you cannot use |
| New campaign |
As of 3.0, you cannot use |
| dynamic ads | All, including |
| Reach ads | All except Includes |
| store visit ads |
As of 3.0, you cannot use |
| Video ads |
Includes As of 3.0, you cannot use |
attribution_spec
Use click-through and view-through attribution windows for ad set to track conversions then use for ads delivery optimization. This is different from the attribution window you use for ads reporting. With attribution_spec
, select a combination of click-through or view-through windows of 1 day or 7 days. The combinations you can use depend on your ad set's optimization_goal
and campaign's objective
.
Recommended Default attribution_spec
You may not have provided attribution_spec
when you created ads sets optimized for Value Optimization. This is an optimization available for conversions, app installs, and product catalog sales objectives. In the past, we defaulted to a 1-day click through attribution window.
Objective | Optimization Goal | Allowed Combination |
---|---|---|
|
| 1-day click 7-day click 1-day click and 1-day view 7-day click and 1-day view |
|
| 1-day click 7-day click ( |
|
| 1-day click 1-day click and 1-day view |
|
| Null click, Null view |
For all other optimization_goal
and objective
combinations, you can only use 1-day click for attribution_spec
.
The following are newer objectives:
OUTCOME_APP_PROMOTION
OUTCOME_AWARENESS
OUTCOME_ENGAGEMENT
OUTCOME_LEADS
OUTCOME_SALES
OUTCOME_TRAFFIC
These newer objectives will eventually replace the original objectives APP_INSTALLS
, BRAND_AWARENESS
, CONVERSIONS
, EVENT_RESPONSES
, LEAD_GENERATION
, LINK_CLICKS
, LOCAL_AWARENESS
, MESSAGES
, OFFER_CLAIMS
, PAGE_LIKES
, POST_ENGAGEMENT
, PRODUCT_CATALOG_SALES
, REACH
, STORE_VISITS
, VIDEO_VIEWS
. We will continue supporting these original objectives throughout 2022.
OUTCOME_APP_PROMOTION
, OUTCOME_AWARENESS
, OUTCOME_ENGAGEMENT
, OUTCOME_LEADS
, OUTCOME_SALES
, OUTCOME_TRAFFIC
) may throw an error.Outcome-Driven Ads Experiences
curl -X POST \ -F 'name="New ODAX Campaign"' \ -F 'objective="OUTCOME_ENGAGEMENT"' \ -F 'status="PAUSED"' \ -F 'special_ad_categories=[]' \ -F 'access_token=ACCESS_TOKEN \ https://graph.facebook.com/v11.0/ act_AD_ACCOUNT_ID/campaigns |
Legacy
curl -X POST \ -F 'name="New Campaign"' \ -F 'objective="APP_INSTALLS"' \ -F 'status="PAUSED"' \ -F 'special_ad_categories=[]' \ -F 'access_token=ACCESS_TOKEN \ https://graph.facebook.com/v11.0/ act_AD_ACCOUNT_ID/campaigns |
Old Objective | New Objective | Destination Type | Optimization Goal | Promoted Object |
---|---|---|---|---|
BRAND_AWARENESS | OUTCOME_AWARENESS | — | AD_RECALL_LIFT | page_id |
REACH | OUTCOME_AWARENESS | — | REACH | page_id |
IMPRESSIONS | page_id | |||
LINK_CLICKS | OUTCOME_TRAFFIC | — | LINK_CLICKS | application_id , object_store_url |
LANDING_PAGE_VIEWS | — | |||
REACH | application_id , object_store_url | |||
IMPRESSIONS | — | |||
MESSENGER | LINK_CLICKS | — | ||
REACH | — | |||
IMPRESSIONS | — | |||
WHATSAPP | LINK_CLICKS | page_id | ||
REACH | page_id | |||
IMPRESSIONS | page_id | |||
PHONE_CALL | QUALITY_CALL | — | ||
LINK_CLICKS | — | |||
POST_ENGAGEMENT | OUTCOME_ENGAGEMENT | ON_POST | POST_ENGAGEMENT | — |
REACH | — | |||
IMPRESSIONS | — | |||
PAGE_LIKES | OUTCOME_ENGAGEMENT | ON_PAGE | PAGE_LIKES | page_id |
EVENT_RESPONSES | OUTCOME_ENGAGEMENT | ON_EVENT | EVENT_RESPONSES | — |
POST_ENGAGEMENT | — | |||
REACH | — | |||
IMPRESSIONS | — | |||
APP_INSTALL | OUTCOME_APP_PROMOTION | — | LINK_CLICKS | application_id , object_store_url |
OFFSITE_CONVERSIONS | application_id , object_store_url | |||
APP_INSTALLS | application_id , object_store_url | |||
VIDEO_VIEWS | OUTCOME_AWARENESS | — | THRUPLAY | page_id |
TWO_SECOND_CONTINUOUS_VIDEO_VIEWS | page_id | |||
OUTCOME_ENGAGEMENT | ON_VIDEO | THRUPLAY | — | |
TWO_SECOND_CONTINUOUS_VIDEO_VIEWS | — | |||
LEAD_GENERATION | OUTCOME_LEADS | ON_AD | LEAD_GENERATION | page_id |
QUALITY_LEAD | page_id | |||
LEAD_FROM_MESSENGER | LEAD_GENERATION | page_id | ||
LEAD_FROM_IG_DIRECT | LEAD_GENERATION | page_id | ||
PHONE_CALL | QUALITY_CALL | page_id | ||
MESSAGES | OUTCOME_ENGAGEMENT | MESSENGER | CONVERSATIONS | page_id |
LINK_CLICKS | page_id | |||
MESSENGER | LEAD_GENERATION | page_id | ||
CONVERSIONS (See Available conversion locations and events by objective in Meta Ads Manager for more information on available conversion events by objective.) | OUTCOME_ENGAGEMENT | — | OFFSITE_CONVERSIONS | pixel_id , custom_event_type |
application_id , object_store_url | ||||
LINK_CLICKS | pixel_id , custom_event_type | |||
application_id , object_store_url | ||||
REACH | pixel_id , custom_event_type | |||
application_id , object_store_url | ||||
LANDING_PAGE_VIEWS | pixel_id , custom_event_type | |||
IMPRESSIONS | pixel_id , custom_event_type | |||
OUTCOME_LEADS | — | OFFSITE_CONVERSIONS | pixel_id , custom_event_type | |
application_id , object_store_url | ||||
LINK_CLICKS | pixel_id , custom_event_type | |||
application_id , object_store_url | ||||
REACH | pixel_id , custom_event_type | |||
application_id , object_store_url | ||||
LANDING_PAGE_VIEWS | pixel_id , custom_event_type | |||
IMPRESSIONS | pixel_id , custom_event_type | |||
OUTCOME_SALES | — | OFFSITE_CONVERSIONS | pixel_id , custom_event_type | |
application_id , object_store_url | ||||
MESSENGER | CONVERSATIONS | page_id , pixel_id , custom_event_type | ||
PHONE_CALL | QUALITY_CALL | page_id | ||
PRODUCT_CATALOG_SALES | OUTCOME_SALES | WEBSITE | LINK_CLICKS |
Campaign: product_catalog_id Ad set: product_set_id , custom_event_type |
STORE_VISITS | OUTCOME_AWARENESS | — | REACH | place_page_set_id |