优化千次展示费用广告

借助优化千次展示费用 (oCPM),您可以优先考虑营销目标,然后以尽可能高效的方式针对这些目标自动投放广告。以确切的价值指定营销目标,例如您认为实现特定目标的价值是多少。这些价值并非竞价,而应该是您对某个成效的估价。

oCPM 的可替换项为单次操作费用 (CPA),它支持您指定转化事件,并按照转化数量付费。CPM 和 oCPM 广告与之不同,这两种广告按照在网站中获得的展示次数收费。

运作方式

系统会代表您自动竞价,但不会超出您定义的广告系列预算。动态竞价机制有助于您获得对实现营销目标来说价值最高的展示机会,且广告系列的总 ROI 会超过使用 CPC 或传统千次展示费用的广告系列。

通过定义广告组的 optimization_goal 来优化广告系列。

仅当应用程序在过去 28 天内通过 Facebook SDK 或移动应用成效衡量合作伙伴报告过安装事件时,oCPM 才适用于移动应用安装量广告

创建 oCPM 广告

广告组对象包含竞价信息。如要创建 oCPM 广告:

use FacebookAds\Object\AdSet;
use FacebookAds\Object\Fields\AdSetFields;
use FacebookAds\Object\Values\AdSetBillingEventValues;
use FacebookAds\Object\Values\AdSetOptimizationGoalValues;

$adset = new AdSet(null, 'act_<AD_ACCOUNT_ID>');
$adset->setData(array(
  AdSetFields::NAME => 'My Ad Set for oCPM',
  AdSetFields::BILLING_EVENT => AdSetBillingEventValues::IMPRESSIONS,
  AdSetFields::OPTIMIZATION_GOAL => AdSetOptimizationGoalValues::LINK_CLICKS,
  AdSetFields::BID_AMOUNT => 150,
  AdSetFields::CAMPAIGN_ID => <CAMPAIGN_ID>,
  AdSetFields::DAILY_BUDGET => 1000,
  AdSetFields::TARGETING => array(
    'geo_locations' => array(
      'countries' => array(
        'US'
      ),
    ),
  ),
));

$adset->create(array(
  AdSet::STATUS_PARAM_NAME => AdSet::STATUS_PAUSED,
));
from facebookads.adobjects.adset import AdSet
from facebookads.adobjects.targeting import Targeting

# Create an Ad Set with bid_type set to oCPM
adset = AdSet(parent_id='act_<AD_ACCOUNT_ID>')
adset.update({
    AdSet.Field.name: 'My Ad Set for oCPM',
    AdSet.Field.billing_event: AdSet.BillingEvent.impressions,
    AdSet.Field.optimization_goal: AdSet.OptimizationGoal.link_clicks,
    AdSet.Field.bid_amount: 150,
    AdSet.Field.campaign_id: '<CAMPAIGN_ID>',
    AdSet.Field.daily_budget: 1000,
    AdSet.Field.targeting: {
        Targeting.Field.geo_locations: {
            'countries': ['US'],
        },
    },
})

adset.remote_create(params={
    'status': AdSet.Status.paused,
})
AdSet adSet = new AdAccount(act_<AD_ACCOUNT_ID>, context).createAdSet()
  .setName("My Ad Set for oCPM")
  .setBillingEvent(AdSet.EnumBillingEvent.VALUE_IMPRESSIONS)
  .setOptimizationGoal(AdSet.EnumOptimizationGoal.VALUE_LINK_CLICKS)
  .setBidAmount(150L)
  .setCampaignId(<CAMPAIGN_ID>)
  .setDailyBudget(1000L)
  .setTargeting(
    new Targeting()
      .setFieldGeoLocations(
        new TargetingGeoLocation()
          .setFieldCountries(Arrays.asList("US"))
      )
  )
  .setStatus(AdSet.EnumStatus.VALUE_PAUSED)
  .execute();
String ad_set_id = adSet.getId();
curl \
  -F 'name=My Ad Set for oCPM' \
  -F 'billing_event=IMPRESSIONS' \
  -F 'optimization_goal=LINK_CLICKS' \
  -F 'bid_amount=150' \
  -F 'campaign_id=<CAMPAIGN_ID>' \
  -F 'daily_budget=1000' \
  -F 'targeting={"geo_locations":{"countries":["US"]}}' \
  -F 'status=PAUSED' \
  -F 'access_token=<ACCESS_TOKEN>' \
  https://graph.facebook.com/v2.11/act_<AD_ACCOUNT_ID>/adsets

创建这类广告时,下列字段必须遵守下面的限制:

名称 描述

billing_event

您必须设置为 IMPRESSIONS

optimization_goal

设置为您想要优化的操作。

bid_amount

您对优化目标的估价,以“分”为单位予以指定。

如需了解支持 oCPM 竞价的广告单元,请参阅验证最佳实践

预算和定价

如果广告使用优化千次展示费用竞价,则必须设置预算。广告系统会代表您为每次展示竞价,当展示很可能帮助实现目标时,会给出较高竞价;当展示不太可能有助于实现目标时,会给出较低竞价。

请记住,这样的动态竞价机制可帮助您获得对实现营销目标来说价值最高的展示机会,且这类广告的总投资回报会高于使用 CPC 或 CPM 竞价的传统广告。请注意,广告管理工具和 API 将针对每个目标提供统计数据,以便您能够根据自己的目标了解广告表现并衡量营销活动的成效。