여행 광고

Facebook에서 여행 인벤토리를 자동으로 홍보해 보세요. Facebook 여행 광고는 여러 기기에 걸쳐 고객의 의향을 파악하여 Facebook의 고유 크리에이티브를 통해 인벤토리에 있는 관련 여행 옵션을 자동으로 홍보합니다.

여행 광고는 호텔 광고, 항공편 광고, 목적지 광고를 지원합니다.

이 가이드에서는 다음과 같은 경우로 가정합니다.

  • 카탈로그와 제품 세트가 준비되어 있습니다.
  • 웹사이트나 모바일 앱에 필요한 여행 이벤트를 설정했습니다.
  • (필수) Facebook 페이지광고 계정을 만들었습니다.

타게팅 전략

여행 광고는 여러 가지 타게팅 전략을 지원합니다. 적절한 제품 세트와 적절한 타겟을 결합하여 여러 가지 비즈니스 목표를 달성할 수 있습니다.

  • 리타게팅—관련 호텔, 목적지 또는 항공편을 호텔, 목적지 또는 항공편을 찾기 위해 웹사이트 또는 앱을 방문한 사람에게 보여줍니다.

  • 크로스셀링 및 업셀링—항공편을 구매한 사람을 관련 호텔로 타게팅하거나 우선 탑승 또는 좌석 선택 서비스를 업셀링합니다.

  • 잠재 고객 발굴—광고의 도달 범위를 확대하고 잠재 고객 발굴 대상을 타게팅하여 새로운 고객을 찾습니다.

여행 광고 설정

여행 광고를 설정하는 절차는 API를 사용하여 다른 유형의 Facebook 광고를 설정할 때와 동일합니다.

1단계. 캠페인 만들기

여행 광고는 PRODUCT_CATALOG_SALES 목표를 사용합니다. 다음과 같이 캠페인 수준에서 promoted_object에 여행 카탈로그를 지정해야 합니다.

use FacebookAds\Object\Campaign;
use FacebookAds\Object\Fields\CampaignFields;
use FacebookAds\Object\Values\CampaignObjectiveValues;

$campaign = new Campaign(null, 'act_<AD_ACCOUNT_ID>');
$campaign->setData(array(
  CampaignFields::NAME => 'Product Catalog Sales Campaign',
  CampaignFields::OBJECTIVE => CampaignObjectiveValues::PRODUCT_CATALOG_SALES,
  CampaignFields::PROMOTED_OBJECT => array(
    'product_catalog_id' => <PRODUCT_CATALOG_ID>,
  ),
));

$campaign->create(array(
  Campaign::STATUS_PARAM_NAME => Campaign::STATUS_PAUSED,
));
from facebookads.adobjects.campaign import Campaign

campaign = Campaign(parent_id='act_<AD_ACCOUNT_ID>')
campaign[Campaign.Field.name] = 'Product Catalog Sales Campaign'
objective = Campaign.Objective.product_catalog_sales
campaign[Campaign.Field.objective] = objective
campaign[Campaign.Field.promoted_object] = {
    'product_catalog_id': <PRODUCT_CATALOG_ID>,
}

campaign.remote_create(params={
    'status': Campaign.Status.paused,
})
Campaign campaign = new AdAccount(act_<AD_ACCOUNT_ID>, context).createCampaign()
  .setName("Product Catalog Sales Campaign Group")
  .setObjective(Campaign.EnumObjective.VALUE_PRODUCT_CATALOG_SALES)
  .setPromotedObject("{\"product_catalog_id\":\"" + <PRODUCT_CATALOG_ID> + "\"}")
  .setStatus(Campaign.EnumStatus.VALUE_PAUSED)
  .execute();
String campaign_id = campaign.getId();
curl \
  -F 'name=Product Catalog Sales Campaign' \
  -F 'objective=PRODUCT_CATALOG_SALES' \
  -F 'promoted_object={"product_catalog_id":"<PRODUCT_CATALOG_ID>"}' \
  -F 'status=PAUSED' \
  -F 'access_token=<ACCESS_TOKEN>' \
  https://graph.facebook.com/v2.11/act_<AD_ACCOUNT_ID>/campaigns

