Automotive Ads - Ads Management
Updated: Nov 10, 2025
This guide assumes you have a catalog and product set ready, and have set up the required vehicle events on your website or in your mobile app. If not, see
catalog setup and
event setup.
- Choose
PRODUCT_CATALOG_SALES as the campaign objective. - Specify a vehicle catalog in
promoted_object at the campaign level.
curl \
-F 'name=Product Catalog Sales Campaign' \
-F 'objective=PRODUCT_CATALOG_SALES' \
-F 'promoted_object={"product_catalog_id":"<PRODUCT_CATALOG_ID>"}' \
-F 'status=PAUSED' \
-F 'access_token=<ACCESS_TOKEN>' \
https://graph.facebook.com/v25.0/act_<AD_ACCOUNT_ID>/campaigns
Once you have the campaign and the
campaign_id, you can create the
ad set. The ad set defines the bidding and targeting options for your ads.
If you don’t specify destination_type at the ad set level, your ads’ default destination is the website URL specified in your catalog.
Retarget website visitors who have viewed vehicles in your defined product set.
curl \
-F 'name=Product Catalog Sales Adset' \
-F 'bid_amount=3000' \
-F 'billing_event=IMPRESSIONS' \
-F 'optimization_goal=OFFSITE_CONVERSIONS' \
-F 'daily_budget=15000' \
-F 'campaign_id=<CAMPAIGN_ID>' \
-F 'targeting={
"geo_locations": {"countries":["US"]},
"dynamic_audience_ids": ["<DYNAMIC_AUDIENCE_ID>"]
}' \
-F 'promoted_object={"product_set_id":"<PRODUCT_SET_ID>"}' \
-F 'status=PAUSED' \
-F 'access_token=<ACCESS_TOKEN>' \
https://graph.facebook.com/v25.0/act_<AD_ACCOUNT_ID>/adsets
Automotive ads
do not support inline dynamic audience targeting specs in the Ad Set. You must first separately
create an audience.
Step 3. Create Ad Creative
You can use
template tags in your
ad creatives for automotive ads. When Facebook displays your ad, we replace template tags with actual vehicle choices. You can use template tags in the ad and in the URL. The template tags are visible when someone clicks the ad.
- Use these fields in the template tag:
vehicle.city, vehicle.dealer_name, vehicle.description, vehicle.make, vehicle.mileage, vehicle.model, vehicle.price, vehicle.region, vehicle.sale_price, vehicle.title, vehicle.url, vehicle.year, etc. - Use double curly brackets
{{....}} with the template tags. - Before using template tags, make sure you provide all required details through your vehicle events. For example, the title of your ad could be: Checkout great deals from
{{dealer_name}}. - Use the
template_url_spec field to specify the URL that appears after someone clicks the ad. If you don’t provide it, or we can’t derive it when we render an ad, we display the URL from the catalog. - You can show a single product or a carousel with multiple products. For single-product ads, you can show multiple images of the same product in the carousel, assuming your catalog contains multiple images for each product. You can also display static cards in combination with dynamic cards.
Example - Create a carousel creative for automotive ads
use FacebookAds\Object\AdCreative;
use FacebookAds\Object\Fields\AdCreativeFields;
use FacebookAds\Object\Fields\AdCreativeLinkDataFields;
use FacebookAds\Object\Fields\AdCreativeObjectStorySpecFields;
use FacebookAds\Object\Values\AdCreativeCallToActionTypeValues;
use FacebookAds\Object\AdCreativeObjectStorySpec;
use FacebookAds\Object\AdCreativeLinkData;
$object_story_spec = new AdCreativeObjectStorySpec();
$object_story_spec->setData(array(
AdCreativeObjectStorySpecFields::PAGE_ID => <PAGE_ID>,
AdCreativeObjectStorySpecFields::TEMPLATE_DATA =>
(new AdCreativeLinkData())->setData(array(
AdCreativeLinkDataFields::MESSAGE =>
'Check out these vehicles from {{dealer_name}}',
AdCreativeLinkDataFields::NAME => '{{vehicle.year}} {{vehicle.make}} {{vehicle.model}}',
AdCreativeLinkDataFields::LINK => '{{vehicle.url}}',
AdCreativeLinkDataFields::DESCRIPTION =>
'{{vehicle.description}}',
AdCreativeLinkDataFields::ADDITIONAL_IMAGE_INDEX => 0,
AdCreativeLinkDataFields::CALL_TO_ACTION => array(
'type' => AdCreativeCallToActionTypeValues::LEARN_MORE,
),
)),
));
$creative = new AdCreative(null, 'act_<AD_ACCOUNT_ID>');
$creative->setData(array(
AdCreativeFields::NAME => 'Advantage+ Catalog Ad Template Creative Sample',
AdCreativeFields::OBJECT_STORY_SPEC => $object_story_spec,
AdCreativeFields::TEMPLATE_URL_SPEC =>
array(
'web' => array(
'url' => 'http://www.example.com/vehicle'.
'?id={{vehicle_id | urlencode}}',
)
),
AdCreativeFields::PRODUCT_SET_ID => <PRODUCT_SET_ID>,
));
$creative->create();
Use the
ad_set_id and the
creative_id to create the
ad.
curl -X POST \
-F 'name="My Ad"' \
-F 'adset_id="<AD_SET_ID>"' \
-F 'creative={
"creative_id": "<CREATIVE_ID>"
}' \
-F 'status="PAUSED"' \
-F 'access_token=<ACCESS_TOKEN>' \
https://graph.facebook.com/v25.0/act_<AD_ACCOUNT_ID>/ads
You can generate a preview of your Advantage+ creative for catalog with the
Ad Previews API. Include the
product_item_ids parameter to specify which catalog items will display in the preview.
Generate a preview of your ad with the
Ad Previews API. Include the
product_item_ids to specify which catalog items displays in the preview, and
start_date and
end_date to specify specific dates.
use FacebookAds\Object\AdCreative;
use FacebookAds\Object\Fields\AdPreviewFields;
use FacebookAds\Object\Values\AdPreviewAdFormatValues;
$creative = new AdCreative(<CREATIVE_ID>);
$preview = $creative->getPreviews(array(), array(
AdPreviewFields::AD_FORMAT => AdPreviewAdFormatValues::DESKTOP_FEED_STANDARD,
AdPreviewFields::PRODUCT_ITEM_IDS => array(
'<VEHICLE_FBID>',
),
));