smart_promotion_type=AUTOMATED_SHOPPING_ADS field to create ASC campaigns. Instead, developers will need to use Advantage+ audience, Advantage+ campaign budget, and Advantage+ placements to create campaigns with an advantage_state that reflects the type of Advantage+ campaign. Refer to the Advantage+ Campaigns documentation to start creating Advantage+ campaigns today and avoid disruption with the releases of v24.0 and v.25.0.| Manual BAU Campaign Setup | Advantage+ Shopping Campaign |
|---|---|
Multiple BAU campaigns | BAU portfolio replacement |
Manual Targeting with 7 Targeting levers | Automated targeting, automation to increase setup efficiency with 1 country input |
Strict budget allocations in multiple campaigns | Budget liquidity within 1 campaign |
Test up to 50 creative combinations | Allows both dynamic and static ads with up to 150 creative combinations |
pixel_id to set up Advantage+ Shopping Campaignsexisting_customer_budget_percentage. We will also provide you with metrics reporting the performance of your campaigns among these different segments. This step is not required unless you plan on using existing_customer_budget_percentage.| Parameter | Description |
|---|---|
existing_customers
Array<string>
| Array of custom audience IDs that the ad account has access to. Currently the supported sources for the custom audience are website, app activity, customer list, catalog and offline activity.
For information on how to create a custom audience, refer to this page. |
curl -X POST \
-F 'existing_customers=[<CUSTOM_AUDIENCE_ID>, <CUSTOM_AUDIENCE_ID>]' \
-F 'access_token=<ACCESS_TOKEN>' \
https://graph.facebook.com/v25.0/act_<AD_ACCOUNT_ID>
POST request to
/act_{ad_account_id}/campaigns.OUTCOME_SALESAUTOMATED_SHOPPING_ADS to indicate that the campaign you’re creating is an ASC campaignOUTCOME_SALES campaign objective.| Parameter | Description |
|---|---|
namestring | Required Name for the Advantage+ shopping campaign |
objectiveenum | Required Campaign’s objective. Specify OUTCOME_SALES for this type of ad |
special_ad_categories
list<Object>
| Required Special ad categories associated with the Advantage+ shopping campaign |
adlabels
list<Object>
| Optional Ad Labels associated with the Advantage+ shopping campaign |
buying_typestring | Optional Advantage+ shopping campaigns only support the value AUCTION |
execution_options
list<enum>
| Optional Default value: set. Other options are:
If the call passes validation or review, the response will be {"success": true}. If the call does not pass, an error will be returned with more details. |
smart_promotion_typeenum | Required To specify this is an Advantage+ shopping campaign, the smart promotion type should be set to AUTOMATED_SHOPPING_ADS |
statusenum | Optional Valid options are: PAUSED and ACTIVE.If this status is PAUSED, all its active ad sets and ads will be paused and have an effective status CAMPAIGN_PAUSED |
curl -X POST \
-F 'name=Advantage+ Shopping Campaign' \
-F 'objective=OUTCOME_SALES' \
-F 'status=ACTIVE' \
-F 'special_ad_categories=[]' \
-F 'smart_promotion_type=AUTOMATED_SHOPPING_ADS' \
-F 'access_token=<ACCESS_TOKEN>' \
https://graph.facebook.com/v25.0/act_<AD_ACCOUNT_ID>/campaigns
{
"id": "<campaign_id>"
}
POST request to /{campaign_id}.| Parameter | Description |
|---|---|
namestring | Name for the Advantage+ shopping campaign |
special_ad_categories
list<Object>
| Special ad categories associated with the Advantage+ shopping campaign |
adlabels
list<Object>
| Ad Labels associated with the Advantage+ shopping campaign |
execution_options
list<enum>
| Default value: set. Other options are:
If the call passes validation or review, the response will be {"success": true}. If the call does not pass, an error will be returned with more details. |
topline_idnumeric string or integer | Topline ID |
statusenum | You can use the following status for an update API call:
If an ad campaign is set to PAUSED, its active child objects will be paused and have an effective status CAMPAIGN_PAUSED. |
curl -X POST \
-F 'name=Advantage+ Shopping Update Sample Campaign' \
-F 'status=PAUSED' \
-F 'access_token=<ACCESS_TOKEN>' \
https://graph.facebook.com/v25.0/<CAMPAIGN_ID>
GET request to /<AD_CAMPAIGN_ID> with the field smart_promotion_type.AUTOMATED_SHOPPING_ADS.curl -X GET -G \
-d 'fields=smart_promotion_type' \
-d 'access_token=<ACCESS_TOKEN>' \
https://graph.facebook.com/v25.0/<AD_CAMPAIGN_ID>
{
"smart_promotion_type": "AUTOMATED_SHOPPING_ADS",
"id": <AD_CAMPAIGN_ID>
}
POST request to /act_{ad_account_id}/adsets.regional_regulated_categories and regional_regulation_identities fields must be set to identify the name of the individual or organization paying for and/or benefitting from the ad. Please see the Ad Set documentation for more details.daily_budget or a lifetime_budget. If you choose to specify a lifetime_budget, you must also set the end_timepixel_id for your website and setting custom_event_type=PURCHASEbilling_event=IMPRESSIONS. This is the only supported billing event for ASC.| Parameter | Description |
|---|---|
campaign_idnumeric string or integer | Required A valid Advantage+ shopping campaign you wish to add this ad set to. |
namestring | Required Name for the Advantage+ shopping campaign |
promoted_objectObject | Required The object this ad set is promoting across all its ads. For Advantage+ shopping campaigns, provide:
Restrictions
There are 2 types of cross-channel conversion configurations in promoted_object. Cross-channel conversion is optional. For a Website-only conversion location, specify the pixel_id for your website and set custom_event_type=PURCHASE.
Learn more about and view configuration examples for cross-channel conversion optimization for Advantage+ shopping campaigns. |
targetingTargeting object | Required An Advantage+ shopping ad set’s targeting structure. Only geo_locations are allowed to be specified. |
geo_locationsarray | Required Used to limit the audience of the ad set by
|
daily_budgetint64 | Optional The daily budget defined in your account currency, allowed only for ad sets with a duration (difference between end_time and start_time) longer than 24 hours.
Either daily_budget or lifetime_budget must be greater than 0. |
lifetime_budgetint64 | Optional Lifetime budget, defined in your account currency. If specified, you must also specify an end_time.
Either daily_budget or lifetime_budget must be greater than 0. |
end_timedatetime | Required when lifetime_budget is specified.When creating an ad set with a daily_budget, specify end_time=0 to set the ad set as ongoing with no end date. UTC UNIX timestamp
Example: 2015-03-12 23:59:59-07:00 or 2015-03-12 23:59:59 PDT. |
optimization_goalenum | Optional Select OFFSITE_CONVERSIONS to target delivery to individuals more likely to take a specific action on your website.Select VALUE as the optimization goal if you want to target delivery to individuals who are more likely to make high-value purchases. In Ads Manager, we display Highest Value as your bid strategy.VALUE optimization goal is only available for Website conversion location and requires promoted_object to have a specified pixel_id for your website and the custom_event_type=PURCHASE. |
bid_strategyenum | Optional
Adherence to cost cap limits is not guaranteed. See Cost Cap. |
bid_amount | Required if bid_strategy is COST_CAP. |
bid_constraintsJSON object | Optional
|
billing_eventenum | Required A billing event for the ad set. Only IMPRESSIONS is supported for Advantage+ shopping campaigns. |
existing_customer_budget_percentagenumber | Optional Specifies the maximum percentage of the budget that can be spent on the existing customers associated with this ad account. Lower values may lead to higher costs per conversion. Valid values are between 0-100. |
adlabels
list<Object>
| Optional Specifies a list of labels to be associated with this object. |
start_timedatetime | Optional. The start time of the set. UTC UNIX timestamp Example: 2015-03-12 23:59:59-07:00 or 2015-03-12 23:59:59 PDT. |
time_startdatetime | Optional Time start |
time_stopdatetime | Optional Time stop |
attribution_spec
list<JSON Object>
| Optional Conversion attribution spec used for attributing conversions for optimization. |
curl -X POST \
-F 'name=Advantage+ Shopping Sample Ad Set' \
-F 'campaign_id=<CAMPAIGN_ID>' \
-F 'promoted_object={ "pixel_id": "<PIXEL_ID>", "CUSTOM_EVENT_TYPE": "PURCHASE" }' \
-F 'daily_budget=<NUM>' \
-F 'existing_customer_budget_percentage=<NUM>' \
-F 'billing_event=IMPRESSIONS' \
-F 'targeting={"geo_locations": {"countries": ["US"]}}' \
-F 'access_token=<ACCESS_TOKEN>' \
https://graph.facebook.com/v25.0/act_<AD_ACCOUNT_ID>/adsets
"id": "<adset_id>"
bid_strategy=COST_CAP:curl \
-F 'name=My Ad Set' \
-F 'optimization_goal=OFFSITE_CONVERSIONS \
-F 'billing_event=IMPRESSIONS'
-F 'bid_strategy=COST_CAP'
-F 'bid_amount=200' \
-F 'daily_budget=1000' \
-F 'campaign_id=<CAMPAIGN_ID>' \
-F 'targeting={"geo_locations":{"countries":["US"]}}' \
-F 'status=PAUSED' \
-F 'access_token=<ACCESS_TOKEN>' \
https://graph.facebook.com/<VERSION>/act_<AD_ACCOUNT_ID>/adsets
bid_strategy=LOWEST_COST_WITH_MIN_ROAS: curl \
-F 'name=My Ad Set' \
-F 'optimization_goal=OFFSITE_CONVERSIONS \
-F 'billing_event=IMPRESSIONS'
-F 'bid_strategy=LOWEST_COST_WITH_MIN_ROAS
-F 'bid_constraints={"roas_average_floor": 1000} \
-F 'daily_budget=1000' \
-F 'campaign_id=<CAMPAIGN_ID>' \
-F 'targeting={"geo_locations":{"countries":["US"]}}' \
-F 'status=PAUSED' \
-F 'access_token=<ACCESS_TOKEN>' \
https://graph.facebook.com/<VERSION>/act_<AD_ACCOUNT_ID>/adsets
| Parameter | Description |
|---|---|
adlabels
list<Object>
| Specifies a list of labels to be associated with this object. This field is optional. |
daily_budgetint64 | The daily budget defined in your account currency, allowed only for ad sets with a duration (difference between end_time and start_time) longer than 24 hours.
Either daily_budget or lifetime_budget must be greater than 0. |
existing_customer_budget_percentagenumber | Specifies the maximum percentage of the budget that can be spent on the existing customers associated with this ad account. Lower values may lead to higher costs per conversion. Valid values are between 0-100. |
end_timedatetime | End time, required when lifetime_budget is specified.
Example: 2015-03-12 23:59:59-07:00 or 2015-03-12 23:59:59 PDTWhen creating an ad set with a daily budget, specify end_time=0 to set the ad set as ongoing with no end date.
UTC UNIX timestamp. |
execution_options
list<enum>
| Default value: set. Other options are:
If the call passes validation or review, the response will be {"success": true}. If the call does not pass, an error will be returned with more details. |
start_timedatetime | The start time of the set. Must be provided in UTC UNIX timestamp.
Example: 2015-03-12 23:59:59-07:00 or 2015-03-12 23:59:59 PDT. |
statusenum | Available options for updates:
If it is set to PAUSED, all its active ads will be paused and have an effective status ADSET_PAUSED. |
lifetime_budgetint64 | Lifetime budget, defined in your account currency. If specified, you must also specify an end_time.
Either daily_budget or lifetime_budget must be greater than 0. |
time_startdatetime | Time start |
time_stopdatetime | Time stop |
targetingTargeting object | Targeting structure for your ad set. Valid values for targeting are geo_locations. |
geo_locationsarray | Required Used to limit the audience of the ad set by
|
attribution_spec
list<JSON Object>
| Optional Conversion attribution spec used for attributing conversions for optimization. |
curl -X POST \
-F 'name=Advantage+ Shopping Sample Updated Ad Set' \
-F 'access_token=<ACCESS_TOKEN>' \
https://graph.facebook.com/v25.0/<AD_SET_ID>
/act_{ad_account_id}/ads endpoint. Creating Ads in Advantage+ Shopping Campaigns follows the same process as in manual sales campaigns. Please refer to the links below to create Ads under Advantage+ Shopping Campaigns:| Parameter | Description |
|---|---|
namestring | Required Name of the ad |
adset_idint64 | Required The ID of the ad set, required on creation. |
creativeAdCreative | Required The creative spec or the ID of the ad creative to be used by this ad. Valid fields are:
You can read more about creatives here Provide the creative in the following format: {"creative_id": <CREATIVE_ID>}Or provide a creative spec: |
statusenum | Optional Only ACTIVE and PAUSED are valid during creation. During testing, it is recommended to set ads to a PAUSED status so as to not incur accidental spend. |
adlabels
list<Object>
| Optional Ad Labels associated with this ad |
execution_options
list<enum>
| Optional Default value: set.
If the call passes validation or review, the response will be {"success": true}. If the call does not pass, an error will be returned with more details. |
curl -X POST \
-F 'name=Advantage+ Shopping campaign Sample Ad' \
-F 'adset_id=<ADSET_ID>' \
-F 'creative={"name": <NAME>, "object_story_spec": <SPEC>}' \
-F 'access_token=<ACCESS_TOKEN>' \
https://graph.facebook.com/v25.0/act_<AD_ACCOUNT_ID>/ads
{
"ad_schedule_end_time": "2024-07-30T09:00:00+0100",
"ad_schedule_start_time": "2024-07-26T12:00:32+0100"
}
| Field | Description |
|---|---|
Required Use if you want to create a new unpublished page post and turn the post into an ad. The Page ID and the content to create a new unpublished page post. | |
use_page_actor_overrideAdCreative | Required If true, we display the Facebook page associated with the Advantage shopping ads. |
curl -X POST \
-F 'object_story_spec=<SPEC>' \
-F 'access_token=<ACCESS_TOKEN>' \
https://graph.facebook.com/v25.0/act_<AD_ACCOUNT_ID>/adcreatives
| Parameter | Description |
|---|---|
namestring | New name of the ad |
adlabels
list<Object>
| Ad labels associated with this ad. |
execution_options
list<enum>
| Default value: set. Other options are:
If the call passes validation or review, the response will be {"success": true}. If the call does not pass, an error will be returned with more details. |
statusenum | Options are:
During testing, it is recommended to set ads to a PAUSED status so as to not incur accidental spend. |
creativeAdCreative | The creative spec of the ad creative to be used by this ad. Valid fields are object_story_spec, asset_feed_spec, and use_page_actor_override and can be viewed here. You can read more about creatives hereProvide the creative in the following format: |
curl -X POST \
-F 'name=Advantage+ Shopping campaign Sample Update Ad' \
-F 'creative={"name": <NAME>, "object_story_spec": <SPEC>}' \
-F 'access_token=<ACCESS_TOKEN>' \
https://graph.facebook.com/v25.0/<AD_ID>
POST request to /act_{ad_account_id}/account_controls:age_min to a value between 18 - 25exclude_geo_locationsplacement_exclusionscurl -X POST \
-F 'audience_controls={
"age_min": 20,
"excluded_geo_locations": {"countries": ["US"]}' \
"geo_locations":{"countries": ["GB"]} \
-F 'placement_controls = {"placement_exclusions": ["facebook_marketplace"]} \
-F 'access_token=<ACCESS_TOKEN>' \
https://graph.facebook.com/v25.0/act_<AD_ACCOUNT_ID>/account_controls
{
"id": "<ad_account_business_constraints_id>",
"success": true
}