Hotels Ads – Kataloge und Feeds

Um dein Hotelangebot auf Facebook zu bewerben, musst du Facebook Informationen zu deinen Hotels mitteilen. Hierfür erstellst du einen Hotelkatalog und trägst Hotels ein. Es gibt zwei Möglichkeiten, den Katalog zu füllen und aktuell zu halten:

Du kannst deine Hotelkataloge in deinem Commerce Manager erstellen und verwalten.

Wenn du zur Verwaltung deines Katalogs die API verwenden möchtest, führe folgende Schritte durch:

  1. Hotelkatalog erstellen
  2. Produktpaletten aus Hotelkatalog erstellen
  3. Katalog deinen Ereignisquellen zuordnen

Hotel-Feeds – Hotels auf Facebook hochladen

Ein Hotel-Feed ist eine Datei, die deine Hotelelemente enthält. Hierbei steht jede Zeile bzw. jedes Element in der Datei für ein Hotel. Du kannst einen oder mehrere Hotel-Feeds verwenden, solange alle Feeds gemeinsam alle Hotelelemente enthalten.

Unterstützte Formate für Hotel-Feeds

CSV

CSV-Beispiel | TSV-Beispiel (Flat File) | TSV-Beispiel (JSON-Stil)

  • Die erste Zeile muss die ausgewählten Feldnamen in der Reihenfolge, in der die Werte zugewiesen werden, auflisten. Die darauffolgenden Zeilen geben dann die jeweiligen Werte für jedes Hotel an.
  • Felder mit Leerzeichen oder Kommas sollten in "doppelte Anführungszeichen" gesetzt werden.
  • Verschachtelte Felder oder Felder mit mehreren Werten, wie z. B. address, neighborhood oder image, können mithilfe von JSON-codierten Werten oder durch eine Gruppe reiner Textspalten im Flat-Format dargestellt werden, die mit der JSON-Pfadsyntax, wie z. B. address.city, neighborhood[0], image[0].url, image[0].tag[0] oder image[0].tag[1], gekennzeichnet wurden. Du kannst beide Konventionen in einer Datei verwenden.

XML

XML-Beispiel

  • Ein <listings>-XML-Stammknoten umfasst eine Gruppe von <listing>-Knoten, von denen jeder für ein Hotel steht.
  • Die Datei muss mit einem gültigen <?xml-Deklarations-Tag beginnen.

Der Feed-Parser erkennt automatisch UTF8-, UTF16- oder UTF32-Textkodierungen und verwendet standardmäßig LATIN1, wenn eine unerwartete Byte-Sequenz erkannt wird. Du kannst Text in Feldwerten in jeder beliebigen Sprache angeben. Die Feldnamen müssen jedoch wie unten beschrieben auf Englisch angegeben werden.

Unterstützte Felder – Hotel Ads

Die folgenden unterstützten Felder sind für Elemente vorgesehen, die du deinem Produktkatalog hinzufügst.

Lokalisierte Kataloge findest du in den unterstützten Feldern für Hotel Ads.

Feld und TypBeschreibung

hotel_id

Typ: string

Erforderlich.

Maximale Länge: 100

Deine eindeutige ID für das Hotel im Katalog. Diese ID wird mit den content_ids in deiner hotel-App und deinen Pixel-Events abgeglichen. Tipp: Für eine bessere Performance solltest du kein Leerzeichen für dieses eindeutige ID-Feld verwenden. Verwende keine doppelten IDs.

Beispiel: FB_hotel_1234

room_id

Typ: string

Erforderlich, wenn Hotelzimmerinformationen hinzugefügt werden.

Gib eine eindeutige ID für die Art des Hotelzimmers ein. Max. Zeichenanzahl: 100 Beispiel: FB_hotel_room_1234

name

Typ: string

Erforderlich.

Der gebräuchlichste Name des Hotels.

Beispiel: Facebook Hotel

description

Typ: string

Erforderlich.

Max. Größe: 5.000

