Travel Ads

Hebe deine Reiseangebote automatisch auf Facebook hervor. Die Travel Ads von Facebook nutzen geräteübergreifende Signale für Kaufabsichten, um automatisch relevante Reiseoptionen aus deinem Sortiment mit einzigartigen Werbeanzeigen auf Facebook zu bewerben.

Travel Ads unterstützen Hotel Ads, Flight Ads und Destination Ads.

Dieser Leitfaden setzt Folgendes voraus:

  • Du verfügst über einen Katalog und eine Produktpalette.
  • Du hast die erforderlichen Reise-Events auf deiner Webseite oder in der mobilen App eingerichtet.
  • (Erforderlich) Du hast eine Facebook-Seite und ein Werbekonto eingerichtet.

Targeting-Strategien

Travel Ads unterstützen verschiedene Targeting-Strategien. Du kannst verschiedene Geschäftsziele verfolgen, indem du die richtige Zielgruppe mit der richtigen Produktpalette kombinierst:

  • Retargeting: Zeige relevante Hotels, Ziele oder Flüge für Personen an, die deine Webseite oder App auf der Suche nach Hotels, Zielen oder Flügen besucht haben.

  • Cross-Sell und Upsell: Richte dich mit passenden Hotels an Personen, die ein Flugticket gekauft haben, oder führe ein Upselling für Priority Boarding oder Sitzplatzwahl durch.

  • Neukund*innengewinnung: Vergrößere die Reichweite deiner Werbeanzeige und finde neue Kund*innen durch Targeting von Neukund*innenzielgruppen.

Travel Ads einrichten

Die Erstellung von Travel Ads erfolgt nach demselben Prozess wie die Einrichtung jedes anderen Facebook-Anzeigentyps mit der API:

Schritt 1. Kampagne erstellen

Travel Ads verwenden das Ziel PRODUCT_CATALOG_SALES. Gib auf Kampagnenebene einen Katalog mit Reiseangeboten im promoted_object an:

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

Schritt 2. Anzeigengruppe erstellen

Wenn du die Kampagne erstellt hast und über die campaign_id verfügst, kannst du die Anzeigengruppe erstellen. Die Anzeigengruppe definiert die Gebots- und Targeting-Optionen für deine Werbeanzeigen.

Retargeting

Nutze für das Retargeting von Webseiten- oder App-Besucher*innen eine dynamische Zielgruppe desselben Typs wie die Produktpalette, die du hervorhebst. Hebe beispielsweise eine Hotelgruppe für eine Hotel-Zielgruppe hervor, einen Flug für eine Flug-Zielgruppe und ein Reiseziel für eine Reiseziel-Zielgruppe.

Cross-Sell und Upsell

Verwende für das Cross-Selling und Upselling an Personen, die auf deiner Webseite und/oder in deiner App gekauft haben, eine dynamische Zielgruppe mit ebendiesen Personen. Biete ihnen Reiseoptionen aus einem anderen Katalog, d. h. richte dich an eine Flugkauf-Zielgruppe mit einer Hotelgruppe oder einer anderen Fluggruppe mit spezieller Sitzplatzwahl.

Neukund*innengewinnung

  • Erstelle eine Zielgruppe anhand von demografischem Targeting, wie zum Beispiel Frauen in den USA über 18.
  • Schließe Kund*innen mit ein, an die sich bestehende Retargeting-Kampagnen richten, aber schließe Personen aus, die in den letzten 10 Tagen etwas gekauft haben.
  • Verwende eine breite Produktpalette mit über 100 Hotels.
  • Optimiere für OFFSITE_CONVERSIONS mit stärkeren Intent-Signalen, wie zum Beispiel Purchase oder InitiateCheckout.

Siehe auch Advantage+ Catalog Ads, Broad Audience-Targeting

Anzeigengruppe erstellen – Beispiel

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

Travel Ads unterstützen keine Spezifikationen für das Inline-Targeting von dynamischen Zielgruppen in der Anzeigengruppe. Du musst zunächst eine separate Zielgruppe erstellen.

Schritt 3. Werbeanzeige gestalten

Du kannst in deiner Anzeigengestaltung für Travel Ads Vorlagen-Tags verwenden. Wenn Facebook deine Anzeige anzeigt, ersetzen wir die Vorlagen-Tags durch die tatsächlichen Reiseauswahlen eines*einer Nutzerin. Du kannst sowohl in der eigentlichen Anzeige Vorlagen-Tags verwenden als auch in der URL, die angezeigt wird, wenn jemand auf die Anzeige klickt.

Verwende das template_url_spec-Feld, um die URL anzugeben, die erscheint, wenn jemand auf die Werbeanzeige klickt. Wenn du diese URL nicht angibst oder wir sie beim Rendern einer Werbeanzeige nicht ableiten können, wird die URL aus dem Katalog angezeigt. Bei Flight Ads ist dieses Feld obligatorisch, wenn du im Katalog keine URL angibst.

Du kannst wählen, ob du einen einzelnen Artikel oder ein Carousel mit mehreren Artikeln präsentieren möchtest. Für Anzeigen mit einzelnen Artikeln kannst du mehrere Bilder eines Artikels im Carousel anzeigen, vorausgesetzt, dein Katalog enthält mehrere Bilder zu jedem Artikel. Statische Karten können in Kombination mit dynamischen Karten angezeigt werden. Weitere Informationen zu den Gestaltungsoptionen findest du unter Advantage+ Catalog Ads, Gestaltungsvorlage erstellen.

