Ads and Commerce

Build a Real Estate Audience

Updated: Jun 16, 2026
Copy for LLM
Ads in WhatsApp Status are available via the Marketing API. Learn more about ads in WhatsApp Status.
Beginning with the release of Marketing API v15.0, you will no longer be able to create Special Ad Audiences. See Special Ad Audiences for more information.
Create a real estate audience:

Step 1: Set up user signals for real estate events

These are predefined event names you can send from your website or app that allow you to both measure the performance of your campaigns and to capture intent from your audiences. See Facebook Pixel Setup.
Real estate ads require these standard events from your website pixel and mobile app:
Pixel Event App Event Requirement Level Description
Search
fb_mobile_search
Someone searched home listings
ViewContent
fb_mobile_content_view
Someone viewed a specific listing
InitiateCheckout
fb_mobile_initiated_checkout
Someone saved, liked, or showed special interest in a listing
Purchase
fb_mobile_purchase
Someone contacted an agent about a listing
  • Required: Ads will not work without these parameters.
  • Recommended: Not strictly required but enables better recommendations and more targeting options for your ads. Provide as many as possible.
  • Not Required: Not required and may be ignored.
For example, to report a Search event for a listing using FB pixel or App events, place this code on your search-results page:
<!-- Facebook Pixel Code -->
<script>
!function(f,b,e,v,n,t,s){if(f.fbq)return;n=f.fbq=function(){n.callMethod?
n.callMethod.apply(n,arguments):n.queue.push(arguments)};if(!f._fbq)f._fbq=n;
n.push=n;n.loaded=!0;n.version='2.0';n.queue=[];t=b.createElement(e);t.async=!0;
t.src=v;s=b.getElementsByTagName(e)[0];s.parentNode.insertBefore(t,s)}(window,
document,'script','https://connect.facebook.net/en_US/fbevents.js');

// Insert Your Facebook Pixel ID below.
fbq('init', '<FB_PIXEL_ID>');

fbq('track', 'Search', {
  content_type: 'home_listing',
  content_ids: ['1234', '2345', '3456', '4567'], // Top search results
  city: 'New York City', //Required for Search event
  region: 'New York', // region is the state for the US. Required for Search event
  country: 'US', //Required for Search event
} );
</script>
<!-- End Facebook Pixel Code -->

Once you determine which events should fire, you should provide each event’s parameters.

Event parameters

The table below lists required and recommended parameters.
Pixel Parameter Mobile Parameter Requirement Level
content_ids
fb_content_id
content_type
fb_content_type
lease_start_date
lease_end_date
preferred_baths_range
preferred_beds_range
preferred_price_range
currency
fb_currency
property_type
listing_type
availability
city
fb_city
neighborhood
region
fb_region
country
fb_country

Parameter details

Parameter Name Data Type Description
availability
string
Value must be available_soon, for_rent, for_sale, off_market, recently_sold or sale_pending.
city
string
Provide the user’s city of interest, such as 'Menlo Park'
content_ids
string or string[]
Any IDs in your listing catalog. For example, for ViewContent event, send the ID of the item viewed, or for Search send an array of IDs for top results: ['1234', '2345', '3456', '4567']
content_type
string or string[]
For example:
  • 'home_listing'
  • ['home_listing', 'product']
  • ['home_listing', 'hotel']
country
string
Target country of interest, such as 'United States'
currency
string
Specify the currency using ISO 4217 currency format: 'USD'
lease_start_date
string
Allows us to recommend properties based on their date availability (using available_dates_price_config in the catalog), and improve the user landing experience (using template tags). Specified using ISO 8601 date format: 'YYYY-MM-DD' (for example, 2018-01-01).
lease_end_date
string
Specified using ISO 8601 date format: 'YYYY-MM-DD' (for example, '2018-02-01').
listing_type
string
Value must be for_rent_by_agent, for_rent_by_owner, for_sale_by_agent, for_sale_by_owner, foreclosed, new_construction or new_listing.
neighborhood
string
Neighborhood of interest: 'Menlo Oaks'
preferred_baths_range
[int(min), int(max)]
Number of bathrooms chosen as range: [1, 2]
preferred_beds_range
[int(min), int(max)]
Number of bedrooms chosen as range: [1, 2]
preferred_price_range
[float(min), float(max)]
Price range: [1000.99, 2000.99]
property_type
string
Must be apartment, condo, house, land, manufactured, other or townhouse.
region
string
State, district, or region of interest: 'California'

Step 2: Associate signals to listing catalog