Kurze Beschreibung des Hotels.

Beispiel: Only 30 minutes away from San Francisco.

checkin_date

Typ: string

Erforderlich, wenn Hotelzimmerinformationen hinzugefügt werden.

Anreisedatum für den Hotelaufenthalt. Du kannst einen Wert von bis zu 180 Tagen ab dem Datum angeben, an dem der Feed hochgeladen wird. Verwendet den ISO-8601-Standard (YYYY-MM-DD).

Beispiel: 2017-08-01

length_of_stay

Typ: string

Erforderlich, wenn Hotelzimmerinformationen hinzugefügt werden.

Anzahl der Übernachtungen für den Hotelaufenthalt.

Beispiel: 7

base_price

Typ: string

Erforderlich, wenn Hotelzimmerinformationen hinzugefügt werden.

Basispreis für das Hotelzimmer pro Übernachtung. Denke daran, den Währungstyp für den Preis hinzuzufügen (z. B. USD für US-Dollar). Formatiere den Preis als die Kosten gefolgt vom ISO-Währungscode mit einem Leerzeichen zwischen dem Betrag und der Währung.

Beispiel: 199.00 EUR

price

Typ: string

Erforderlich, wenn Hotelzimmerinformationen hinzugefügt werden.

Gesamtpreis der Hotelübernachtung basierend auf checkin_date und length_of_stay. Formatiere den Preis als die Kosten gefolgt vom ISO-Währungscode mit einem Leerzeichen zwischen dem Betrag und der Währung.

Beispiel: 1393.00 USD

tax

Typ: string

Erforderlich, wenn Hotelzimmerinformationen hinzugefügt werden.

Geltender Steuersatz für den Preis. Formatiere den Preis als die Kosten gefolgt vom ISO-Währungscode mit einem Leerzeichen zwischen dem Betrag und der Währung.

Beispiel: 14.00 USD

fees

Typ: string

Erforderlich, wenn Hotelzimmerinformationen hinzugefügt werden.

Geltende Gebühren für den Preis. Formatiere den Preis als die Kosten gefolgt vom ISO-Währungscode mit einem Leerzeichen zwischen dem Betrag und der Währung.

Beispiel: 253.00 USD

url

Typ: string

Erforderlich.

Link zur externen Webseite, auf der ein Hotelzimmer gebucht werden kann. Mit template_url_spec kannst du auch eine URL auf Werbeanzeigenebene angeben. URLs auf Werbeanzeigenebene haben Vorrang gegenüber URLs im Feed.

Beispiel: https://www.facebook.com/hotel

image[0].url

Typ: object

Siehe Parameter des Objekts „image“.

image[0].tag

Typ: object

Siehe Parameter des Objekts „image“.

brand

Typ: string

Erforderlich.

Markenname der Hotelkette.

Beispiel: Hilton

address

Typ: object

Siehe Parameter des Objekts „address“.

neighborhood[0]

Typ: string

Erforderlich.

Max. zulässige Stadtteile: 20

Stadtteil, in dem sich das Hotel befindet. Wenn es mehr als einen Stadtteil gibt, kannst du für jeden weiteren eine zusätzliche Spalte hinzufügen und JSON-Pfadsyntax in jedem Spaltennamen verwenden, um die Anzahl der Stadtteile anzugeben.

Beispiel: Belle Haven

latitude

Typ: float

Erforderlich.

Breitengrad des Hotels.

Beispiel: 37.484100

longitude

Typ: float

Erforderlich.

Längengrad des Hotels.

Beispiel: -122.148252

sale_price

Typ: string

Optional.

Angebotspreis pro Nacht für die Hotelübernachtung basierend auf checkin_date und length_of_stay. Verwende diesen Wert, wenn du für reduzierte Preise gegenüber dem regulären Preis werben möchtest. Denke daran, den Währungstyp für den Preis hinzuzufügen (z. B. USD für US-Dollar). Vergewissere dich, dass der sale_price eines Hotels unter dem base_price liegt. Formatiere den Preis als die Kosten gefolgt vom ISO-Währungscode mit einem Leerzeichen zwischen dem Betrag und der Währung.

