Promova seu inventário de viagens no Facebook de forma automática. Os anúncios de viagem do Facebook usam sinais de intenção em todos os dispositivos para promover automaticamente as opções de viagem relevantes do inventário com criativos únicos no Facebook.
Os anúncios de viagem são compatíveis com anúncios de hotel, de voo e de destino.
Este guia pressupõe que você já tenha feito o seguinte:
Os anúncios de viagem são compatíveis com diferentes estratégias de direcionamento. Impulsione diferentes objetivos de negócios ao combinar o público e o conjunto de produtos apropriado:
Redirecionamento: mostre hotéis, destinos ou voos relevantes para pessoas que visitaram seu site ou app em busca de hotéis, destinos ou voos.
Venda cruzada e upsell: direcione hotéis relevantes a pessoas que tenham comprado um voo ou faça upsell de embarque prioritário ou seleção de assentos.
Prospecção: aumente o alcance do anúncio e encontre novos clientes com o direcionamento da prospecção de públicos.
Para criar anúncios de viagem, siga o mesmo processo de configuração dos outros tipos de anúncio do Facebook com a API.
Os anúncios de viagem usam o objetivo PRODUCT_CATALOG_SALES
. Especifique um catálogo de viagens em promoted_object
no nível da campanha:
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
Assim que tiver a campanha e campaign_id
, crie o conjunto de anúncios. O conjunto define as opções de lance e direcionamento dos anúncios.
Para fazer o redirecionamento de visitantes do site ou do app, use um público dinâmico do mesmo tipo que o conjunto de produtos que você está promovendo. Por exemplo, promova um conjunto de hotéis a um público de hotel, um conjunto de voos a um público de voo e um conjunto de destinos a um público de destino.
Se quiser fazer venda cruzada ou upsell com clientes que compraram no seu site e/ou app, use um público dinâmico que contenha essas pessoas e promova opções de viagem de outro catálogo. Por exemplo, faça o direcionamento de um público de compra de voo com um conjunto de hotéis ou com outro conjunto de voos que destaque a escolha de assentos.
OFFSITE_CONVERSIONS
com sinais de intenção mais fortes, por exemplo, Purchase
ou InitiateCheckout
. Consulte também Introdução aos Anúncios de Catálogo Advantage+ – Direcionamento a um público amplo.
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
Os anúncios de viagem não são compatíveis com especificações de direcionamento de público dinâmico inline no conjunto de anúncios. Primeiro, você precisa criar um público separadamente.
Para anúncios de viagem, você pode usar tags de modelo nos criativos do anúncio. Quando o Facebook exibe seu anúncio, ele substitui as tags de modelo por escolhas reais de viagem da pessoa. É possível usar tags de modelo no próprio anúncio, bem como na URL visualizada pelas pessoas quando elas clicam no anúncio.
Use o campo template_url_spec
para especificar a URL que aparecerá depois que alguém clicar no anúncio. Se a URL não for fornecida ou se não for possível obtê-la ao renderizar o anúncio, exibiremos a URL do catálogo. Para anúncios de voo, este campo será obrigatório se você não fornecer uma URL no catálogo.
Você pode exibir um item ou um carrossel com vários deles. Para anúncios de item único, você pode exibir várias imagens do mesmo item no carrossel caso o catálogo tenha diversas imagens por item. Também é possível mostrar cartões estáticos e cartões dinâmicos. Para mais informações sobre opções de criativo, consulte Introdução aos Anúncios de Catálogo Advantage+ – Criar um modelo de criativo.
O exemplo a seguir mostra como gerar um criativo de carrossel para anúncios de hotéis. Os anúncios de destinos e de voos são configurados de forma semelhante.
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
Quanto a opções de upsell, como escolha de assentos ou embarque prioritário para um público que comprou voos, você precisará fazer o seguinte:
PURCHASE
.recommender_settings
do criativo do anúncio, especifique eventos de PURCHASE
para recomendar anúncios (preferencial).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
As sobreposições permitem que os anunciantes adicionem informações de preços (como preço direto ou porcentagem de desconto) sobre cada item dos anúncios de catálogo Advantage+.
É possível usar os seguintes tipos de sobreposição, dependendo do tipo de catálogo do conjunto de anúncios:
price
, strikethrough
e % off
price
price
Observação: todas as tags de modelo relacionadas a preços de cada tipo de catálogo são compatíveis com as opções de sobreposição acima. Para ver as tags de modelo de cada tipo de catálogo, consulte as documentações sobre hotéis, destinos e voos.
As informações de preços são obtidas de forma dinâmica a partir das colunas de preço e de preço de venda do feed. Os anunciantes podem escolher as seguintes personalizações para os anúncios de catálogo Advantage+:
TOP_LEFT
, TOP_RIGHT
, BOTTOM_LEFT
e BOTTOM_RIGHT
). Para triângulo, apenas TOP_LEFT
e TOP_RIGHT
são compatíveis.price
, strikethrough
e % off
. Observação: strikethrough
e % off
estão disponíveis somente para hotéis.Saiba mais sobre como adicionar sobreposições.
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
Para criar o anúncio, use ad_set_id
e creative_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
Você pode gerar uma prévia do Criativo Advantage+ para Catálogo com a API de Prévias de Anúncio. Inclua o parâmetro product_item_ids
para especificar quais itens do catálogo serão exibidos na prévia.
Gere uma prévia do anúncio com a API de Prévias de Anúncio. Inclua product_item_ids
para especificar quais itens do catálogo serão exibidos na prévia, bem como start_date
e end_date
para definir datas específicas.
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
Tipo e nome do campo | Descrição |
---|---|
Tipo: |
|
Tipo: | Renderiza a prévia com o sinal de intenção do usuário, por exemplo, 2016-12-24.
|
Tipo: | Renderiza a prévia com o sinal de intenção do usuário, por exemplo, 2017-01-01.
|
Para obter Insights sobre anúncios para um objeto de viagem (como um hotel), faça uma chamada GET
a /insights
. Observação: lembre-se de adicionar product_id
ao parâmetro breakdown
.
Para hotel e destino, o detalhamento product id
será exibido para cada hotel_id
ou destination_id
. Para voo, o detalhamento product id
exibirá origin_airport:destination_airport
.
Para recuperar comentários e curtidas de anúncios de catálogo Advantage+, use a API de Publicação Dinâmica.