2단계. 광고 세트 만들기

캠페인과 campaign_id가 있으면 광고 세트를 만들 수 있습니다. 광고 세트는 광고의 입찰 및 타게팅 옵션을 정의합니다.

리타게팅

웹사이트 또는 앱 방문자를 리타게팅하려면 홍보하는 제품 세트와 동일한 유형의 다이내믹 타겟을 사용하세요. 예를 들어 호텔 타겟에게는 호텔 세트를, 항공편 타겟에게는 항공편 세트를, 목적지 타겟에게는 목적지 세트를 홍보합니다.

크로스셀링 및 업셀링

웹사이트 및/또는 앱에서 구매한 사람에게 크로스셀링 및 업셀링하려면 구매한 사람이 포함된 다이내믹 타겟을 사용하고 이들에게 다른 카탈로그의 여행 옵션을 홍보합니다. 즉 항공편 구매 타겟을 호텔 세트나 좌석 선택을 강조한 다른 항공편 세트로 타게팅합니다.

잠재 고객 발굴

  • 기본적인 인구 통계학적 타게팅을 사용하여 타겟을 만듭니다(예: 만 18세 이상의 미국 여성).
  • 기존 리타게팅 캠페인으로 타게팅한 고객을 포함하되, 최근 10일 내에 구매한 사용자를 제외하는 것을 고려합니다.
  • 호텔이 100개 이상인 광범위한 제품 세트를 사용합니다.
  • 강력한 의향 신호(예: Purchase 또는 InitiateCheckout)로 OFFSITE_CONVERSIONS에 맞추어 최적화합니다.

어드밴티지+ 카탈로그 광고, 광범위한 대상 타게팅도 참조하세요.

광고 세트 만들기 예시

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

$adset = new AdSet(null, 'act_<AD_ACCOUNT_ID>');

$adset->setData(array(
  AdSetFields::NAME => 'Product Catalog Sales Adset',
  AdSetFields::BID_AMOUNT => 3000,
  AdSetFields::BILLING_EVENT => AdSetBillingEventValues::IMPRESSIONS,
  AdSetFields::OPTIMIZATION_GOAL =>
    AdSetOptimizationGoalValues::OFFSITE_CONVERSIONS,
  AdSetFields::DAILY_BUDGET => 15000,
  AdSetFields::CAMPAIGN_ID => <CAMPAIGN_ID>,
  AdSetFields::TARGETING => array(
    TargetingFields::GEO_LOCATIONS => array(
      'countries' => array('US'),
    ),
    TargetingFields::DYNAMIC_AUDIENCE_IDS => array(<DYNAMIC_AUDIENCE_ID>),
  ),
  AdSetFields::PROMOTED_OBJECT => array(
    'product_set_id' => <PRODUCT_SET_ID>,
  ),
));

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

adset = AdSet(parent_id=ad_account_id)
adset[AdSet.Field.name] = 'Product Catalog Sales Adset'
adset[AdSet.Field.bid_amount] = 3000
adset[AdSet.Field.billing_event] = AdSet.BillingEvent.impressions
adset[AdSet.Field.optimization_goal] = \
    AdSet.OptimizationGoal.offsite_conversions
adset[AdSet.Field.daily_budget] = 15000
adset[AdSet.Field.campaign_id] = campaign_id
adset[AdSet.Field.targeting] = {
    Targeting.Field.geo_locations: {
        Targeting.Field.countries: ['US'],
    },
    Targeting.Field.dynamic_audience_ids: [
        dynamic_audience_id,
    ],
}
adset[AdSet.Field.promoted_object] = {
    'product_set_id': product_set_id,
}