Beispiel: 149.00 USD

guest_ratings.score

Typ: object

Siehe Parameter des Objekts „guest_ratings“.

guest_ratings.rating_system

Typ: object

Siehe Parameter des Objekts „guest_ratings“.

star_rating

Typ: float

Siehe Parameter des Objekts „guest_ratings“.

loyalty_program

Typ: string

Optional.

Das Treueprogramm, für das Gäste mit einer Übernachtung im Hotel Punkte sammeln.

Beispiel: Premium program

margin_level

Typ: int

Optional.

Indikator der Rentabilität des Hotels von 1 bis 10.

Beispiel: 9

phone

Typ: string

Optional.

Primäre Telefonnummer des Hotels.

Beispiel: +61 296027455

applink

Typ: object

Optional.

Deep Link direkt zur Seite mit Hoteldetails in deiner mobilen App mithilfe von App-Links. Du kannst Deep Links in folgender Rangfolge angeben (von höchster zu niedrigster):

  1. Auf Werbeanzeigenebene mithilfe von template_url_spec
  2. Hier im Feed mithilfe eines „applink“-Objekts
  3. Durch Hinzufügen von App-Link-Meta-Tags zu deiner Website

Erfahre mehr über Deep Links für Produkte.

priority

Typ: int

Optional.

Ein Indikator für die Priorität des Hotels mit Werten von 0 (niedrigste Priorität) bis 5 (höchste Priorität). Beispiel: 5

category

Typ: string

Optional.

Art der Unterkunft. Die Kategorie kann eine interne Beschreibung beliebiger Art sein. Beispiel: Resort, Day Room

number_of_rooms

Typ: int

Optional.

Gesamtzahl der Zimmer/Einheiten, die dieses Hotel anbietet.

Beispiel: 150

status

Typ: string

Damit kontrollierst du, ob ein Artikel in deinem Katalog aktiv oder archiviert ist. Nur aktive Artikel werden unseren Nutzer*innen in deinen Werbeanzeigen, Shops oder auf anderen Kanälen angezeigt. Unterstützte Werte: active, archived. Standardmäßig sind die Artikel aktiviert. Weitere Informationen findest du unter Artikel archivieren.


Beispiel: active


Hinweis: Bei einigen Partner-Plattformen wie Shopify heißt der Status möglicherweise Staging, aber wenn dein Katalog synchronisiert wird, verhält sich dieser genauso wie archived.

Dieses Feld hieß zuvor visibility. Wir unterstützen weiterhin die ehemalige Feldbezeichnung. Dennoch empfehlen wir dir, die neue Bezeichnung zu verwenden.

custom_label_0
custom_label_1
custom_label_2
custom_label_3
custom_label_4

Typ: string

Max. Zeichenanzahl: 100

Bis zu fünf selbstdefinierte Felder für zusätzliche Informationen, nach denen du Artikel filtern möchtest, wenn du Produktpaletten erstellst. Ein Beispiel: Mithilfe eines selbstdefinierten Feldes kannst du alle Zimmer kennzeichnen, die Teil einer Sommeraktion sind, und diese dann in eine Produktpalette filtern. Dieses Feld unterstützt die Angabe von Textwerten, einschließlich Zahlen.


Beispiel: Summer Sale

Dieses Feld wird von zusätzlichen Feeds unterstützt.

custom_number_0
custom_number_1
custom_number_2
custom_number_3
custom_number_4

Typ: int

Bis zu fünf selbstdefinierte Felder für zusätzliche zahlenspezifische Informationen, nach denen du Artikel filtern möchtest, wenn du Produktpaletten erstellst. Mit diesem Feld kannst du Nummernbereiche filtern (größer als und kleiner als), wenn du eine Produktpalette erstellst. Ein Beispiel: Mithilfe eines selbstdefinierten Feldes kannst du das Eröffnungsjahr eines Hotels angeben und dann einen bestimmten Jahresbereich in eine Produktpalette filtern.


