Recently, we introduced a new Brand Awareness ad objective that you can use in your Facebook and Instagram ads.
Brand Awareness uses a combination of real-time proxy metrics, including both the reach and relative attention the users give to the campaign, to maximize ad recall lift. We introduced a new BRAND_AWARENESS
objective and a new BRAND_AWARENESS
optimization_goal, provided more control with REACH
optimization_goal, and added a new reporting metric.
Facebook Marketing APIs and interfaces fully support Brand Awareness objective and optimization. There is no app level restriction. However, not all ad accounts can use this feature yet. It is currently open to all managed ad accounts of Facebook and will be open to all in early 2016. You can find out whether your ad account can run Brand Awareness campaign with the API as described below. As this feature is still in Beta phase, breaking changes on API may happen before the final public release to all ad accounts.
To create a Brand Awareness campaign, follow these steps:
Update July 2016: This step is not needed any more as this feature is open to all ad accounts now.
Send a GET HTTP request to the following endpoint:
/act_<AD_ACCOUNT_ID>?fields=capabilities&access_token=<ACCESS_TOKEN> { "capabilities": [ ... "CAN_CREATE_BRAND_AWARENESS_OBJECTIVE_ADS" ... ], "id": "act_<AD_ACCOUNT_ID>" }
Check whether CAN_CREATE_BRAND_AWARENESS_OBJECTIVE_ADS
capability is included.
BRAND_AWARENESS
as the objective
.use FacebookAds\Object\Campaign;
use FacebookAds\Object\Fields\CampaignFields;
$campaign = new Campaign(null, $account_id);
$campaign->setData(array(
CampaignFields::NAME => 'my brand awareness campaign',
CampaignFields::STATUS => Campaign::STATUS_PAUSED,
CampaignFields::OBJECTIVE => 'BRAND_AWARENESS',
));
$campaign->create();
Do you want to have the most users who are more likely to pay attention to your ads, or do you want to reach as many unique users as possible?
Create an ad set with BRAND_AWARENESS
as the optimization_goal
.
All ad creatives used in this ad set should use either image or video but you cannot have both in the same ad set. If all ad creatives are images, we optimize the ad delivery for attention (represented by dwell time) on the ad relative to the average attention each user spent on all the other posts on Facebook or Instagram.
We only support auto bid for this optimization.
use FacebookAds\Object\AdSet;
use FacebookAds\Object\Fields\AdSetFields;
use FacebookAds\Object\Values\BillingEvents;
use FacebookAds\Object\Values\OptimizationGoals;
use FacebookAds\Object\Fields\TargetingSpecsFields;
use FacebookAds\Object\TargetingSpecs;
$adset = new AdSet(null, 'act_<AD_ACCOUNT_ID>');
$adset->setData(array(
AdSetFields::NAME => 'My Ad Set Optimized for Attention',
AdSetFields::OPTIMIZATION_GOAL => 'BRAND_AWARENESS',
AdSetFields::BILLING_EVENT => BillingEvents::IMPRESSIONS,
AdSetFields::IS_AUTOBID => true,
AdSetFields::DAILY_BUDGET => 20000,
AdSetFields::CAMPAIGN_ID => <CAMPAIGN_ID>,
AdSetFields::TARGETING => (new TargetingSpecs())->setData(array(
TargetingSpecsFields::GEO_LOCATIONS => array(
'countries' => array('US'),
),
)),
));
$adset->create(array(
AdSet::STATUS_PARAM_NAME => AdSet::STATUS_ACTIVE,
));
Create an ad set with REACH
as the optimization_goal
.
To better optimze for REACH
, we have introduced a new feature, "frequency_control_specs" exclusively for the BRAND_AWARENESS
objective.
In an ad set, you can specify frequency_control_specs
, which allows you to control duration and frequency of an event. For example, the following spec means that every 3 days, Facebook or Instagram will serve no more than 1 impression per user.
{"event": "IMPRESSIONS", "interval_days":3, "max_frequency":1}
When optimizing towards REACH
, if frequency_control_specs
is not specified, the default is
{"event": "IMPRESSIONS", "interval_days":1, "max_frequency":1}
We only support manual bid (with bid_amount
specified) for this optimization.
use FacebookAds\Object\AdSet;
use FacebookAds\Object\Fields\AdSetFields;
use FacebookAds\Object\Values\BillingEvents;
use FacebookAds\Object\Values\OptimizationGoals;
use FacebookAds\Object\Fields\TargetingSpecsFields;
use FacebookAds\Object\TargetingSpecs;
$adset = new AdSet(null, 'act_<AD_ACCOUNT_ID>');
$adset->setData(array(
AdSetFields::NAME => 'My Ad Set Optimized for Reach Unique Users per Week',
AdSetFields::OPTIMIZATION_GOAL => OptimizationGoals::REACH,
AdSetFields::BILLING_EVENT => BillingEvents::IMPRESSIONS,
AdSetFields::BID_AMOUNT => 1000,
AdSetFields::DAILY_BUDGET => 20000,
'frequency_control_specs' => array (
'event' => 'IMPRESSIONS',
'interval_days' => 7,
'max_frequency' => 1,
),
AdSetFields::CAMPAIGN_ID => <CAMPAIGN_ID>,
AdSetFields::TARGETING => (new TargetingSpecs())->setData(array(
TargetingSpecsFields::GEO_LOCATIONS => array(
'countries' => array('US'),
),
)),
));
$adset->create(array(
AdSet::STATUS_PARAM_NAME => AdSet::STATUS_ACTIVE,
));
After the campaign starts, you can call the ad insights API to get a few new metrics related to the people who Facebook estimates will recall seeing this ad within two days. Below we have requested the number of estimated recallers, as well as the ratio of recallers over all reached users.
/<AD_ID>/insights { "data": [ { ... "estimated_ad_recallers": 235100, "estimated_ad_recall_rate": 7.7476436584828, ... "objective": "BRAND_AWARENESS", "optimization_goal": "BRAND_AWARENESS", "performance_indicator": "estimated_ad_recallers", ... } ] }
In addition, you can use BRAND_AWARENESS
or REACH
as the optimization_goal
when you create a Reach and Frequency ad campaign with Brand Awareness objective.