adset.remote_create()
AdSet adSet = new AdAccount(act_<AD_ACCOUNT_ID>, context).createAdSet()
  .setName("Product Catalog Sales Adset")
  .setBidAmount(3000L)
  .setBillingEvent(AdSet.EnumBillingEvent.VALUE_IMPRESSIONS)
  .setOptimizationGoal(AdSet.EnumOptimizationGoal.VALUE_OFFSITE_CONVERSIONS)
  .setDailyBudget(15000L)
  .setCampaignId(<CAMPAIGN_ID>)
  .setTargeting(
    new Targeting()
      .setFieldDynamicAudienceIds(Arrays.asList(<DYNAMIC_AUDIENCE_ID>))
      .setFieldGeoLocations(
        new TargetingGeoLocation()
          .setFieldCountries(Arrays.asList("US"))
      )
  )
  .setPromotedObject("{\"product_set_id\":\"" + <PRODUCT_SET_ID> + "\"}")
  .setStatus(AdSet.EnumStatus.VALUE_PAUSED)
  .execute();
String ad_set_id = adSet.getId();
curl \
  -F 'name=Product Catalog Sales Adset' \
  -F 'bid_amount=3000' \
  -F 'billing_event=IMPRESSIONS' \
  -F 'optimization_goal=OFFSITE_CONVERSIONS' \
  -F 'daily_budget=15000' \
  -F 'campaign_id=<CAMPAIGN_ID>' \
  -F 'targeting={ 
    "geo_locations": {"countries":["US"]}, 
    "dynamic_audience_ids": ["<DYNAMIC_AUDIENCE_ID>"] 
  }' \
  -F 'promoted_object={"product_set_id":"<PRODUCT_SET_ID>"}' \
  -F 'status=PAUSED' \
  -F 'access_token=<ACCESS_TOKEN>' \
  https://graph.facebook.com/v2.11/act_<AD_ACCOUNT_ID>/adsets

여행 광고는 광고 세트에서 인라인 다이내믹 대상 타게팅 사양을 지원하지 않습니다. 먼저 별도로 타겟을 만들어야 합니다.

3단계. 광고 크리에이티브 만들기

여행 광고에 대해 광고 크리에이티브에서 템플릿 태그를 사용할 수 있습니다. Facebook에서 광고를 표시할 때 템플릿 태그를 누군가가 실제로 선택한 여행 옵션으로 교체합니다. 광고 자체는 물론이고 광고를 클릭하면 표시되는 URL에서도 템플릿 태그를 사용할 수 있습니다.

광고를 클릭하면 표시되는 URL을 지정하려면 template_url_spec 필드를 사용하세요. URL이 제공되지 않았거나 Facebook에서 광고를 표시할 때 해당 URL을 가져올 수 없는 경우 카탈로그의 URL이 표시됩니다. 항공편 광고의 경우 카탈로그에서 URL을 제공하지 않으면 이 필드를 필수로 입력해야 합니다.

단일 항목을 표시하거나 여러 항목이 포함된 슬라이드를 표시할 수 있습니다. 단일 항목 광고의 경우 슬라이드에 같은 항목의 여러 가지 이미지를 표시할 수 있습니다. 단, 카탈로그에 각 항목의 이미지가 여러 개 포함되어 있어야 합니다. 정적 카드를 다이내믹 카드와 함께 표시할 수도 있습니다. 크리에이티브 옵션에 관한 자세한 내용은 어드밴티지+ 카탈로그 광고, 크리에이티브 템플릿 만들기를 참조하세요.

호텔 광고의 슬라이드 크리에이티브를 만드는 방법의 예시는 다음과 같습니다. 목적지 광고항공편 광고는 설정이 유사합니다.

use FacebookAds\Object\AdCreative;
use FacebookAds\Object\Fields\AdCreativeFields;
use FacebookAds\Object\Fields\AdCreativeLinkDataFields;
use FacebookAds\Object\Fields\AdCreativeObjectStorySpecFields;
use FacebookAds\Object\Values\AdCreativeCallToActionTypeValues;
use FacebookAds\Object\AdCreativeObjectStorySpec;
use FacebookAds\Object\AdCreativeLinkData;