Dieses Feld unterstützt ganze Zahlen zwischen 0 und 4294967295. Negative Zahlen, Dezimalzahlen oder Kommawerte werden nicht unterstützt, z. B.: -2, 5.5 oder 10,000.


Beispiel: 2022

Parameter des Objekts „image“


Feldname und -typBeschreibung

url

Typ: string

Erforderlich.

Maximale Anzahl: 20.

URL-Link zum Bild, das in den Anzeigen zu sehen ist. Beachte die folgenden Spezifikationen für Bilder:

  • Alle Bilder müssen im Dateiformat JPG, GIF oder PNG vorliegen.

  • Für Carousel Ads und Collection Ads: Bilder werden im quadratischen Format (1:1) dargestellt. Die minimale Bildgröße beträgt 500 x 500 Pixel. Wir empfehlen 1.024 x 1.024 Pixel für die beste Qualität.

  • Für Single Image Ads: Bilder werden in einem Seitenverhältnis von 1,91:1 angezeigt. Die minimale Bildgröße beträgt 500 x 500 Pixel. Wir empfehlen 1.200 x 628 Pixel für die beste Qualität.

  • Wenn du mehrere Bilder verwendest, füge zusätzliche Spalten für jedes Bild hinzu und nutze die JSON-Pfadsyntax in jedem Spaltennamen, um die Anzahl der Bilder anzugeben.

Beispiel: image[0].url; image[1].url

Beispiel: https://www.facebook.com/facebook_hotel.jpg

tag

Typ: string

Optional.

An das Bild angehängtes Tag, das den Bildinhalt zeigt. Du kannst mehrere Tags mit einem Bild verknüpfen.

Beispiele: Fitness Center, Swimming Pool, suite

INSTAGRAM_STANDARD_PREFERRED: Werbekunden können damit ein bestimmtes Bild in ihrem Feed als Standardbild für Instagram kennzeichnen. Bei diesem Tag wird zwischen Groß- und Kleinschreibung unterschieden.


Parameter des Objekts „address“

Verschachtelte Felder oder Felder mit mehreren Werten, wie z. B. address, können mithilfe von JSON-codierten Werten oder durch eine Gruppe reiner Textspalten im Flat-Format dargestellt werden, die mit der JSON-Pfadsyntax, wie z. B.address.region, gekennzeichnet wurden. Du kannst beide Konventionen in einer Datei verwenden.


Feldname und -typBeschreibung

addr1 (address.addr1)

Typ: object

Erforderlich.

Primäre Straße und Hausnummer des Hotels.

Beispiel: 1600 Pennsylvania Avenue

address.addr2

Typ: object

Optional.

Sekundäre Straße und Hausnummer des Hotels.

Beispiel: Apartment 1

address.addr3

Typ: object

Optional.

Tertiäre Straße und Hausnummer des Hotels.

Beispiel: Downstairs

address.city_id (city_id)

Typ: string

Optional.

Wert, der in der Deep-Link-URL template_url der Werbeanzeige verwendet wird.

Beispiel: 12345

address.city (city)

Typ: string

Erforderlich.

Stadt, in der sich das Hotel befindet.

Beispiel: New York

address.region (region)

Typ: string

Erforderlich.

Bundesland, Kanton, Bundesstaat oder sonstige Region des Hotels.

Beispiel: California

address.country (country)

Typ: string

Erforderlich.

Land, in dem sich das Hotel befindet.

Beispiel: United States

address.postal_code (postal_code)

Typ: string

Erforderlich für Länder mit Postleitzahlen.

Postleitzahl des Hotels.

Beispiele: 94125, NW1 3FG

Parameter des Objekts „guest_ratings“


Feldname und -typBeschreibung

guest_ratings.score (score)

Typ: object

Optional.

