oCPM(Optimized Cost Per Mille) 광고

oCPM(Optimized Cost Per Mille)을 사용하면 마케팅 목표의 우선순위를 지정한 다음 이러한 목표에 맞추어 가능한 한 가장 효과적인 방법으로 광고를 자동으로 게재할 수 있습니다. 특정 목표의 달성이 얼마나 가치가 있는지 등 절대값으로 목표를 지정하세요. 이러한 값은 입찰가가 아니라, 결과에 대해 설정하는 값이어야 합니다.

oCPM의 대안인 행동당 비용(CPA)을 사용하면 전환 이벤트를 지정하고 전환 수를 기준으로 비용을 지불할 수 있습니다. 반면 CPM 및 oCPM 광고는 사이트에서 발생한 노출을 기준으로 비용을 청구하므로 CPA와 다릅니다.

사용 방법

지정된 캠페인 예산 한도 내에서 Facebook이 대신 자동으로 입찰합니다. 동적 입찰가를 사용하면 목표를 위해 가장 가치가 높은 노출을 확보할 수 있으며, CPC 또는 일반 CPM 캠페인의 ROI보다 높은 총 캠페인 ROI를 기대할 수 있습니다.

광고 세트의 optimization_goal을 정의하여 캠페인을 최적화하세요.

앱에서 최근 28일 이내에 Facebook SDK 또는 MMP(모바일 측정 파트너)를 통해 설치 이벤트를 보고한 경우에만 모바일 앱 설치용 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

oCPM 광고를 만드는 경우 다음 필드는 아래의 제한 사항을 따라야 합니다.

이름 설명

billing_event

IMPRESSIONS로 설정해야 합니다.

optimization_goal

최적화하려는 행동으로 설정합니다.

bid_amount

최적화 목표에 설정하는 값(센트 단위)입니다.

oCPM 입찰을 지원하는 광고 유닛은 검증 모범 사례를 참조하세요.

예산 및 가격

최적화된 CPM 캠페인에는 예산을 설정해야 합니다. 광고 시스템에서 각 노출에 대해 자동으로 입찰합니다. 즉, 목표에 적합할 가능성이 높은 노출에는 높은 값으로 입찰하고 가능성이 낮은 노출에는 낮은 값으로 입찰합니다.

이러한 동적 입찰가를 사용하면 목표를 위해 가장 가치가 높은 노출을 확보할 수 있으며, 일반 CPC 또는 CPM 캠페인의 ROI보다 높은 총 캠페인 ROI를 기대할 수 있습니다. 각 목표에 대한 통계가 광고 관리자 및 API에 제공되므로 목표를 기반으로 광고의 성과를 확인하고 캠페인의 성공 여부를 측정할 수 있습니다.