Advantage+ shopping campaigns is a solution that enables ecommerce and retail direct-to-consumer and brand advertisers to potentially achieve better performance, greater personalization and more efficiency. These campaigns provide greater flexibility to control levers such as creative, targeting, placements and budget, and more opportunities to optimize campaigns that drive conversions.
Advantage+ Shopping Campaigns empower advertisers to use automation and AI to:
It replaces a portfolio of manual sales campaigns using a combination of targeting, bidding, destination, creative, placement and budget set-ups within a single campaign to test up to 150 different combinations and optimize for the highest performing ads.
Learn more about the context and benefits of ASC in our blog.
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 |
This document outlines the steps you need to follow to set up your integration for Advantage+ shopping campaigns. You will need to:
pixel_id
to set up Advantage+ Shopping CampaignsLearn more about Cross-Channel Conversion Optimization for Advantage+ shopping campaigns.
Optionally, Advantage+ shopping campaigns allow you to define your existing customers as a collection of custom audience IDs. Your existing customers are users who are already familiar with your business/product. Once this definition is set up, you can use this to segment your budget for Advantage+ shopping campaigns to limit spend on existing customers via existing_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 |
---|---|
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/v21.0
/act_<AD_ACCOUNT_ID>
For more information on tracking new and existing audiences in third-party tracking tools, see Audience Type URL Parameters.
Start by creating your ad campaign. To do this, make a POST
request to
/act_{ad_account_id}/campaigns
.
OUTCOME_SALES
AUTOMATED_SHOPPING_ADS
to indicate that the campaign you’re creating is an ASC campaignASC can be created only with the OUTCOME_SALES
campaign objective.
Parameter | Description |
---|---|
| Required |
| Required |
list<Object> | Required |
list<Object> | Optional |
| Optional |
list<enum> | Optional
If the call passes validation or review, the response will be |
| Required |
| Optional If this status is |
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/v21.0
/act_<AD_ACCOUNT_ID>/campaigns
{ "id": "<campaign_id>" }
You can update a Campaign by making a POST
request to /{campaign_id}
.
Parameter | Description |
---|---|
| Name for the Advantage+ shopping campaign |
list<Object> | Special ad categories associated with the Advantage+ shopping campaign |
list<Object> | Ad Labels associated with the Advantage+ shopping campaign |
list<enum> | Default value:
If the call passes validation or review, the response will be |
| Topline ID |
| You can use the following status for an update API call:
If an ad campaign is set to |
curl -X POST \
-F 'name=Advantage+ Shopping Update Sample Campaign' \
-F 'status=PAUSED' \
-F 'access_token=<ACCESS_TOKEN>' \
https://graph.facebook.com/v21.0
/<CAMPAIGN_ID>
To verify that you have successfully created an Advantage+ shopping campaign, you can make a GET
request to /<AD_CAMPAIGN_ID>
with the field smart_promotion_type
.
A valid Advantage+ shopping campaign will return the field value AUTOMATED_SHOPPING_ADS
.
curl -X GET -G \
-d 'fields=smart_promotion_type' \
-d 'access_token=<ACCESS_TOKEN>' \
https://graph.facebook.com/v21.0
/<AD_CAMPAIGN_ID>
{ "smart_promotion_type": "AUTOMATED_SHOPPING_ADS", "id": <AD_CAMPAIGN_ID> }
Once you have completed the campaign creation, you can create an ASC ad set. Make a POST
request to /act_{ad_account_id}/adsets.
Only one Ad Set can be associated with each ASC campaign.
For a lightweight Ad Set creation:
daily_budget
or a lifetime_budget.
If you choose to specify a lifetime_budget
, you must also set the end_time
pixel_id
for your website and setting custom_event_type=PURCHASE
billing_event=IMPRESSIONS.
This is the only supported billing event for ASC.Parameter | Description |
---|---|
| Required |
| Required |
| Required
Restrictions
There are 2 types of cross-channel conversion configurations in
Learn more about and view configuration examples for cross-channel conversion optimization for Advantage+ shopping campaigns. |
| Required |
| Required
|
| Optional Either |
| Optional Either |
| Required when Example: |
| Optional Select
|
| Optional
Adherence to cost cap limits is not guaranteed. See Cost Cap. |
| Required if bid_strategy is |
| Optional
|
| Required |
| Optional |
list<Object> | Optional Specifies a list of labels to be associated with this object. |
| Optional. Example: |
| Optional Time start |
| Optional Time stop |
list<JSON Object> | Optional |
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/v21.0
/act_<AD_ACCOUNT_ID>/adsets
Example Response
"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
You can update an Ad Set by making a POST
request to /{ad_set_id}
.
Parameter | Description |
---|---|
list<Object> | Specifies a list of labels to be associated with this object. This field is optional. |
| The daily budget defined in your account currency, allowed only for ad sets with a duration (difference between Either |
| 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 time, required when Example: When creating an ad set with a daily budget, specify UTC UNIX timestamp. |
list<enum> | Default value:
If the call passes validation or review, the response will be |
| The start time of the set. Must be provided in UTC UNIX timestamp. Example: |
| Available options for updates:
If it is set to |
| Lifetime budget, defined in your account currency. If specified, you must also specify an Either |
| Time start |
| Time stop |
| Targeting structure for your ad set. Valid values for targeting are |
| Required
|
list<JSON Object> | Optional |
curl -X POST \
-F 'name=Advantage+ Shopping Sample Updated Ad Set' \
-F 'access_token=<ACCESS_TOKEN>' \
https://graph.facebook.com/v21.0
/<AD_SET_ID>
Once you have an ad set, you can create your ad by posting to the /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 |
---|---|
| Required |
| Required |
| Required
You can read more about creatives here Provide the creative in the following format:
Or provide a creative spec: { "creative": { "name": <NAME>, "object_story_spec": <SPEC>, "product_set_id": <PRODUCT_SET_ID> } } |
| Optional |
list<Object> | Optional |
list<enum> | Optional
If the call passes validation or review, the response will be |
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/v21.0
/act_<AD_ACCOUNT_ID>/ads
Individual Ad Scheduling allows advertisers to have more granular control to run their Ads during a specific time period by scheduling the start and end time. This feature is available for all campaign types.
{ "ad_schedule_end_time": "2024-07-30T09:00:00+0100", "ad_schedule_start_time": "2024-07-26T12:00:32+0100" }
These are the parameters.
For a full list of Ad Creative fields, see here.
Field | Description |
---|---|
| Required |
| Required |
curl -X POST \
-F 'object_story_spec=<SPEC>' \
-F 'access_token=<ACCESS_TOKEN>' \
https://graph.facebook.com/v21.0
/act_<AD_ACCOUNT_ID>/adcreatives
You can update an Ad by making a POST
request to /{ad_id}
.
Parameter | Description |
---|---|
| New name of the ad |
list<Object> | Ad labels associated with this ad. |
list<enum> | Default value:
If the call passes validation or review, the response will be |
| Options are:
During testing, it is recommended to set ads to a |
| The creative spec of the ad creative to be used by this ad. Valid fields are Provide the creative in the following format: { "creative": { "name": <NAME>, "object_story_spec": <SPEC>, "product_set_id": <PRODUCT_SET_ID> } } |
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/v21.0
/<AD_ID>
If your business has constraints, such as unable to show ads to people under a certain age, or is restricted to some countries, you can use Ad Account controls to choose how your ads are delivered. These constraints will apply across all new and existing campaigns (manual sales and ASC) across the account.
You can set the following optional features at the Ad Account Control level:
1. Minimum Age Constraint: You can set the minimum age from 18 to 25. You cannot set the maximum age.
2. Exclude Geo Locations: You can exclude certain locations from ad delivery based on country, state/province, city, DMA or zip code. See targeting search for available values.
3. Geo Inclusions: You can include locations at the country level.
4. Placement Exclusions: You can exclude certain placements to prevent ads appearing on specific surfaces. Available placements for exclusions are Audience Network, Facebook Marketplace, and Facebook’s Right Column. See available values on the Marketing API.
Make a POST
request to /act_{ad_account_id}/account_controls
:
Set age_min
to a value between 18 - 25
Exclude locations you do not want your Ads to deliver in using exclude_geo_locations
Exclude ad placements where you do not want your Ads to appear using placement_exclusions
Include a specific country
curl -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/v21.0
/act_<AD_ACCOUNT_ID>/account_controls
{ "id": "<ad_account_business_constraints_id>", "success": true }