Effectuez automatiquement la promotion de vos offres de voyage sur Facebook. Les publicités de voyage de Facebook tirent parti des signaux d’intention multi-appareil pour promouvoir automatiquement les offres de voyage pertinentes à l’aide de contenus publicitaires uniques sur Facebook.
Les publicités de voyage comprennent les publicités pour les hôtels, les publicités pour les vols et les publicités pour les destinations.
Ce guide part des principes suivants :
Les publicités de voyage sont compatibles avec diverses stratégies de ciblage. Vous pouvez viser des objectifs commerciaux variés en combinant la bonne audience et le bon ensemble de produits :
Reciblage : proposez des hôtels, destinations ou vols adéquats aux personnes qui ont déjà consulté votre site Web ou votre application pour en rechercher.
Ventes croisées et incitatives : ciblez les personnes qui ont acheté un billet d’avion en leur proposant des chambres d’hôtel pertinentes, ou invitez-les à choisir leur siège ou l’option d’embarquement prioritaire.
Prospection : étendez la portée de votre publicité et trouvez une nouvelle clientèle en ciblant des audiences de prospection.
Après avoir créé des publicités de voyage, vous devez suivre la même procédure que pour tout autre type de publicité Facebook avec l’API :
Les publicités de voyage utilisent l’objectif PRODUCT_CATALOG_SALES
. Spécifiez un catalogue de voyages dans le champ promoted_object
au niveau de la campagne :
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
Une fois que vous avez créé la campagne et obtenu son campaign_id
, vous pouvez créer l’ensemble de publicités. L’ensemble de publicités définit les options d’enchère et de ciblage pour vos publicités.
Pour recibler les personnes visitant votre site Web ou celles utilisant votre application, utilisez une audience dynamique du même type que celui de l’ensemble de produits dont vous faites la promotion. Par exemple, faites la promotion d’un hôtel auprès d’une audience intéressée par les hôtels, d’un vol auprès d’une audience intéressée par les vols et d’une destination auprès d’une audience intéressée par les destinations.
Pour les ventes croisées et incitatives auprès de personnes qui ont effectué un achat sur votre site Web et/ou votre application, utilisez une audience dynamique contenant ces personnes, puis proposez-leur des offres issues d’un autre catalogue. Par exemple, ciblez une audience ayant acheté des billets d’avion à l’aide d’un ensemble d’hôtels ou d’un autre ensemble de vols avec l’option de choix du siège.
OFFSITE_CONVERSIONS
avec des signaux d’intention plus forts, tels que Purchase
ou InitiateCheckout
. Consultez aussi la page Publicités de catalogue Advantage+, Ciblage d’une audience large
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
Les publicités de voyage ne sont pas compatibles avec les spécifications de ciblage d’audience dynamique intégré au niveau de l’ensemble de publicités. Vous devez d’abord créer une audience séparément.
Vous pouvez utiliser des tags de modèle dans les contenus publicitaires de vos publicités de voyage. Lorsque Facebook diffuse votre publicité, nous remplaçons les tags de modèle par les préférences de voyage réelles des internautes. Vous pouvez utiliser ces tags directement dans la publicité et dans l’URL que la personne voit après avoir cliqué sur la publicité.
Renseignez le champ template_url_spec
pour spécifier l’URL qui s’affiche lorsqu’une personne clique sur la publicité. Si vous laissez ce champ vide, ou si nous ne parvenons pas à le récupérer au moment de diffuser la publicité, nous affichons l’URL issue du catalogue. Dans le cas des publicités pour les vols, ce champ est obligatoire si aucune URL n’est fournie dans le catalogue.
Vous pouvez choisir d’afficher un seul article ou un carrousel de plusieurs articles. Dans le cas d’une publicité pour un seul article, vous pouvez afficher plusieurs images du même article dans un carrousel, en supposant que votre catalogue contienne plusieurs images par article. Vous pouvez également afficher des cartes statiques combinées à des cartes dynamiques. Pour en savoir plus sur les options disponibles, consultez la Page Publicités de catalogue Advantage+, Créer un modèle de contenu.
Découvrez comment créer un carrousel de contenus pour les publicités pour les hôtels dans l’exemple suivant. Les publicités pour les destinations et les publicités pour les vols ont la même configuration.
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
Pour les options de vente incitative, telles que le choix du siège ou l’embarquement prioritaire auprès d’une audience ayant acheté ces billets d’avion :
PURCHASE
.recommender_settings
du contenu publicitaire, spécifiez les évènements PURCHASE
comme méthode pour recommander des publicités.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
Les superpositions permettent aux annonceurs d’ajouter des informations tarifaires (sous la forme d’un prix direct ou d’un pourcentage de réduction) pour chaque article d’une publicité de catalogue Advantage+.
Vous pouvez appliquer les types de superposition suivants en fonction du type de catalogue que vous utilisez dans l’ensemble de publicités :
price
, strikethrough
et % off
price
price
Remarque : pour chaque type de catalogue, tous les tags de modèle relatifs au prix sont acceptés pour les options de superposition ci-dessus. Pour afficher les tags de modèle de chaque type de catalogue, consultez les rubriques hôtels, destinations et vols.
Les informations tarifaires sont extraites des colonnes « price » et « sale price » du flux de manière dynamique. Les annonceurs ont le choix entre les personnalisations suivantes pour leur superposition de publicités de catalogue Advantage+ :
TOP_LEFT
, TOP_RIGHT
, BOTTOM_LEFT
et BOTTOM_RIGHT
. Pour « triangle », seules les positions TOP_LEFT
et TOP_RIGHT
sont prises en charge.price
, strikethrough
et % off
. Remarque : strikethrough
et % off
sont disponibles uniquement pour les hôtels.En savoir plus sur l’ajout de superpositions.
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
Pour créer la publicité, utilisez ad_set_id
et 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
Vous pouvez générer un aperçu de votre contenu publicitaire pour catalogue Advantage+ à l’aide de l’API Ad Previews. Incluez le paramètre product_item_ids
afin de spécifier les articles du catalogue affichés dans l’aperçu.
Générez un aperçu de votre publicité avec l’API Ad Previews. Incluez le paramètre product_item_ids
afin de spécifier les articles du catalogue qui s’afficheront dans l’aperçu, et les paramètres start_date
et end_date
pour indiquer des dates spécifiques.
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
Nom et type du champ | Description |
---|---|
type : |
|
type : | Génère l’aperçu en fonction du signal d’intention de l’utilisateur ou l’utilisatrice, par exemple : 2016-12-24.
|
type : | Génère l’aperçu en fonction du signal d’intention de l’utilisateur ou l’utilisatrice, par exemple : 2017-01-01.
|
Pour récupérer des insights publicitaires concernant un voyage, par exemple, sur un hôtel, envoyez un appel GET
à /insights
. Remarque : n’oubliez pas d’ajouter product_id
au paramètre breakdown
.
Pour les hôtels et destinations, la répartition des product id
est affichée pour chaque hotel_id
ou destination_id
. Pour les vols, la répartition des product id
affiche les informations du champ origin_airport:destination_airport
.
Pour récupérer des commentaires ou des mentions J’aime associés à des publicités de catalogue Advantage+, utilisez l’API Dynamic Post.