$object_story_spec = new AdCreativeObjectStorySpec();
$object_story_spec->setData(array(
  AdCreativeObjectStorySpecFields::PAGE_ID => <PAGE_ID>,
  AdCreativeObjectStorySpecFields::TEMPLATE_DATA =>
    (new AdCreativeLinkData())->setData(array(
      AdCreativeLinkDataFields::MESSAGE =>
        'Book your upcoming stay in {{hotel.city}}',
      AdCreativeLinkDataFields::NAME => '{{hotel.name | titleize}}',
      AdCreativeLinkDataFields::LINK => '<LINK>',
      AdCreativeLinkDataFields::DESCRIPTION =>
        '{{hotel.description}}',
      AdCreativeLinkDataFields::ADDITIONAL_IMAGE_INDEX => 0,
      AdCreativeLinkDataFields::CALL_TO_ACTION => array(
        'type' => AdCreativeCallToActionTypeValues::BOOK_TRAVEL,
      ),
    )),
));

$creative = new AdCreative(null, 'act_<AD_ACCOUNT_ID>');
$creative->setData(array(
  AdCreativeFields::NAME => 'Dynamic Ad Template Creative Sample',
  AdCreativeFields::OBJECT_STORY_SPEC => $object_story_spec,
  AdCreativeFields::TEMPLATE_URL_SPEC =>
    array(
      'config' => array(
        'app_id' => '123456789012345',
      ),
      'ios' => array(
        'url' => 'example://home/hotel'.
          '?id={{hotel.hotel_id | urlencode}}'.
          '&startDate={{trip.checkin_date date_format:Y-m-d | urlencode}}'.
          '&endDate={{trip.checkout_date date_format:Y-m-d | urlencode}}',
      ),
      'web' => array(
        'url' => 'http://www.example.com/hotel'.
          '?id={{hotel.hotel_id | urlencode}}'.
          '&startDate={{trip.checkin_date date_format:Y-m-d | urlencode}}'.
          '&endDate={{trip.checkout_date date_format:Y-m-d | urlencode}}',
      )
    ),
  AdCreativeFields::PRODUCT_SET_ID => <PRODUCT_SET_ID>,
));

$creative->create();
from facebookads.adobjects.adcreative import AdCreative
from facebookads.adobjects.adcreativeobjectstoryspec \
    import AdCreativeObjectStorySpec

story = AdCreativeObjectStorySpec()
story[story.Field.page_id] = <PAGE_ID>
story[story.Field.template_data] = {
    'message': 'Book your upcoming stay in {{hotel.city}}',
    'name': '{{hotel.name | titleize}}',
    'link': '<LINK>',
    'description': '{{hotel.description}}',
    'additional_image_index': 0,
    'call_to_action': {
        'type': 'BOOK_TRAVEL',
    },
}

creative = AdCreative(parent_id='act_<AD_ACCOUNT_ID>')
creative[AdCreative.Field.name] = 'Dynamic Ad Template Creative Sample'
creative[AdCreative.Field.object_story_spec] = story
template_url = ('http://www.example.com/hotel.aspx?id={{hotel.hotel_id}}'
                '&startDate={{trip.checkin_date date_format:Y-m-d}}'
                '&endDate={{trip.checkout_date date_format:Y-m-d}}')
