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:
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.
Die Erstellung von Travel Ads erfolgt nach demselben Prozess wie die Einrichtung jedes anderen Facebook-Anzeigentyps mit der API:
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
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.
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.
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.
OFFSITE_CONVERSIONS
mit stärkeren Intent-Signalen, wie zum Beispiel Purchase
oder InitiateCheckout
. Siehe auch Advantage+ Catalog Ads, Broad Audience-Targeting
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.
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
Upselling wie etwa Sitzplatzauswahl oder Priority Boarding für eine Zielgruppe, die gerade Flugtickets erworben hat, ist wie folgt möglich:
PURCHASE
-Events berücksichtigst.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
Mit Overlays können Werbetreibende für jeden Artikel in Advantage+ Catalog Ads Preisinformationen (als direkten Preis oder Preisnachlass in Prozent) hinzufügen.
Je nach Katalogtyp, den du in der Anzeigengruppe verwendest, kannst du die folgenden Overlay-Typen verwenden:
price
, strikethrough
und % off
price
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.
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:
TOP_LEFT
, TOP_RIGHT
, BOTTOM_LEFT
und BOTTOM_RIGHT
. Bei Dreiecken werden nur TOP_LEFT
und TOP_RIGHT
unterstützt.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.
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
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
Feldname und -typ | Beschreibung |
---|---|
Typ: |
|
Typ: | Generiere die Vorschau mit dem Intent-Signal des*der Nutzer*in, z. B. 2016-12-24.
|
Typ: | Generiere die Vorschau mit dem Intent-Signal des*der Nutzer*in, z. B. 2017-01-01.
|
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
.
Verwende die Dynamic Post API, um Kommentare oder „Gefällt mir“-Angaben zu Advantage+ Catalog Ads abzurufen.