Facebook Page Visit Ads
Updated: Jul 12, 2026
Copy for LLM
Ads in WhatsApp Status are available via the Marketing API. Learn more about ads in WhatsApp Status.
Profile visit ad creation on the Marketing API is in limited availability and is being rolled out incrementally to advertisers. If you do not have access, contact your Meta representative or create profile visit ads in Ads Manager.
This guide explains how to create and publish Facebook Page visit ads using the Marketing API.
Facebook Page visit ads send people who click on your ads directly to your Facebook Page. Use these ads to increase visits to your Page, Page likes, and engagement with your Facebook community.
If you want to create an ad that sends people to an Instagram profile instead, or to both Facebook and Instagram, see:
Ad creation overview
This document outlines the steps you need to follow to set up your integration for Facebook Page visit ads. You will need to:
- Create an ad campaign
- Create an ad set that links your ads to your ad campaign
- Create an ad creative for the Facebook Page visit ad
- Create an ad by linking your ad creative to your ad set
Before you begin
This guide assumes you have:
- An ad account with Meta
- A Facebook Page you have permission to advertise for
- Uploaded any assets, such as images or videos, to be used in your ads to Meta servers
Step 1: Create an ad campaign
Start by creating your ad campaign. To do this, make a
POST request to the /act_<AD_ACCOUNT_ID>/campaigns endpoint where <AD_ACCOUNT_ID> is the ID for your Meta ad account. Your request must include:Parameters
| Name | Description |
|---|---|
name
string
| Required. Name for the Facebook Page visit campaign. |
objective
enum
| Required. Campaign’s objective. Supported objectives are OUTCOME_ENGAGEMENT and OUTCOME_TRAFFIC. |
special_ad_categories
list<Object>
| Required. Special ad categories associated with the Facebook Page visit campaign. Currently, special ad categories aren’t supported for profile visit ads, so it needs to be NONE or empty array. See the Ad Campaign reference for more details. |
status
enum
| Optional. Valid options are PAUSED and ACTIVE.If this status is PAUSED, Meta pauses all active ad sets and ads and gives them an effective status CAMPAIGN_PAUSED. |
Request
curl -X POST \
-F 'name=Facebook Page Visit Campaign' \
-F 'objective=OUTCOME_TRAFFIC' \
-F 'status=ACTIVE' \
-F 'special_ad_categories=[]' \
-F 'access_token=<ACCESS_TOKEN>' \
https://graph.facebook.com/v26.0/act_<AD_ACCOUNT_ID>/campaigns
Response
On success, your app receives a JSON response with the ID of your newly created campaign.
{ "id": "<AD_CAMPAIGN_ID>" }
Updating
You can update a campaign by making a
POST request to /<AD_CAMPAIGN_ID>.Reading
To verify that you have successfully created a Facebook Page visit campaign, you can make a
GET request to /<AD_CAMPAIGN_ID>. See the Ad Campaign reference for the complete list of available parameters.Request
curl -X GET -G \
-d 'fields=name,status,objective' \
-d 'access_token=<ACCESS_TOKEN>' \
https://graph.facebook.com/v26.0/<AD_CAMPAIGN_ID>
Response
{ "name": "Facebook Page Visit Campaign", "status": "ACTIVE", "objective": "OUTCOME_TRAFFIC", "id": "<AD_CAMPAIGN_ID>" }
Step 2: Create an ad set
Once you have an ad campaign, create your ad set. To create an ad set, make a
POST request to the /act_<AD_ACCOUNT_ID>/adsets endpoint where <AD_ACCOUNT_ID> is the ID for your Meta ad account. Your request must include:Parameters
| Name | Description |
|---|---|
bid_strategy
enum
| Optional. The bid strategy for this campaign to suit your specific business goals. See the Ad Campaign reference for more details. Values: LOWEST_COST_WITHOUT_CAP, LOWEST_COST_WITH_BID_CAP, COST_CAP |
billing_event
enum
| Required. Must be set to IMPRESSIONS for Facebook Page visit ads. Meta bills you when people see your ad. |
campaign_id
numeric string or integer
| Required. A valid Facebook Page visit campaign you wish to add this ad set to. |
daily_budget
int64
| Required if lifetime_budget is not set.The daily budget defined in your account currency. Allowed only for ad sets with a duration (difference between end_time and start_time) longer than 24 hours.Either daily_budget or lifetime_budget must be greater than 0. |
destination_type
string
| Required. Must be set to FACEBOOK_PAGE for Facebook Page visit ads. |
end_time
datetime
| Required when lifetime_budget is specified.When creating an ad set with a daily_budget, specify end_time=0 or leave this field empty to set the ad set as ongoing with no end date.Example: 2026-09-12 23:59:59-07:00 or 2026-09-12 23:59:59 PDT. UTC UNIX timestamp. |
lifetime_budget
int64
| Required if daily_budget is not set.The lifetime budget of the ad set defined in your account currency. If specified, you must also specify an end_time.Either daily_budget or lifetime_budget must be greater than 0. |
name
string
| Required. The name of the Facebook Page visit ad set. |
optimization_goal
enum
| Required. What the ad set is optimizing for. The valid value depends on the campaign’s objective:
|
promoted_object | Required. The object this ad set is promoting across all its ads. For Facebook Page visit ads, promoted_object has the following condition:
See Ad Set, Promoted Object for more details. |
start_time
datetime
| Optional. The start time of the ad set. This field will default to the current time if you leave this field empty. Example: 2026-09-12 23:59:59-07:00 or 2026-09-12 23:59:59 PDT. UTC UNIX timestamp. |
status
enum
| Optional. The status of the ad set. The ad set status can be different from the effective status due to its parent campaign. This field will default to ACTIVE if you leave this field empty.Values: ACTIVE, PAUSED, DELETED, ARCHIVED |
targeting
Targeting object
| Required. The targeting structure of the ad. See Targeting for more details. |
Visit the Ad Account Ad Set reference for the complete list of available parameters.
Request
curl -X POST \
-F 'access_token=<ACCESS_TOKEN>' \
-F 'bid_strategy=LOWEST_COST_WITHOUT_CAP' \
-F 'billing_event=IMPRESSIONS' \
-F 'campaign_id=<AD_CAMPAIGN_ID>' \
-F 'daily_budget=<DAILY_BUDGET>' \
-F 'destination_type=FACEBOOK_PAGE' \
-F 'name=<AD_SET_NAME>' \
-F 'optimization_goal=PROFILE_VISIT' \
-F 'promoted_object={
"page_id": "<PAGE_ID>"
}' \
-F 'status=ACTIVE' \
-F 'start_time=<START_TIME>' \
-F 'targeting={
"geo_locations": { "countries":["US"] }
}' \
https://graph.facebook.com/v26.0/act_<AD_ACCOUNT_ID>/adsets
Response
On success, your app receives a JSON response with the ID of your newly created ad set.
{ "id": "<AD_SET_ID>" }
Updating
You can update an ad set by making a
POST request to /<AD_SET_ID>.Reading
To verify that you have successfully created a Facebook Page visit ad set, you can make a
GET request to /<AD_SET_ID>. See the Ad Set reference for the complete list of available parameters.Request
curl -X GET -G \
-d 'fields=name,destination_type,optimization_goal,bid_strategy' \
-d 'access_token=<ACCESS_TOKEN>' \
https://graph.facebook.com/v26.0/<AD_SET_ID>
Response
{ "name": "<AD_SET_NAME>", "destination_type": "FACEBOOK_PAGE", "optimization_goal": "PROFILE_VISIT", "bid_strategy": "LOWEST_COST_WITHOUT_CAP", "id": "<AD_SET_ID>" }
Step 3: Create an ad creative
The ad creative allows you to add assets to your ads. To create an ad creative for a Facebook Page visit ad, make a
POST request to the /act_<AD_ACCOUNT_ID>/adcreatives endpoint where <AD_ACCOUNT_ID> is the ID for your Meta ad account. Your request must include:Parameters
| Name | Description |
|---|---|
name
string
| Required. The name for your ad creative. |
object_story_spec | Required. An object containing information about a message. See Ad Creative Object Story Spec for more details. Required:
The call_to_action inside link_data or other sub-spec objects must be set to VISIT_PROFILE for Facebook Page visit ads.Optional:
|
degrees_of_freedom_spec | Optional. See Standard Enhancements for Advantage+ Creative for more details. |
Visit the Ad Creative reference for the complete list of available parameters.
Ad creative create examples
Request
curl -X POST \
-F 'name=<CREATIVE_NAME>' \
-F 'object_story_spec={
"page_id": "<PAGE_ID>",
"link_data": {
"name": "<AD_HEADLINE>",
"message": "<AD_PRIMARY_TEXT>",
"image_hash": "<IMAGE_HASH>",
"link": "https://www.facebook.com/<PAGE_USERNAME>",
"call_to_action": {
"type": "VISIT_PROFILE",
"value": {
"link": "https://www.facebook.com/<PAGE_USERNAME>"
}
}
}
}' \
-F 'access_token=<ACCESS_TOKEN>' \
https://graph.facebook.com/v26.0/act_<AD_ACCOUNT_ID>/adcreatives
Response
On success, your app receives a JSON response with the ID of your newly created ad creative.
{ "id": "<AD_CREATIVE_ID>" }
Creating ad creatives using Facebook content
You can also create a Facebook Page visit ad creative from an existing Facebook Page post. Set
object_story_id to the post ID in the format of postOwnerID_postID:curl -X POST \
-F 'name=<CREATIVE_NAME>' \
-F 'object_story_id=<PAGE_ID>_<POST_ID>' \
-F 'call_to_action={
"type": "VISIT_PROFILE",
"value": {
"link": "https://www.facebook.com/<PAGE_USERNAME>"
}
}' \
-F 'access_token=<ACCESS_TOKEN>' \
https://graph.facebook.com/v26.0/act_<AD_ACCOUNT_ID>/adcreatives
Updating
Reading
To verify that you have successfully created a Facebook Page visit ad creative, you can make a
GET request to /<AD_CREATIVE_ID>. See Ad Creative for the complete list of available parameters.Request
curl -X GET -G \
-d 'fields=name,object_story_spec,call_to_action_type' \
-d 'access_token=<ACCESS_TOKEN>' \
https://graph.facebook.com/v26.0/<AD_CREATIVE_ID>
Response
{ "name": "<CREATIVE_NAME>", "object_story_spec": { "page_id": "<PAGE_ID>", "link_data": { "call_to_action": { "type": "VISIT_PROFILE", "value": { "link": "https://www.facebook.com/<PAGE_USERNAME>" } } } }, "id": "<AD_CREATIVE_ID>" }
Step 4: Create an ad
Ads allow you to associate ad creative information with your ad sets. To create an ad, make a
POST request to the /act_<AD_ACCOUNT_ID>/ads endpoint where <AD_ACCOUNT_ID> is the ID for your Meta ad account. Your request must include:Parameters
| Name | Description |
|---|---|
name
string
| Required. The name for your ad. |
adset_id
numeric string or integer
| Required. The ID of the ad set. |
creative | Required. The ad creative to be used by this ad. You may supply the creative_id of an existing ad creative or create a new ad creative by including all required fields. See Ad Creative for more details. |
status
enum
| Required. The configured status of the ad. Values: ACTIVE, PAUSED, DELETED, ARCHIVED |
Request
curl -X POST \
-F 'name=<AD_NAME>' \
-F 'adset_id=<AD_SET_ID>' \
-F 'creative={
"creative_id": "<AD_CREATIVE_ID>"
}' \
-F 'status=ACTIVE' \
-F 'access_token=<ACCESS_TOKEN>' \
https://graph.facebook.com/v26.0/act_<AD_ACCOUNT_ID>/ads
Response
On success, your app receives a JSON response with the ID of your newly created ad.
{ "id": "<AD_ID>" }
Updating
Reading
To verify that you have successfully created a Facebook Page visit ad, you can make a
GET request to /<AD_ID>. See the ad reference for the complete list of available parameters.Request
curl -X GET -G \
-d 'fields=status,adset_id' \
-d 'access_token=<ACCESS_TOKEN>' \
https://graph.facebook.com/v26.0/<AD_ID>
Response
{ "status": "ACTIVE", "adset_id": "<AD_SET_ID>", "id": "<AD_ID>" }