creative[AdCreative.Field.template_url] = template_url
creative[AdCreative.Field.product_set_id] = <PRODUCT_SET_ID>
creative.remote_create()
curl \
  -F 'name=Dynamic Ad Template Creative Sample' \
  -F 'object_story_spec={ 
    "page_id": "<PAGE_ID>", 
    "template_data": { 
      "additional_image_index": 0, 
      "call_to_action": {"type":"BOOK_TRAVEL"}, 
      "description": "{{hotel.description}}", 
      "link": "<LINK>", 
      "message": "Book your upcoming stay in {{hotel.city}}", 
      "name": "{{hotel.name | titleize}}" 
    } 
  }' \
  -F 'template_url_spec={ 
    "config": {"app_id":"123456789012345"}, 
    "ios": { 
      "url": "example:\/\/home\/hotel?id={{hotel.hotel_id | urlencode}}&startDate={{trip.checkin_date date_format:Y-m-d | urlencode}}&endDate={{trip.checkout_date date_format:Y-m-d | urlencode}}" 
    }, 
    "web": { 
      "url": "http:\/\/www.example.com\/hotel?id={{hotel.hotel_id | urlencode}}&startDate={{trip.checkin_date date_format:Y-m-d | urlencode}}&endDate={{trip.checkout_date date_format:Y-m-d | urlencode}}" 
    } 
  }' \
  -F 'product_set_id=<PRODUCT_SET_ID>' \
  -F 'access_token=<ACCESS_TOKEN>' \
  https://graph.facebook.com/v2.11/act_<AD_ACCOUNT_ID>/adcreatives

항공편 업셀(API v2.10 이상에만 해당)

항공편을 구매한 타겟에게 좌석 선택이나 우선 탑승과 같은 옵션을 업셀링하는 방법은 다음과 같습니다.

  1. PURCHASE 이벤트만 포함하여 타겟을 제공합니다.
  2. (권장) 광고 크리에이티브의 recommender_settings에서 PURCHASE 이벤트를 지정해 광고를 추천합니다.
curl \
  -F 'name=Advantage+ Catalog Ad Template Creative Up-sell Sample' \
  -F 'object_story_spec={ 
    "page_id": "<PAGE_ID>", 
    "template_data": { 
      "additional_image_index": 0, 
      "call_to_action": {"type":"LEARN_MORE"}, 
      "description": "{{flight.description}}", 
      "link": "<LINK>", 
      "message": "Book extra leg room on your flight from {{flight.origin_city}} to {{flight.destination_city}}", 
    } 
  }' \
  -F 'template_url_spec={ 
    "config": {"app_id":"<APP_ID>"}, 
    "ios": { 
      "url": "example:\/\/home\/flight?id={{flight.origin_airport}}&startDate={{trip.departing_departure_date date_format:Y-m-d | urlencode}}&endDate={{trip.returning_departure_date date_format:Y-m-d | urlencode}}" 
    }, 
    "web": { 
      "url": "http:\/\/www.example.com\/flight?id={{flight.origin_airport}}&startDate={{trip.checkin_date date_format:Y-m-d | urlencode}}&endDate={{trip.returning_departure_date date_format:Y-m-d | urlencode}}" 
    } 
  }' \
  -F 'product_set_id=<FLIGHT_SET_ID>' \
  -F 'recommender_settings'={"preferred_events":["Purchase"]}\ 
  -F 'access_token=<ACCESS_TOKEN>' \
  https://graph.facebook.com/VERSION/act_<AD_ACCOUNT_ID>/adcreatives

오버레이 디자인

광고주는 오버레이를 통해 어드밴티지+ 카탈로그 광고 내의 각 항목에 대한 가격 정보(가격 자체 또는 할인율)를 추가할 수 있습니다.

카탈로그 유형별 오버레이 선택 사항

광고 세트에서 사용하는 카탈로그 유형에 따라 다음과 같은 오버레이 유형을 사용할 수 있습니다.

  • 호텔: price, strikethrough% off
  • 목적지: price
  • 항공편: price

참고: 위의 오버레이 선택 사항에 대해 각 카탈로그 유형의 모든 가격 관련 템플릿 태그가 지원됩니다. 각 카탈로그 유형의 템플릿 태그를 보려면 호텔, 목적지항공편을 참조하세요.

오버레이 디자인 선택 사항

가격 정보는 피드의 가격 및 판매가 열에서 동적으로 풀링됩니다. 광고주는 어드밴티지+ 카탈로그 광고 오버레이에 대해 다음과 같은 맞춤 설정 중에서 선택할 수 있습니다.

  • 모양: 둥근 사각형, 원형 및 삼각형
  • 위치: 4개의 고정 모서리: TOP_LEFT, TOP_RIGHT, BOTTOM_LEFTBOTTOM_RIGHT. 삼각형의 경우에는 TOP_LEFTTOP_RIGHT만 지원됩니다.
  • 글꼴: Droid Serif, Open Sans 등 기본 설정된 글꼴 목록
  • 지원되는 오버레이 유형: price, strikethrough% off. 참고: strikethrough% off는 호텔에만 사용할 수 있습니다.

