Advantage+ Catalog Ads for Real Estate - Creating Ads
Updated: Jun 16, 2026
Copy for LLM
Ads in WhatsApp Status are available via the Marketing API. Learn more about ads in WhatsApp Status.
You create Advantage+ catalog ads for real estate in much the same way as regular Advantage+ catalog ads.
To create an Advantage+ catalog ad for real estate campaign, you need:
- A Facebook Page representing the advertiser.
- An ad account with registered payment information.
- A real estate audience available in your ad account.
- A home listing catalog, such as a home listing catalog available in your Meta Business Suite.
Every ad on Facebook must be part of an ad set, which defines its bidding and targeting, and the ad set must be part of a campaign, which defines its objective. You must create each level of a campaign in order to run ads.
Step 1. Create ad campaign
Advantage+ catalog ads for real estate use the
PRODUCT_CATALOG_SALES objective. You should specify a real estate catalog in promoted_object at the campaign level:curl \
-F 'name=DARE 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/<API_VERSION>/act_<AD_ACCOUNT_ID>/campaigns
Step 2. Create ad set
Create the ad set which defines the bidding and targeting options for your ads.
curl \
-F 'name=adset name' \
-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>, "custom_event_type": "PURCHASE" }' \
-F 'status=PAUSED' \
-F 'access_token=<ACCESS_TOKEN>' \
https://graph.facebook.com/<API_VERSION>/act_<AD_ACCOUNT_ID>/adsets
Step 3. Provide ad creative
Provide the Advantage+ catalog ads template creative, which is similar to ad creatives. The main difference is that you can add template parameters which Facebook uses at runtime based on data in your catalog and a person’s home listing interest.
As with Advantage+ catalog ads, define
template_data in object_story_spec in the ad creative. You can also use template_url to define a URL in a more flexible way instead of using the URL from the feed. If template_url cannot be constructed at ads rendering time, Meta falls back to the URL from the catalog.Below is an example to create a carousel creative for a home listing.
curl \
-F 'name=DARE creative' \
-F 'object_story_spec={
"page_id": "<PAGE_ID>",
"template_data": {
"description": "{{home_listing.name | titleize}}",
"link": "https://www.EXAMPLE.com",
"message": "HOME LISTINGS!!!",
"name": "{{home_listing.num_beds}} beds / {{home_listing.num_baths}} baths | {{home_listing.price strip_zeros}}"
}
}' \
-F 'product_set_id=<PRODUCT_SET_ID>' \
-F 'access_token=<ACCESS_TOKEN>' \
https://graph.facebook.com/<API_VERSION>/act_<AD_ACCOUNT_ID>/adcreatives
Creative format options
You can choose whether to show a single product or multiple products in a carousel. For single product ads, you can show multiple images in the carousel for that product. You can also display static cards in combination with dynamic cards. See Advantage+ catalog ads, Building a Creative Template.
Template tags
When Meta delivers your ad, it substitutes tags in
{{...}} with the relevant value.| Template tag | Description |
|---|---|
home_listing.description | Description of home listing |
home_listing.name | Name |
home_listing.num_beds | Number of beds |
home_listing.num_baths | Number of baths |
home_listing.num_units | Number of units |
home_listing.price | Price of the home listing |
home_listing.year_built | Year the home was built |
home_listing.city | City provided in catalog |
home_listing.country | Country provided in catalog |
home_listing.region | Region provided in catalog |
home_listing.street_address | Street address provided in catalog |
Step 4. Create the ad
Finally create your ad that delivers dynamic creative to the user based on your catalog:
curl \
-F 'name=DARE Alpha Ad' \
-F 'adset_id=<ADSET_ID>' \
-F 'creative={"creative_id":"<CREATIVE_ID>"}' \
-F 'tracking_specs=[{"action.type": ["offsite_conversion"],"fb_pixel": ["<PIXEL_ID>"]},{"action.type": ["post_engagement"],"page": ["<PAGE_ID>"],"post": ["<POST_ID>"]}]' \
-F 'status=PAUSED' \
-F 'access_token=<ACCESS_TOKEN>' \
https://graph.facebook.com/<API_VERSION>/act_<AD_ACCOUNT_ID>/ads
Your ad is now visible in Ads Manager and is in a paused state.