Bewertung des Hotels. Wenn angegeben, musst du außerdem score, max_score, number_of_reviewers und rating_system angeben.

Beispiel: 9.0/10

guest_ratings.number_of_reviewers (number_of_reviewers) Typ: int

Optional.

Gesamtzahl der Personen, die dieses Hotel bewertet haben.

Beispiel: 5287

guest_ratings.rating_system (rating_system)

Typ: string

Optional.

System, das für Gästebewertungen verwendet wird.

Beispiele: Expedia, TripAdvisor

max_score

Typ: int

Erforderlich.

Höchster Wert der Hotelbewertung. Muss größer oder gleich 0 sowie kleiner oder gleich 100 sein.

Beispiel: 10

Hotel API – Hotels direkt erstellen und verwalten

Du kannst die Hotel API verwenden, um Hotels direkt zu deinem Katalog hinzuzufügen, sie zu bearbeiten oder zu entfernen. Weitere Informationen zur Verwaltung von Hotels mithilfe der API findest du in der Referenz zur Hotel API.

Die folgenden Abschnitte sind nur relevant, wenn du deine Kataloge mithilfe dieser API verwaltest.

Hotelkatalog mit der API erstellen

Referenzdokumentation

Ein Hotelkatalog ist ein Container für deine Hotelelemente. Um die Catalog API zu verwenden, benötigst du die erforderlichen Marketing API-Zugriffsberechtigungen und musst die Nutzungsbedingungen akzeptieren, indem du deinen ersten Katalog über Business Manager erstellst.

Um einen Hotelkatalog für Hotel Ads zu erstellen, lege vertical auf hotels fest:

curl -X POST \
  -F 'name="Test Hotel Catalog"' \
  -F 'vertical="hotels"' \
  -F 'access_token=<ACCESS_TOKEN>' \
  https://graph.facebook.com/v10.0/BUSINESS_ID/owned_product_catalogs

Hotel-Feeds über die API hochladen

Sobald du den Katalog erstellt hast, musst du deine Hotel-Feeds auf Facebook hochladen. Verwende die API, um ein Feed-Objekt für jeden Feed zu erstellen, den du hochladen möchtest. Wir unterstützen geplante und direkte Uploads.

Hotelkatalog zu Hotelauswahl filtern

Referenzdokumentation

Eine Hotelauswahl ist eine Untergruppe deines Katalogs. Um Hotel Ads einzurichten, benötigst du eine Hotelauswahl. Deshalb musst du mindestens eine erstellen.

Hotelauswahlen werden durch Filter definiert, die auf den Hotelkatalog angewendet werden. Du kannst beispielsweise eine Hotelauswahl mit allen Hotels erstellen, die eine star_rating von mehr als 3 aufweisen. Hinweis: Du kannst auch eine Hotelauswahl ohne Filter erstellen. In diesem Fall enthält die Hotelauswahl alle Hotels deines Katalogs.

So erstellst du eine Hotelauswahl, die alle Hotels enthält, die die im brand-Feld enthaltene Beispielmarke beinhalten:

curl -X POST \ -F 'name="Test Hotel Set"' \ -F 'filter={ "brand": { "i_contains": "sample brand" } }' \ -F 'access_token=<ACCESS_TOKEN>' \ https://graph.facebook.com/v21.0/<PRODUCT_CATALOG_ID>/product_sets
'use strict'; const bizSdk = require('facebook-nodejs-business-sdk'); const ProductCatalog = bizSdk.ProductCatalog; const ProductSet = bizSdk.ProductSet; const access_token = '<ACCESS_TOKEN>'; const app_secret = '<APP_SECRET>'; const app_id = '<APP_ID>'; const id = '<PRODUCT_CATALOG_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' : 'Test Hotel Set', 'filter' : {'brand':{'i_contains':'sample brand'}}, }; const product_sets = (new ProductCatalog(id)).createProductSet( fields, params ); logApiCallResult('product_sets api call complete.', product_sets);
require __DIR__ . '/vendor/autoload.php'; use FacebookAds\Object\ProductCatalog; use FacebookAds\Object\ProductSet; use FacebookAds\Api; use FacebookAds\Logger\CurlLogger; $access_token = '<ACCESS_TOKEN>'; $app_secret = '<APP_SECRET>'; $app_id = '<APP_ID>'; $id = '<PRODUCT_CATALOG_ID>'; $api = Api::init($app_id, $app_secret, $access_token); $api->setLogger(new CurlLogger()); $fields = array( ); $params = array( 'name' => 'Test Hotel Set', 'filter' => array('brand' => array('i_contains' => 'sample brand')), ); echo json_encode((new ProductCatalog($id))->createProductSet( $fields, $params )->exportAllData(), JSON_PRETTY_PRINT);
from facebook_business.adobjects.productcatalog import ProductCatalog from facebook_business.adobjects.productset import ProductSet from facebook_business.api import FacebookAdsApi access_token = '<ACCESS_TOKEN>' app_secret = '<APP_SECRET>' app_id = '<APP_ID>' id = '<PRODUCT_CATALOG_ID>' FacebookAdsApi.init(access_token=access_token) fields = [ ] params = { 'name': 'Test Hotel Set', 'filter': {'brand':{'i_contains':'sample brand'}}, } print ProductCatalog(id).create_product_set( 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 = \"<PRODUCT_CATALOG_ID>\"; APIContext context = new APIContext(access_token).enableDebug(true); new ProductCatalog(id, context).createProductSet() .setName(\"Test Hotel Set\") .setFilter(\"{\\"brand\\":{\\"i_contains\\":\\"sample brand\\"}}\") .execute(); } }
require 'facebook_ads' access_token = '<ACCESS_TOKEN>' app_secret = '<APP_SECRET>' app_id = '<APP_ID>' id = '<PRODUCT_CATALOG_ID>' FacebookAds.configure do |config| config.access_token = access_token config.app_secret = app_secret end product_catalog = FacebookAds::ProductCatalog.get(id) product_sets = product_catalog.product_sets.create({ name: 'Test Hotel Set', filter: {'brand':{'i_contains':'sample brand'}}, })

Der filter-Parameter besteht aus folgenden Operatoren und Daten:

OperatorenFiltertyp

i_contains

Enthält Substring. Beim Operator muss die Groß- und Kleinschreibung nicht beachtet werden.

i_not_contains

Enthält keinen Substring. Beim Operator muss die Groß- und Kleinschreibung nicht beachtet werden.

contains

Enthält Substring. Beim Operator muss die Groß- und Kleinschreibung nicht beachtet werden.

not_contains

Enthält keinen Substring. Beim Operator muss die Groß- und Kleinschreibung nicht beachtet werden.

eq

Gleich. Beim Operator muss die Groß- und Kleinschreibung nicht beachtet werden.

neq

Ungleich. Beim Operator muss die Groß- und Kleinschreibung nicht beachtet werden.

lt

Kleiner als. Nur für numerische Felder.

lte

Kleiner oder gleich. Nur für numerische Felder.

gt

Größer als. Nur für numerische Felder.

gte

Größer oder gleich. Nur für numerische Felder.

DatenDaten, die gefiltert werden

hotel_id

Deine eindeutige ID für das Hotel im Katalog.

brand

Marke der Hotelkette.

base_price_amount

Der Basispreis pro Nacht dieses Hotels. Der Preis wird in Cent angegeben (4999 entspricht 49,99 USD).

sale_price_amount

Übernachtungspreis für dieses Hotel. Der Preis wird in Cent angegeben (4999 entspricht 49,99 USD).

currency

Währung

city

Stadt, in der sich das Hotel befindet.

country

Land des Hotels.

name

Der gebräuchlichste Name des Hotels.

star_rating

Sternebewertung des Hotels. Gültige Werte reichen von 1 bis 5 (in Schritten von 0,5).