오버레이를 추가하는 방법에 대해 자세히 알아보세요.

예—취소선이 있는 가격 오버레이(호텔 광고용)

curl \
  -F 'name=Test Templates in Overlay' \
  -F 'object_story_spec={
    "page_id": "<PAGE_ID>",
    "template_data": {
      "description": "Description",
      "link": "<LINK>", 
      "name": "Name: {{hotel.name}}",
      "message" : "Come visit {{hotel.city}}!",
      "image_overlay_spec": {
        "overlay_template":"pill_with_text",
        "text_font":"droid_serif_regular",
        "text_type":"strikethrough_price",
        "position":"top_left",
        "theme_color":"background_e50900_text_ffffff",
        "float_with_margin":"true",
        "text_template_tags": ["{{hotel.price round}}", "{{hotel.sale_price round}}"],
      }
    }
  }' \
  -F 'product_set_id=<PRODUCT_SET_ID>' \
  -F 'template_url=http://www.example.com' \
  -F 'access_token=<ACCESS_TOKEN>' \
  https://graph.facebook.com/v2.10/act_897427477067185/adcreatives

광고를 만들려면 ad_set_idcreative_id를 사용합니다.

curl -X POST \ -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/v21.0/act_<AD_ACCOUNT_ID>/ads
'use strict'; const bizSdk = require('facebook-nodejs-business-sdk'); const AdAccount = bizSdk.AdAccount; const Ad = bizSdk.Ad; const access_token = '<ACCESS_TOKEN>'; const app_secret = '<APP_SECRET>'; const app_id = '<APP_ID>'; const id = '<AD_ACCOUNT_ID>'; const api = bizSdk.FacebookAdsApi.init(access_token); const showDebugingInfo = true; // Setting this to true shows more debugging info. if (showDebugingInfo) { api.setDebug(true); } const logApiCallResult = (apiCallName, data) => { console.log(apiCallName); if (showDebugingInfo) { console.log('Data:' + JSON.stringify(data)); } }; let fields, params; fields = [ ]; params = { 'name' : 'My Ad', 'adset_id' : '<adSetID>', 'creative' : {'creative_id':'<adCreativeID>'}, 'status' : 'PAUSED', }; const ads = (new AdAccount(id)).createAd( fields, params ); logApiCallResult('ads api call complete.', ads);
require __DIR__ . '/vendor/autoload.php'; use FacebookAds\Object\AdAccount; use FacebookAds\Object\Ad; use FacebookAds\Api; use FacebookAds\Logger\CurlLogger; $access_token = '<ACCESS_TOKEN>'; $app_secret = '<APP_SECRET>'; $app_id = '<APP_ID>'; $id = '<AD_ACCOUNT_ID>'; $api = Api::init($app_id, $app_secret, $access_token); $api->setLogger(new CurlLogger()); $fields = array( ); $params = array( 'name' => 'My Ad', 'adset_id' => '<adSetID>', 'creative' => array('creative_id' => '<adCreativeID>'), 'status' => 'PAUSED', ); echo json_encode((new AdAccount($id))->createAd( $fields, $params )->exportAllData(), JSON_PRETTY_PRINT);
from facebook_business.adobjects.adaccount import AdAccount from facebook_business.adobjects.ad import Ad from facebook_business.api import FacebookAdsApi access_token = '<ACCESS_TOKEN>' app_secret = '<APP_SECRET>' app_id = '<APP_ID>' id = '<AD_ACCOUNT_ID>' FacebookAdsApi.init(access_token=access_token) fields = [ ] params = { 'name': 'My Ad', 'adset_id': '<adSetID>', 'creative': {'creative_id':'<adCreativeID>'}, 'status': 'PAUSED', } print AdAccount(id).create_ad( fields=fields, params=params, )
import com.facebook.ads.sdk.*; import java.io.File; import java.util.Arrays; public class SAMPLE_CODE_EXAMPLE { public static void main (String args[]) throws APIException { String access_token = \"<ACCESS_TOKEN>\"; String app_secret = \"<APP_SECRET>\"; String app_id = \"<APP_ID>\"; String id = \"<AD_ACCOUNT_ID>\"; APIContext context = new APIContext(access_token).enableDebug(true); new AdAccount(id, context).createAd() .setName(\"My Ad\") .setAdsetId(<adSetID>L) .setCreative( new AdCreative() .setFieldId(\"<adCreativeID>\") ) .setStatus(Ad.EnumStatus.VALUE_PAUSED) .execute(); } }
require 'facebook_ads' access_token = '<ACCESS_TOKEN>' app_secret = '<APP_SECRET>' app_id = '<APP_ID>' id = '<AD_ACCOUNT_ID>' FacebookAds.configure do |config| config.access_token = access_token config.app_secret = app_secret end ad_account = FacebookAds::AdAccount.get(id) ads = ad_account.ads.create({ name: 'My Ad', adset_id: '<adSetID>', creative: {'creative_id':'<adCreativeID>'}, status: 'PAUSED', })

다음 단계

광고 미리 보기

광고 미리 보기 API를 사용하여 카탈로그용으로 어드밴티지+ 크리에이티브의 미리 보기를 생성할 수 있습니다. 미리 보기에 표시할 카탈로그 항목을 지정하려면 product_item_ids 매개변수를 포함합니다.

광고 미리 보기 API를 사용하여 광고의 미리 보기를 생성합니다. 미리 보기에 표시할 카탈로그 항목을 지정하려면 product_item_ids를 포함하고, 특정 날짜를 지정하려면 start_dateend_date를 포함하면 됩니다.

curl -X GET \ -d 'ad_format="DESKTOP_FEED_STANDARD"' \ -d 'product_item_ids=[ "<PRODUCT_ITEM_ID>" ]' \ -d 'access_token=<ACCESS_TOKEN>' \ https://graph.facebook.com/v21.0/<CREATIVE_ID>/previews
'use strict'; const bizSdk = require('facebook-nodejs-business-sdk'); const AdCreative = bizSdk.AdCreative; const AdPreview = bizSdk.AdPreview; const access_token = '<ACCESS_TOKEN>'; const app_secret = '<APP_SECRET>'; const app_id = '<APP_ID>'; const id = '<AD_CREATIVE_ID>'; const api = bizSdk.FacebookAdsApi.init(access_token); const showDebugingInfo = true; // Setting this to true shows more debugging info. if (showDebugingInfo) { api.setDebug(true); } const logApiCallResult = (apiCallName, data) => { console.log(apiCallName); if (showDebugingInfo) { console.log('Data:' + JSON.stringify(data)); } }; let fields, params; fields = [ ]; params = { 'ad_format' : 'DESKTOP_FEED_STANDARD', 'product_item_ids' : ['<productItemID>'], }; const previewss = (new AdCreative(id)).getPreviews( fields, params ); logApiCallResult('previewss api call complete.', previewss);
require __DIR__ . '/vendor/autoload.php'; use FacebookAds\Object\AdCreative; use FacebookAds\Object\AdPreview; use FacebookAds\Api; use FacebookAds\Logger\CurlLogger; $access_token = '<ACCESS_TOKEN>'; $app_secret = '<APP_SECRET>'; $app_id = '<APP_ID>'; $id = '<AD_CREATIVE_ID>'; $api = Api::init($app_id, $app_secret, $access_token); $api->setLogger(new CurlLogger()); $fields = array( ); $params = array( 'ad_format' => 'DESKTOP_FEED_STANDARD', 'product_item_ids' => array('<productItemID>'), ); echo json_encode((new AdCreative($id))->getPreviews( $fields, $params )->getResponse()->getContent(), JSON_PRETTY_PRINT);
from facebook_business.adobjects.adcreative import AdCreative from facebook_business.adobjects.adpreview import AdPreview from facebook_business.api import FacebookAdsApi access_token = '<ACCESS_TOKEN>' app_secret = '<APP_SECRET>' app_id = '<APP_ID>' id = '<AD_CREATIVE_ID>' FacebookAdsApi.init(access_token=access_token) fields = [ ] params = { 'ad_format': 'DESKTOP_FEED_STANDARD', 'product_item_ids': ['<productItemID>'], } print AdCreative(id).get_previews( fields=fields, params=params, )
import com.facebook.ads.sdk.*; import java.io.File; import java.util.Arrays; public class SAMPLE_CODE_EXAMPLE { public static void main (String args[]) throws APIException { String access_token = \"<ACCESS_TOKEN>\"; String app_secret = \"<APP_SECRET>\"; String app_id = \"<APP_ID>\"; String id = \"<AD_CREATIVE_ID>\"; APIContext context = new APIContext(access_token).enableDebug(true); new AdCreative(id, context).getPreviews() .setAdFormat(AdPreview.EnumAdFormat.VALUE_DESKTOP_FEED_STANDARD) .setProductItemIds(\"[\\"<productItemID>\\"]\") .execute(); } }
require 'facebook_ads' access_token = '<ACCESS_TOKEN>' app_secret = '<APP_SECRET>' app_id = '<APP_ID>' id = '<AD_CREATIVE_ID>' FacebookAds.configure do |config| config.access_token = access_token config.app_secret = app_secret end ad_creative = FacebookAds::AdCreative.get(id) previewss = ad_creative.previews({ fields: { }, ad_format: 'DESKTOP_FEED_STANDARD', product_item_ids: ['<productItemID>'], })

매개변수

필드 이름 및 유형 설명

product_item_ids

유형: array[string]

  • 호텔: 호텔 FBID 또는 Base64url로 인코딩된 호텔 ID 토큰 리스트. 각 토큰은 hotel_catalog:{catalog_id}:{base64urlencode(hotel_id)} 형식입니다.
  • 목적지: 목적지 FBID 또는 Base64url로 인코딩된 목적지 ID 토큰 리스트. 각 토큰은 destination_catalog:{catalog_id}:{base64urlencode(destination_id)} 형식입니다.
  • 항공편: 항공편 FBID 또는 Base64url로 인코딩된 항공편 ID 토큰. 각 토큰은 flight_catalog:{catalog_id}:{base64urlencode(destination_id)} 형식입니다.

start_date

유형: string

사용자의 의향 신호로 미리 보기를 렌더링합니다(예: 2016-12-24).

  • 호텔의 경우 trip.checkin_date 값일 것입니다.
  • 목적지의 경우 trip.travel_start 값일 것입니다.
  • 항공편의 경우 trip.departing_departure_date 값일 것입니다.

end_date

유형: string

사용자의 의향 신호로 미리 보기를 렌더링합니다(예: 2017-01-01).

  • 호텔의 경우 trip.checkout_date 값일 것입니다.
  • 목적지의 경우 trip.travel_end 값일 것입니다.
  • 항공편의 경우 trip.returning_departure_date 값일 것입니다.

여행 광고 인사이트 및 통계 가져오기

여행 개체(예: 호텔)의 광고 인사이트를 가져오려면 /insightsGET 호출을 보내야 합니다. 참고: product_idbreakdown 매개변수에 추가하는 것을 잊지 마세요.

호텔과 목적지의 경우 각 hotel_id 또는 destination_id에 대한 product id 분석 데이터가 표시됩니다. 항공편의 경우 product id 분석 데이터에 origin_airport:destination_airport가 표시됩니다.

댓글 및 좋아요 가져오기

어드밴티지+ 카탈로그 광고의 댓글이나 '좋아요'를 검색하려면 다이내믹 게시물 API를 사용하세요.