Im folgenden Beispiel wird gezeigt, wie du eine Carousel-Anzeigengestaltung für Hotel Ads erstellst. Dynamic Ads für Ziele und Flight Ads haben ein ähnliches Setup.

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

Flug-Upselling (nur API v2.10+)

Upselling wie etwa Sitzplatzauswahl oder Priority Boarding für eine Zielgruppe, die gerade Flugtickets erworben hat, ist wie folgt möglich:

  1. Gib eine Zielgruppe an, indem du nur PURCHASE-Events berücksichtigst.
  2. (Bevorzugt) Gib in den recommender_settings der Anzeigengestaltung PURCHASE-Events für die Anzeigenempfehlung an.
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

Gestaltung des Overlays

Mit Overlays können Werbetreibende für jeden Artikel in Advantage+ Catalog Ads Preisinformationen (als direkten Preis oder Preisnachlass in Prozent) hinzufügen.

Overlay-Optionen nach Katalogtyp

Je nach Katalogtyp, den du in der Anzeigengruppe verwendest, kannst du die folgenden Overlay-Typen verwenden:

  • Hotel: price, strikethrough und % off
  • Reiseziel: price
  • Flug: price

Hinweis: Für die oben genannten Overlay-Optionen werden alle preisbezogenen Vorlagen-Tags für jeden Katalogtyp unterstützt. Vorlagen-Tags für die verschiedenen Katalogtypen findest du unter Hotels, Reiseziele und Flüge.

Optionen zur Gestaltung des Overlays

Die Preisinformationen werden dynamisch aus den Spalten für Preis und Verkaufspreis des Feeds abgerufen. Werbetreibenden stehen für ihre Overlays für Advantage+ Catalog Ads die folgenden Anpassungen zur Auswahl:

  • Formen: Rechteck, Kreis und Dreieck.
  • Positionen: 4 feste Ecken: TOP_LEFT, TOP_RIGHT, BOTTOM_LEFT und BOTTOM_RIGHT. Bei Dreiecken werden nur TOP_LEFT und TOP_RIGHT unterstützt.
  • Schriftarten: Es gibt eine Liste voreingestellter Schriftarten, z. B. Droid Serif, Open Sans usw.
  • Unterstützte Overlay-Typen: price, strikethrough und % off. Hinweis: strikethrough und % off sind nur für Hotels verfügbar.

Weitere Informationen dazu findest du unter Hinzufügen von Overlays.

Beispiel – Preis-Overlay mit durchgestrichenen Zeichen bei einer Hotelanzeige

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

Nutze ad_set_id und creative_id, um die Anzeige zu erstellen.

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

Nächste Schritte

Vorschau der Anzeige durchführen

Du kannst eine Vorschau deiner Advantage+-Anzeigengestaltung für Katalog mit der Ad Previews API erstellen. Gib mit dem Parameter product_item_ids an, welche Katalogelemente in der Vorschau angezeigt werden sollen.

Erstelle eine Vorschau deiner Werbeanzeige mit der Ad Previews API. Gib mit den product_item_ids an, welche Katalogelemente in der Vorschau angezeigt werden, mit start_date und end_date als konkreten Daten.

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

Parameter

Feldname und -typ Beschreibung

product_item_ids

Typ: array[string]

  • Hotel: Liste der Base64url-kodierten Hotel-ID-Schlüssel oder FBID für das Hotel. Jeder Schlüssel hat die Form hotel_catalog:{catalog_id}:{base64urlencode(hotel_id)}.
  • Reiseziel: Liste der Base64url-kodierten Reiseziel-ID-Schlüssel oder FBID für das Reiseziel. Jeder Schlüssel hat die Form destination_catalog:{catalog_id}:{base64urlencode(destination_id)}.
  • Flug: Flug-FBID oder Base64url-kodierter Flug-ID-Schlüssel. Jeder Schlüssel hat die Form flight_catalog:{catalog_id}:{base64urlencode(destination_id)}.

start_date

Typ: string

Generiere die Vorschau mit dem Intent-Signal des*der Nutzer*in, z. B. 2016-12-24.

  • Bei Hotels wäre dies der Wert von trip.checkin_date.
  • Bei Reisezielen wäre dies der Wert von trip.travel_start.
  • Bei Flügen wäre dies der Wert von trip.departing_departure_date.

end_date

Typ: string

Generiere die Vorschau mit dem Intent-Signal des*der Nutzer*in, z. B. 2017-01-01.

  • Bei Hotels wäre dies der Wert von trip.checkout_date.
  • Bei Reisezielen wäre dies der Wert von trip.travel_end.
  • Bei Flügen wäre dies der Wert von trip.returning_departure_date.

Abrufen von Insights und Statistiken zu Reiseanzeigen

Um Anzeigen-Insights für eine Reiseposition wie ein Hotel zu erhalten, sende einen GET-Aufruf an /insights. Hinweis: Füge product_id zum Parameter breakdown hinzu.

Bei Hotels und Reisezielen wird die product id-Aufschlüsselung für jede hotel_id bzw. destination_id angezeigt. Bei Flügen zeigt die product id-Aufschlüsselung origin_airport:destination_airport.

Abrufen von Kommentaren und „Gefällt mir“-Angaben

Verwende die Dynamic Post API, um Kommentare oder „Gefällt mir“-Angaben zu Advantage+ Catalog Ads abzurufen.