In the past year, the Audience Network has become one of the largest and best performing mobile ad networks in the world. We are now enabling new advertising objectives and formats in the Audience Network:
All new ad campaigns are now eligible to deliver in the Audience Network.
Step 1. Create an ad campaign with MOBILE_APP_INSTALLS
or MOBILE_APP_ENGAGEMENT
objective
use FacebookAds\Object\AdCampaign;
use FacebookAds\Object\Fields\AdCampaignFields;
$campaign = new AdCampaign(null, $account_id);
$campaign->setData(array(
AdCampaignFields::NAME => 'my campaign group',
AdCampaignFields::STATUS => AdCampaign::STATUS_PAUSED,
AdCampaignFields::OBJECTIVE => AdObjectives::MOBILE_APP_INSTALLS,
));
$campaign->create();
Step 2. Create the ad set with audience network placement and specify promoted_object
to the app
use FacebookAds\Object\AdSet;
use FacebookAds\Object\Values\BidTypes;
$adset = new AdSet(null, 'act_<AD_ACCOUNT_ID>');
$data = array(
AdSetFields::NAME => 'LifetimeBudgetSet',
AdsetFields::LIFETIME_BUDGET => 100000,
AdSetFields::END_TIME => 1380610800,
AdSetFields::BID_AMOUNT => 500,
AdSetFields::BILLING_EVENT => BillingEvents::APP_INSTALLS,
AdSetFields::OPTIMIZATION_GOAL => OptimizationGoals::APP_INSTALLS,
AdSetFields::PROMOTED_OBJECT => array(
'application_id' => <APP_ID>,
'object_store_url' => <APP_STORE_URL>,
),
AdSetFields::TARGETING => array(
'geo_locations' => array(
'countries' => array(
'US',
),
),
'page_types' => array(
'mobileexternal',
'mobilefeed',
),
'user_os' => array(
'Android',
),
),
AdSetFields::CAMPAIGN_STATUS => AdSet::STATUS_ACTIVE,
AdSetFields::CAMPAIGN_GROUP_ID => <AD_CAMPAIGN_ID>,
);
$adset->create($data);
Step 3. Create mobile app ad video creative
curl \
-F 'object_story_spec={ \
"page_id": <PAGE_ID>, \
"video_data": {"video_id": <VIDEO_ID>,
"description": "Keeping up with friends is faster than ever.",
"image_hash": "<THUMNAIL_IMAGE_HASH>",
"call_to_action": {"type": "INSTALL_MOBILE_APP", "value": {"link": "https://play.google.com/store/apps/details?id=com.facebook.katana", "link_title": "Facebook"}}}}' \
-F "access_token=<ACCESS_TOKEN>" \
https://graph.facebook.com/<API_VERSION>/act_<AD_ACCOUNT_ID>/adcreatives
Step 4. Create ad
use FacebookAds\Object\Ad;
use FacebookAds\Object\Fields\AdFields;
$data = array(
AdFields::NAME => 'My Ad',
AdFields::ADSET_ID => <AD_SET_ID>,
AdFields::CREATIVE => array(
'creative_id' => <CREATIVE_ID>,
),
);
$ad = new Ad(null, 'act_<AD_ACCOUNT_ID>');
$ad->setData($data);
$ad->create(array(
Ad::STATUS_PARAM_NAME => Ad::STATUS_PAUSED,
));
from facebookads.adobjects.ad import Ad
ad = Ad(parent_id='act_<AD_ACCOUNT_ID>')
ad[Ad.Field.name] = 'My Ad'
ad[Ad.Field.adset_id] = <AD_SET_ID>
ad[Ad.Field.creative] = {
'creative_id': <CREATIVE_ID>,
}
ad.remote_create(params={
'status': Ad.Status.paused,
})
Ad ad = new AdAccount(act_<AD_ACCOUNT_ID>, context).createAd()
.setName("My Ad")
.setAdsetId(<AD_SET_ID>)
.setCreative(
new AdCreative()
.setFieldId(<CREATIVE_ID>)
)
.setStatus(Ad.EnumStatus.VALUE_PAUSED)
.execute();
ad_account = FacebookAds::AdAccount.get('act_<AD_ACCOUNT_ID>')
ad = ad_account.ads.create({
name: 'My Ad',
adset_id: <ADSET_ID>,
creative: {
creative_id: <CREATIVE_ID>,
},
status: 'PAUSED',
})
curl \
-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/v2.11/act_<AD_ACCOUNT_ID>/ads
For more information on Audience Network, please check out the Audience Network reference docs.