Associate your event sources with each of your listing catalogs. See Business Manager’s Catalog Page To select the pixel and app via API which send events, make an HTTP POST:
curl \
  -F '0=<PIXEL_ID>' \
  -F '1=<APP_ID>' \
  -F 'access_token=<ACCESS_TOKEN>' \
https://graph.facebook.com/<API_VERSION>/<PRODUCT_CATALOG_ID>/external_event_sources

Specify these parameters:
Field Name Data Type Description
external_event_sources (required)
int[]
List of Pixel and App IDs to associate with the catalog.

Step 3: Create and share real estate event source groups

To build an audience, an admin for your business must create an event source group. This groups all of your sources that send listing interest signals. Make an HTTP POST:
curl \
  -F 'name=My Real Estate Company Events' \
  -F 'event_sources=['<PIXEL_ID>','<APP_ID>']' \
  -F 'access_token=<ACCESS_TOKEN>' \
https://graph.facebook.com/<API_VERSION>/<BUSINESS_ID>/event_source_groups

Then share this event source group to any ad accounts that will run ads to audiences generated by these event sources. Make an HTTP POST:
curl \
  -F 'accounts=['<ACCOUNT_ID_WITHOUT_ACT>']' \
  -F 'access_token=<ACCESS_TOKEN>' \
https://graph.facebook.com/<API_VERSION>/<EVENT_SOURCE_GROUP_ID>/shared_accounts

Step 4: Create Audiences

At this point you have signals from pixels or app events set up and associated with an event source group and your real estate catalog. To target people interested in your listings, create a dynamic audience of people. Include or exclude people from the audience based on the intent signals. You can also apply additional rule-based filters to customize your audience as you do with Website Custom Audiences. See Custom Audiences.
To set up a new audience, make an HTTP POST to /act_<AD_ACCOUNT_ID>/customaudiences.

Required parameters

Field Name Data Type Description
name
string
Audience name.
subtype
enum {CLAIM}
Type of custom audience. Must be set to CLAIM.
claim_objective
enum {HOME_LISTING}
Objective of audience. Must be set to HOME_LISTING.
event_source_group
id
Event source group to build audience.
inclusions
object[]
Array of JSON objects. Lists each intent signal that makes someone eligible for this audience.
inclusions: event (required)
enum { Search, ViewContent, InitiateCheckout, Purchase }
Event name of a signal. Used for inclusion in audience: {'event': 'Search', …}.
inclusions: retention (required)
object
Minimum and maximum amount of time since Meta received the event. Determines whether to consider the event for inclusion. Example: {…, 'retention': {'min_seconds': 0, 'max_seconds': 259200}, …}. Retention must be at least 4 hours.
inclusions: count
JSON operators
Number of times event fired. You can use both equality and numeric comparison operators such as {…'count': {'lte': 3}, …}.

Optional parameters

Field Name Data Type Description
content_type
enum {HOME_LISTING}
Type of signals used to build this audience.
description
string
Description of audience.
exclusions
object[]
Array of JSON objects listing each intent signal that excludes someone from this audience.
exclusions: event (required)
enum { Search, ViewContent, InitiateCheckout, Purchase }
Event name of a signal used for exclusion: {'event': 'Search', …}.
exclusions: retention (required)
object
Minimum and maximum amount of time since Meta received the event. Determines whether to consider the event for exclusion, for example, {…, 'retention': {'min_seconds': 0, 'max_seconds': 259200}, …}. Retention must be at least 4 hours.
rule
object
Audience Rule from Website Custom Audiences. Filter event stream by these rules before any inclusions and exclusions processed.
See a list of specific fields available. You can use these with any of standard JSON Operators for Audience Rules.
rule: home_listing_set_id (required)
object
Listing set ID: {'eq': '1234'}}
For example, to create an audience that targets people who viewed or purchased in the last 14 days:
curl \
  -F 'name=Viewed or Purchased Last 14 days' \
  -F 'subtype=CLAIM' \
  -F 'claim_objective=HOME_LISTING' \
  -F 'content_type=HOME_LISTING' \
  -F 'event_source_group=<EVENT_SOURCE_GROUP_ID>' \
  -F 'rule={"home_listing_set_id":{"eq":"<HOME_LISTING_SET_ID>"}}' \
  -F 'inclusions=[
    {
      "event": "ViewContent",
      "count": {"gt":0},
      "retention": {"min_seconds":0,"max_seconds":1209600}
    },
    {
      "event": "Purchase",
      "count": {"gt":0},
      "retention": {"min_seconds":0,"max_seconds":1209600}
    }
  ]' \
  -F 'access_token=<ACCESS_TOKEN>' \
https://graph.facebook.com/<API_VERSION>/act_<AD_ACCOUNT_ID>/customaudiences