Publicités de voyages

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 :

  • Vous disposez d’un catalogue et d’un ensemble de produits définis.
  • Vous avez configuré les évènements associés aux voyages requis sur votre site Web ou votre application mobile.
  • (Obligatoire) Vous avez créé une Page Facebook et un compte publicitaire.

Stratégies de ciblage

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.

Configurer les publicités de voyage

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 :

Étape 1. Créer une campagne

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

Étape 2. Créer un ensemble de publicités

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.

Reciblage

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.

Ventes croisées et incitatives

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.

Prospection

  • Créez une audience à partir de critères démographiques de base, par exemple, les femmes résidant aux États-Unis âgées de plus de 18 ans.
  • Incluez la clientèle visée par vos campagnes de reciblage en cours, mais pensez à exclure les personnes qui ont effectué un achat au cours des dix derniers jours.
  • Utilisez un ensemble de produits large contenant plus de 100 hôtels.
  • Optimisez les 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

Exemple de création d’un ensemble de publicités

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.

Étape 3. Créer un contenu publicitaire

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

Vente incitative de vols (API v2.10 et versions ultérieures uniquement)

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 :

  1. Spécifiez une audience en incluant uniquement les évènements PURCHASE.
  2. (Privilégié) Dans les 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

Conception de superposition

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+.

Options de superposition par type de catalogue

Vous pouvez appliquer les types de superposition suivants en fonction du type de catalogue que vous utilisez dans l’ensemble de publicités :

  • Hôtel : price, strikethrough et % off
  • Destination : price
  • Vol : 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.

Options de conception de superposition

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+ :

  • Formes : rectangle, cercle et triangle.
  • Positions : quatre coins fixes, TOP_LEFT, TOP_RIGHT, BOTTOM_LEFT et BOTTOM_RIGHT. Pour « triangle », seules les positions TOP_LEFT et TOP_RIGHT sont prises en charge.
  • Polices : liste de polices prédéfinies, telles que Droid Serif, Open Sans, etc.
  • Types de superposition pris 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.

Exemple : filtre Prix avec le style Barré pour une publicité pour un hôtel

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
'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', })

Étapes suivantes

Afficher un aperçu de la publicité

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
'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>'], })

Paramètres

Nom et type du champ Description

product_item_ids

type : array[string]

  • Hôtel : liste de tokens FBID d’hôtel ou d’ID d’hôtel encodés au format Base64url. Chaque token est au format hotel_catalog:{catalog_id}:{base64urlencode(hotel_id)}
  • Destination : liste de tokens FBID de destination ou d’ID de destination encodés au format Base64url. Chaque token est au format destination_catalog:{catalog_id}:{base64urlencode(destination_id)}
  • Vol : token FBID de vol ou ID de vol encodé au format Base64url. Chaque token est au format flight_catalog:{catalog_id}:{base64urlencode(destination_id)}

start_date

type : string

Génère l’aperçu en fonction du signal d’intention de l’utilisateur ou l’utilisatrice, par exemple : 2016-12-24.

  • Pour un hôtel, prend la valeur de trip.checkin_date
  • Pour une destination, prend la valeur de trip.travel_start
  • Pour un vol, prend la valeur de trip.departing_departure_date

end_date

type : string

Génère l’aperçu en fonction du signal d’intention de l’utilisateur ou l’utilisatrice, par exemple : 2017-01-01.

  • Pour un hôtel, prend la valeur de trip.checkout_date
  • Pour une destination, prend la valeur de trip.travel_end
  • Pour un vol, prend la valeur de trip.returning_departure_date

Récupérer des statistiques et des insights publicitaires pour les voyages

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.

Récupérer des commentaires et des mentions J’aime

Pour récupérer des commentaires ou des mentions J’aime associés à des publicités de catalogue Advantage+, utilisez l’API Dynamic Post.