Advantage+ Catalog Ads for Lead Generation
Updated: May 21, 2026
Copy for LLM
Ads in WhatsApp Status are available via the Marketing API. Learn more about ads in WhatsApp Status.
Generate leads with your Advantage+ catalog ads. If you have a product catalog ready and run Advantage+ catalog ads, you can collect leads with your ads on Facebook. Facebook selects the most relevant items in your product set, as with all Advantage+ catalog ads, and displays a lead generation form when someone clicks on an item.
When you download leads via the API or as a file, the response includes a
retailer_item_id. This indicates which items someone clicked on and submitted their lead information for.Create Advantage+ catalog ads for lead generation
Create a campaign with the
objective set to OUTCOME_LEADS.curl -X POST \
-F 'name="Lead generation campaign"' \
-F 'objective="OUTCOME_LEADS"' \
-F 'status="PAUSED"' \
-F 'special_ad_categories=[]' \
-F 'is_adset_budget_sharing_enabled=0' \
-F 'access_token=<ACCESS_TOKEN>' \
https://graph.facebook.com/v26.0/act_<AD_ACCOUNT_ID>/campaigns
This returns a
campaign_id you can use for your ad set.As with all Advantage+ catalog ads, you must specify a
product_set_id in promoted_object for your ad set. This enables you to advertise products from that set. For lead generation, set the optimization_goal to LEAD_GENERATION.curl \
-F 'name=Product Catalog Sales Adset' \
-F 'bid_amount=3000' \
-F 'billing_event=IMPRESSIONS' \
-F 'optimization_goal=LEAD_GENERATION' \
-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>","page_id":"<PAGE_ID>"}' \
-F 'status=PAUSED' \
-F 'access_token=<ACCESS_TOKEN>' \
https://graph.facebook.com/v26.0/act_<AD_ACCOUNT_ID>/adsets
DYNAMIC_AUDIENCE_ID refers to a Product Audience that views your ads. You can omit DYNAMIC_AUDIENCE_IDs and instead set behavioral or demographic-based targeting to reach an audience by providing the product_audience_specs or excluded_product_audience_specs parameter.See Advantage+ catalog ads for more information.
Provide the ad and creative
First, provide ad creative:
curl \
-F 'name=Dynamic Ad With Leadgen Template Creative Sample' \
-F 'object_story_spec={
"page_id": "<PAGE_ID>",
"template_data": {
"call_to_action": {"type":"SIGN_UP","value":{"lead_gen_form_id":"<FORM_ID>"}},
"description": "Description {{product.description}}",
"link": "<LINK>",
"message": "Test {{product.name | titleize}}",
"multi_share_end_card": false,
"name": "Headline {{product.price}}"
}
}' \
-F 'product_set_id=<PRODUCT_SET_ID>' \
-F 'access_token=<ACCESS_TOKEN>' \
https://graph.facebook.com/v26.0/act_<AD_ACCOUNT_ID>/adcreatives
This returns the
creative_id you can use to create or update an 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/v26.0/act_<AD_ACCOUNT_ID>/ads
Fetch leads
If you have the lead ID from a CRM integration, you can ask for the details including
item_id.curl -G \
-d 'fields=field_data,retailer_item_id' \
-d 'access_token=<ACCESS_TOKEN>' \
https://graph.facebook.com/v26.0/<LEAD_ID>
You can also bulk query all the leads for a form:
curl -G \
-d 'fields=field_data,retailer_item_id' \
-d 'access_token=<ACCESS_TOKEN>' \
https://graph.facebook.com/v26.0/<FORM_ID>/leads
Or for an ad:
curl -X GET \
-d 'fields="field_data,retailer_item_id"' \
-d 'access_token=<ACCESS_TOKEN>' \
https://graph.facebook.com/v26.0/<AD_ID>/leads