Travel Ads – Zielgruppenverwaltung

Dieser Leitfaden setzt voraus, dass du über einen Katalog mit deinen Reiseangeboten verfügst und die erforderlichen Reiseveranstaltungen auf deiner Website und/oder in deiner mobilen App eingerichtet hast. Außerdem ist dein Katalog mit deinen Ereignisquellen verknüpft.

Seit dem 20. September 2018 wird subtype ab v3.0 der Marketing API für Zielgruppen für Websites, Apps, Custom Audiences für Interaktionen und Zielgruppen aus Offline-Conversion-Daten nicht mehr unterstützt. Die einzige Ausnahme besteht darin, dass subtype für Custom Audiences für Interaktionen für Video weiterhin unterstützt wird.

Erstelle in zwei Schritten eine Reisezielgruppe:

Schritt 1: Eine Ereignisquellengruppe für Reisen erstellen und freigeben

Neben dem Verknüpfen deiner Ereignisquellen mit deinem Katalog musst du außerdem eine Ereignisquellengruppe erstellen. Ereignisquellengruppen werden verwendet, um Zielgruppen zu füllen.

use FacebookAds\Object\EventSourceGroup;
use FacebookAds\Object\Fields\EventSourceGroupFields;

$event_source_group = new EventSourceGroup(null, <BUSINESS_ID>);
$event_source_group->setData(array(
  EventSourceGroupFields::NAME => 'My Travel Company Events',
  EventSourceGroupFields::EVENT_SOURCES => array(
    <PIXEL_ID>,
    <APP_ID>,
  ),
));

$event_source_group->create();
from facebookads.adobjects.eventsourcegroup import EventSourceGroup

event_source_group = EventSourceGroup(parent_id=<BUSINESS_ID>)
event_source_group[EventSourceGroup.Field.name] = 'My Travel Company Events'
event_source_group[EventSourceGroup.Field.event_sources] = [
    <PIXEL_ID>,
    <APP_ID>,
]

event_source_group.remote_create()
curl \
  -F 'name=My Travel Company Events' \
  -F 'event_sources=["<PIXEL_ID>","<APP_ID>"]' \
  -F 'access_token=<ACCESS_TOKEN>' \
  https://graph.facebook.com/v2.11/<BUSINESS_ID>/event_source_groups

Anschließend musst du die Ereignisquellengruppe für alle Werbekonten freigeben, die anhand dieser Gruppe eine Zielgruppe erstellen möchten. Sende dazu erneut einen HTTP POST-Aufruf:

use FacebookAds\Object\EventSourceGroup;

$event_source_group = new EventSourceGroup(<EVENT_SOURCE_GROUP_ID>);
// ad account id without 'act_'
$event_source_group->createSharedAccount(array(), array(
  'accounts' => array(
    '<ACCOUNT_ID_WITHOUT_ACT>',
  ),
));
from facebookads.adobjects.eventsourcegroup import EventSourceGroup

event_source_group = EventSourceGroup(<EVENT_SOURCE_GROUP_ID>)
# ad account id without 'act_'
response = event_source_group.create_shared_account(
    params={
        'accounts': ['<ACCOUNT_ID_WITHOUT_ACT>'],
    },
)
print(response)
curl \
  -F 'accounts=["<ACCOUNT_ID_WITHOUT_ACT>"]' \
  -F 'access_token=<ACCESS_TOKEN>' \
  https://graph.facebook.com/v2.11/<EVENT_SOURCE_GROUP_ID>/shared_accounts

Schritt 2: Reisezielgruppen erstellen

Du hast nun deine Benutzersignale (d. h. Pixel- oder App-Events) eingerichtet und sie einer Ereignisquellengruppe und deinen Reisekatalogen zugewiesen.

Erstelle eine dynamische Reisezielgruppe mit Personen, an die du deine Anzeige ausliefern möchtest, um auf diese Weise auf Personen abzuzielen, die eine explizite Reiseabsicht gezeigt haben. Du kannst Personen basierend auf ihren Reiseabsichtssignalen ein- oder ausschließen. Genau wie bei Website Custom Audiences kannst du auch in diesem Fall zusätzlich zu den Events regelbasierte Filter anwenden. Bei einer dynamischen Flugzielgruppe ist das Feld flight_set_id erforderlich. Bei Zielgruppen für Hotel und Reiseziel musst du keine hotel_set_id oder destination_set_id festlegen.

Sende einen HTTP POST an /act_<AD_ACCOUNT_ID>/customaudiences, um eine neue Reisezielgruppe einzurichten.

Zielgruppenparameter

Feld und TypBeschreibung

claim_objective

Typ: enum {TRAVEL}

Erforderlich.

Das Ziel der Zielgruppe.

Muss auf TRAVEL festgelegt sein.

content_type

Typ: enum {HOTEL, FLIGHT, DESTINATION}

Erforderlich.

Lege die Signalart fest, die für die Erstellung der Zielgruppe verwendet werden soll.

Muss auf HOTEL, FLIGHT oder DESTINATION festgelegt sein.

event_sources

Typ: json string

JSON-Array des Paars id und type. Das Feld id nimmt eine einzige Ereignisquellen-ID an und das Feld type ist ein Pixel, App oder offline_events. Beispiel:

"event_sources": [
 {
 "type": "pixel",
 "id": "562030684179932"
 },
 {
 "type": "app",
 "id": "562030684179934"
 }
] 

Erforderlich, wenn event_source_group nicht bereitgestellt wird. Wird sie bereitgestellt, stelle event_source_group nicht zusätzlich bereit.

event_source_group

Typ: id

Lege die Event-Quellengruppe fest, deren Events die Grundlage der Zielgruppe darstellen. Erforderlich, wenn event_sources nicht bereitgestellt wird.

inclusions

Typ: object[]

Erforderlich.

Ein Array von JSON-Objekten, das jedes Signal für Absicht auflistet, durch das ein Kontenübersichtskonto für die Zielgruppe infrage kommt. Siehe die nachstehende Tabelle Objektparameter für das Einschließen.

description

Typ: string

Eine genauere Beschreibung der Zielgruppe.

exclusions

Typ: object[]

Ein Array von JSON-Objekten, das jedes Signal für Absicht auflistet, durch das ein Kontenübersichtskonto aus der Zielgruppe ausgeschlossen wird. Siehe die nachstehende Tabelle Objektparameter für das Ausschließen.

rule

Typ: object

Eine klassische Zielgruppenregel, die auf den Event-Stream angewendet wird, bevor inclusions und exclusions verarbeitet werden. Verwende einen der klassischen Parameter. Spezifische Parameter für Travel Ads findest du in der nachstehenden Tabelle Regelobjekt für Reiseparameter.

Objektparameter für das Einschließen

Feldname und -typBeschreibung

event

Typ: enum {Search, ViewContent, InitiateCheckout, Purchase}

Erforderlich.

Der Ereignisname eines Signals, aufgrund dessen eine Person eingeschlossen werden soll.

Beispiel: {"event": "Search", …}

retention

Typ: object

Erforderlich.

Die Mindest-/Höchstdauer seit Empfang des Ereignis, damit es für das Einschließen berücksichtigt wird. Das Kundenbindungsfenster muss mindestens vier Stunden dauern.

Siehe die nachstehende Tabelle Objektparameter für Kundenbindung.

Beispiel: {…, "retention": {"min_seconds": 0, "max_seconds": 259200}, …}

booking_window

Typ: object

Das Buchungsfenster ist die Zeit in Sekunden zwischen dem Besuchsdatum des Nutzers und der aktuellen Zeit. Lege einen Zeitraum fest, sodass nur Personen, deren Buchungsfenster in diesem Bereich liegt, eingeschlossen werden. Negative Buchungsfenster werden ebenfalls unterstützt. So kannst du Personen einschließen, deren Besuchsdatum in der Vergangenheit liegt.

Siehe die nachstehende Tabelle Objektparameter für Buchungsfenster.

Beispiele:

  • {"booking_window": {"min_seconds": 0, "max_seconds": 259200}}
  • {"booking_window": {"max_seconds": 0}}

count

Typ: JSON-Operatoren

Wie oft das Event gefeuert hat. Hier kannst du sowohl Gleichheitsoperatoren als auch nummerische Vergleichsoperatoren verwenden.

Beispiele: {…"count": {"lte": 3}, …}

Objektparameter für Kundenbindung

Feldname und -typBeschreibung

max_seconds

Typ: int

Erforderlich.

Die Höchstdauer (in Sekunden) seit Empfang des Ereignisses.

Beispiel: 259200

min_seconds

Typ: int

Die Mindestdauer (in Sekunden) seit Empfang des Ereignisses.

Beispiel: 0

Objektparameter für Buchungsfenster

Feldname und -typBeschreibung

min_seconds

Typ: int

Erforderlich.

Die Mindestdauer (in Sekunden) zwischen dem aktuellen Datum und dem gewünschten Besuchsdatum des Nutzers.

Beispiel: 172800

max_seconds

Typ: int

Erforderlich.

Die Höchstdauer (in Sekunden) zwischen dem aktuellen Datum und dem gewünschten Besuchsdatum.

Beispiel: 604800

Objektparameter für das Ausschließen

Feldname und -typBeschreibung

event

Typ: enum { Search, ViewContent, InitiateCheckout, Purchase }

Erforderlich.

Der Ereignisname eines Signals, aufgrund dessen eine Person ausgeschlossen werden soll.

Beispiel: {"event": "Search", …}

retention

Typ: object

Erforderlich.

Die Mindest-/Höchstdauer seit Empfang des Ereignis, damit es für das Ausschließen berücksichtigt wird. Das Kundenbindungsfenster muss mindestens vier Stunden dauern.

Siehe die nachstehende Tabelle Objektparameter für Kundenbindung.

Beispiel: {…, "retention": {"min_seconds": 0, "max_seconds": 259200}, …}

Regelobjekt für Reiseparameter

Wie die klassischen Parameter kann jeder der Parameter hier mit jedem Standard-JSON-Operator verwendet werden.

Feldname und -typBeschreibung

hotel_set_id

Typ: int

Führt nur die Ereignisse zusammen, bei denen mindestens eine content_id in der angegebenen hotel_set_id vorhanden ist.

Nur für Reisezielgruppen, bei denen content_type auf HOTEL festgelegt ist.

Beispiel: {…, "hotel_set_id": {"eq": 123456789}, …}

destination_set_id

Typ: int

Führt nur die Ereignisse zusammen, bei denen mindestens eine content_id in der angegebenen destination_set_id vorhanden ist.

Nur für Reisezielgruppen, bei denen content_type auf DESTINATION festgelegt ist.

Beispiel: {…, "destination_set_id": {"eq": 123456789}, …}

flight_set_id

Typ: int

Bei Flight Ads erforderlich.

Führt nur die Ereignisse zusammen, bei denen die Route (origin_airport nach destination_airport) in der angegebenen flight_set_id vorhanden ist.

Nur für Reisezielgruppen, bei denen content_type auf FLIGHT festgelegt ist.

Beispiel: {…, "flight_set_id": {"eq": 123456789}, …}

length_of_stay

Typ: int

Anzahl der Übernachtungen während der Reise.

Beispiel: {… "length_of_stay": {"eq": 1}, …}

number_of_weekends

Typ: int

Anzahl der Wochenenden zwischen Start- und Enddatum

Beispiel: {…, "number_of_weekends": {"gte": 5}, …}

num_travelers

Typ: int

Anzahl der Reisenden

  • Wenn der content_type auf hotel oder destination festgelegt ist, ist dies num_adults + num_children
  • Bei dem content_typeflight umfasst dies außerdem num_infants

Beispiel: {…, "num_travelers": {"gt": 1}, …}

Datumsfelder:

Hotel Ads

  • checkin_date
  • checkout_date

Flight Ads

  • departing_departure_date
  • departing_arrival_date
  • returning_departure_date
  • returning_arrival_date

Destination Ads

  • travel_start
  • travel_end

Typ: string

Verwenden die entsprechenden Datumsfelder basierend auf dem content_type.

Beispiel: {"checkin_date": {"gte": "2016-09-01"}}

itinerary_contains_date

Typ: string

Die Reise umfasst ein bestimmtes Datum.

Beispiel: {"itinerary_contains_date": {"eq": "2016-12-25"}}

Code Samples

Alleinreisende, die in den letzten fünf Tagen mindestens dreimal gesucht, aber noch nicht gebucht haben:

use FacebookAds\Object\CustomAudience;
use FacebookAds\Object\Fields\CustomAudienceFields;
use FacebookAds\Object\Values\CustomAudienceSubtypeValues;
use FacebookAds\Object\Values\CustomAudienceClaimObjectiveValues;
use FacebookAds\Object\Values\CustomAudienceContentTypeValues;

$custom_audience = new CustomAudience(null, 'act_<AD_ACCOUNT_ID>');
$custom_audience->setData(array(
  CustomAudienceFields::NAME => 'Travel Audience',
  CustomAudienceFields::SUBTYPE => CustomAudienceSubtypeValues::CLAIM,
  CustomAudienceFields::CLAIM_OBJECTIVE =>
    CustomAudienceClaimObjectiveValues::TRAVEL,
  CustomAudienceFields::CONTENT_TYPE => CustomAudienceContentTypeValues::HOTEL,
  CustomAudienceFields::EVENT_SOURCE_GROUP => <EVENT_SOURCE_GROUP_ID>,
  CustomAudienceFields::RULE => array(
    'num_travelers' => array('eq' => 1),
  ),
  'inclusions' => array(
    array(
      'event' => 'Search',
      'count' => array('gt' => 3),
      'retention' => array('min_seconds'=> 0, 'max_seconds'=> 432000),
    ),
  ),
  'exclusions' => array(
    array(
      'event' => 'Purchase',
      'retention' => array('min_seconds'=> 0, 'max_seconds'=> 172800),
    ),
  ),
));
$custom_audience->create();
from facebookads.adobjects.customaudience import CustomAudience

audience = CustomAudience(parent_id='act_<AD_ACCOUNT_ID>')
audience[CustomAudience.Field.name] = 'Travel Audience'
audience[CustomAudience.Field.subtype] = CustomAudience.Subtype.claim
audience[CustomAudience.Field.claim_objective] = \
    CustomAudience.ClaimObjective.travel
audience[CustomAudience.Field.content_type] = CustomAudience.ContentType.hotel
audience[CustomAudience.Field.event_source_group] = <EVENT_SOURCE_GROUP_ID>
audience[CustomAudience.Field.rule] = {
    'num_travelers': {'eq': 1},
}
audience['inclusions'] = [
    {
        'event': 'Search',
        'count': {'gt': 3},
        'retention': {'min_seconds': 0, 'max_seconds': 432000},
    },
]
audience['exclusions'] = [
    {
        'event': 'Purchase',
        'retention': {'min_seconds': 0, 'max_seconds': 432000},
    },
]

audience.remote_create()
curl \
  -F 'name=Travel Audience' \
  -F 'subtype=CLAIM' \
  -F 'claim_objective=TRAVEL' \
  -F 'content_type=HOTEL' \
  -F 'event_source_group=<EVENT_SOURCE_GROUP_ID>' \
  -F 'rule={"num_travelers":{"eq":1}}' \
  -F 'inclusions=[ 
    { 
      "event": "Search", 
      "count": {"gt":3}, 
      "retention": {"min_seconds":0,"max_seconds":432000} 
    } 
  ]' \
  -F 'exclusions=[{"event":"Purchase","retention":{"min_seconds":0,"max_seconds":172800}}]' \
  -F 'access_token=<ACCESS_TOKEN>' \
  https://graph.facebook.com/v2.11/act_<AD_ACCOUNT_ID>/customaudiences

Personen, die ein Hotel in einer Hotelauswahl angesehen haben oder begonnen haben, ein Hotel zu buchen, ihre Buchung jedoch nicht abgeschlossen haben:

use FacebookAds\Object\CustomAudience;
use FacebookAds\Object\Fields\CustomAudienceFields;
use FacebookAds\Object\Values\CustomAudienceSubtypeValues;
use FacebookAds\Object\Values\CustomAudienceClaimObjectiveValues;
use FacebookAds\Object\Values\CustomAudienceContentTypeValues;

$custom_audience = new CustomAudience(null, 'act_<AD_ACCOUNT_ID>');
$custom_audience->setData(array(
  CustomAudienceFields::NAME => 'Travel Audience',
  CustomAudienceFields::SUBTYPE => CustomAudienceSubtypeValues::CLAIM,
  CustomAudienceFields::CLAIM_OBJECTIVE =>
    CustomAudienceClaimObjectiveValues::TRAVEL,
  CustomAudienceFields::CONTENT_TYPE => CustomAudienceContentTypeValues::HOTEL,
  CustomAudienceFields::EVENT_SOURCE_GROUP => <EVENT_SOURCE_GROUP_ID>,
  CustomAudienceFields::RULE => array(
    'hotel_set_id' => array('eq' => <HOTEL_SET_ID>),
  ),
  'inclusions' => array(
    array(
      'event' => 'ViewContent',
      'retention' => array('min_seconds'=> 0, 'max_seconds'=> 172800),
    ),
    array(
      'event' => 'InitiateCheckout',
      'retention' => array('min_seconds'=> 0, 'max_seconds'=> 172800),
    ),
  ),
  'exclusions' => array(
    array(
      'event' => 'Purchase',
      'retention' => array('min_seconds'=> 0, 'max_seconds'=> 172800),
    ),
  ),
));
$custom_audience->create();
from facebookads.adobjects.customaudience import CustomAudience

audience = CustomAudience(parent_id='act_<AD_ACCOUNT_ID>')
audience[CustomAudience.Field.name] = 'Travel Audience'
audience[CustomAudience.Field.subtype] = CustomAudience.Subtype.claim
audience[CustomAudience.Field.claim_objective] = \
    CustomAudience.ClaimObjective.travel
audience[CustomAudience.Field.content_type] = CustomAudience.ContentType.hotel
audience[CustomAudience.Field.event_source_group] = <EVENT_SOURCE_GROUP_ID>
audience[CustomAudience.Field.rule] = {
    'hotel_set_id': {'eq': <HOTEL_SET_ID>},
}
audience['inclusions'] = [
    {
        'event': 'ViewContent',
        'retention': {'min_seconds': 0, 'max_seconds': 172800},
    },
    {
        'event': 'InitiateCheckout',
        'retention': {'min_seconds': 0, 'max_seconds': 172800},
    },
]
audience['exclusions'] = [
    {
        'event': 'Purchase',
        'retention': {'min_seconds': 0, 'max_seconds': 172800},
    },
]

audience.remote_create()
curl \
  -F 'name=Travel Audience' \
  -F 'subtype=CLAIM' \
  -F 'claim_objective=TRAVEL' \
  -F 'content_type=HOTEL' \
  -F 'event_source_group=<EVENT_SOURCE_GROUP_ID>' \
  -F 'rule={"hotel_set_id":{"eq":"<HOTEL_SET_ID>"}}' \
  -F 'inclusions=[ 
    {"event":"ViewContent","retention":{"min_seconds":0,"max_seconds":172800}}, 
    { 
      "event": "InitiateCheckout", 
      "retention": {"min_seconds":0,"max_seconds":172800} 
    } 
  ]' \
  -F 'exclusions=[{"event":"Purchase","retention":{"min_seconds":0,"max_seconds":172800}}]' \
  -F 'access_token=<ACCESS_TOKEN>' \
  https://graph.facebook.com/v2.10/act_<AD_ACCOUNT_ID>/customaudiences

Personen, die mit dem Checkout begonnen haben oder in den letzten fünf Tagen Flugtickets gekauft haben und deren Buchungsfenster zwischen zwei und sieben Tagen beträgt:

use FacebookAds\Object\CustomAudience;
use FacebookAds\Object\Fields\CustomAudienceFields;
use FacebookAds\Object\Values\CustomAudienceSubtypeValues;
use FacebookAds\Object\Values\CustomAudienceClaimObjectiveValues;
use FacebookAds\Object\Values\CustomAudienceContentTypeValues;

$custom_audience = new CustomAudience(null, 'act_<AD_ACCOUNT_ID>');
$custom_audience->setData(array(
  CustomAudienceFields::NAME => 'Travel Audience',
  CustomAudienceFields::SUBTYPE => CustomAudienceSubtypeValues::CLAIM,
  CustomAudienceFields::CLAIM_OBJECTIVE =>
    CustomAudienceClaimObjectiveValues::TRAVEL,
  CustomAudienceFields::CONTENT_TYPE => CustomAudienceContentTypeValues::FLIGHT,
  CustomAudienceFields::EVENT_SOURCE_GROUP => <EVENT_SOURCE_GROUP_ID>,
  'inclusions' => array(
    array(
      'event' => 'InitiateCheckout',
      'retention' => array('min_seconds'=> 0, 'max_seconds'=> 432000),
      'booking_window' => array('min_seconds'=> 172800, 'max_seconds'=> 604800),
    ),
    array(
      'event' => 'Purchase',
      'retention' => array('min_seconds'=> 0, 'max_seconds'=> 432000),
      'booking_window' => array('min_seconds'=> 172800, 'max_seconds'=> 604800),
    ),
  ),
));
$custom_audience->create();
from facebookads.adobjects.customaudience import CustomAudience

audience = CustomAudience(parent_id='act_<AD_ACCOUNT_ID>')
audience[CustomAudience.Field.name] = 'Travel Audience'
audience[CustomAudience.Field.subtype] = CustomAudience.Subtype.claim
audience[CustomAudience.Field.claim_objective] = \
    CustomAudience.ClaimObjective.travel
audience[CustomAudience.Field.content_type] = CustomAudience.ContentType.flight
audience[CustomAudience.Field.event_source_group] = <EVENT_SOURCE_GROUP_ID>
audience['inclusions'] = [
    {
        "event": "InitiateCheckout",
        "retention": {"min_seconds": 0, "max_seconds": 432000},
        "booking_window": {"min_seconds": 172800, "max_seconds": 604800},
    },
    {
        "event": "Purchase",
        "retention": {"min_seconds": 0, "max_seconds": 432000},
        "booking_window": {"min_seconds": 172800, "max_seconds": 604800},
    },
]

audience.remote_create()
curl \
  -F 'name=Travel Audience' \
  -F 'subtype=CLAIM' \
  -F 'claim_objective=TRAVEL' \
  -F 'content_type=FLIGHT' \
  -F 'event_source_group=<EVENT_SOURCE_GROUP_ID>' \
  -F 'inclusions=[ 
    { 
      "event": "InitiateCheckout", 
      "retention": {"min_seconds":0,"max_seconds":432000}, 
      "booking_window": {"min_seconds":172800,"max_seconds":604800} 
    }, 
    { 
      "event": "Purchase", 
      "retention": {"min_seconds":0,"max_seconds":432000}, 
      "booking_window": {"min_seconds":172800,"max_seconds":604800} 
    } 
  ]' \
  -F 'access_token=<ACCESS_TOKEN>' \
  https://graph.facebook.com/v2.11/act_<AD_ACCOUNT_ID>/customaudiences

Personen, die in den letzten zwei Tagen mindestens dreimal nach Hotels in „New York City“ gesucht, aber noch nicht gebucht haben:

use FacebookAds\Object\CustomAudience;
use FacebookAds\Object\Fields\CustomAudienceFields;
use FacebookAds\Object\Values\CustomAudienceSubtypeValues;
use FacebookAds\Object\Values\CustomAudienceClaimObjectiveValues;
use FacebookAds\Object\Values\CustomAudienceContentTypeValues;

$custom_audience = new CustomAudience(null, 'act_<AD_ACCOUNT_ID>');
$custom_audience->setData(array(
  CustomAudienceFields::NAME => 'Travel Audience',
  CustomAudienceFields::SUBTYPE => CustomAudienceSubtypeValues::CLAIM,
  CustomAudienceFields::CLAIM_OBJECTIVE =>
    CustomAudienceClaimObjectiveValues::TRAVEL,
  CustomAudienceFields::CONTENT_TYPE => CustomAudienceContentTypeValues::HOTEL,
  CustomAudienceFields::EVENT_SOURCE_GROUP => <EVENT_SOURCE_GROUP_ID>,
  CustomAudienceFields::RULE => array(
    'destination' => array('i_contains' => 'New York City'),
  ),
  'inclusions' => array(
    array(
      'event' => 'Search',
      'count' => array('gt' => 3),
      'retention' => array('min_seconds'=> 0, 'max_seconds'=> 172800),
    ),
  ),
  'exclusions' => array(
    array(
      'event' => 'Purchase',
      'retention' => array('min_seconds'=> 0, 'max_seconds'=> 172800),
    ),
  ),
));
$custom_audience->create();
from facebookads.adobjects.customaudience import CustomAudience

audience = CustomAudience(parent_id='act_<AD_ACCOUNT_ID>')
audience[CustomAudience.Field.name] = 'Travel Audience'
audience[CustomAudience.Field.subtype] = CustomAudience.Subtype.claim
audience[CustomAudience.Field.claim_objective] = \
    CustomAudience.ClaimObjective.travel
audience[CustomAudience.Field.content_type] = CustomAudience.ContentType.hotel
audience[CustomAudience.Field.event_source_group] = <EVENT_SOURCE_GROUP_ID>
audience[CustomAudience.Field.rule] = {
    'destination': {'i_contains': 'New York City'},
}
audience['inclusions'] = [
    {
        'event': 'Search',
        'count': {'gt': 3},
        'retention': {'min_seconds': 0, 'max_seconds': 172800},
    },
]
audience['exclusions'] = [
    {
        'event': 'Purchase',
        'retention': {'min_seconds': 0, 'max_seconds': 172800},
    },
]

audience.remote_create()
curl \
  -F 'name=Travel Audience' \
  -F 'subtype=CLAIM' \
  -F 'claim_objective=TRAVEL' \
  -F 'content_type=HOTEL' \
  -F 'event_source_group=<EVENT_SOURCE_GROUP_ID>' \
  -F 'rule={"destination":{"i_contains":"New York City"}}' \
  -F 'inclusions=[ 
    { 
      "event": "Search", 
      "count": {"gt":3}, 
      "retention": {"min_seconds":0,"max_seconds":172800} 
    } 
  ]' \
  -F 'exclusions=[{"event":"Purchase","retention":{"min_seconds":0,"max_seconds":172800}}]' \
  -F 'access_token=<ACCESS_TOKEN>' \
  https://graph.facebook.com/v2.11/act_<AD_ACCOUNT_ID>/customaudiences

Personen, die in den letzten zwei Tagen nach Hotels zwischen einem bestimmten checkin_date und checkout_date gesucht, aber nicht gebucht haben:

use FacebookAds\Object\CustomAudience;
use FacebookAds\Object\Fields\CustomAudienceFields;
use FacebookAds\Object\Values\CustomAudienceSubtypeValues;
use FacebookAds\Object\Values\CustomAudienceClaimObjectiveValues;
use FacebookAds\Object\Values\CustomAudienceContentTypeValues;

$custom_audience = new CustomAudience(null, 'act_<AD_ACCOUNT_ID>');
$custom_audience->setData(array(
  CustomAudienceFields::NAME => 'Travel Audience',
  CustomAudienceFields::SUBTYPE => CustomAudienceSubtypeValues::CLAIM,
  CustomAudienceFields::CLAIM_OBJECTIVE =>
    CustomAudienceClaimObjectiveValues::TRAVEL,
  CustomAudienceFields::CONTENT_TYPE => CustomAudienceContentTypeValues::HOTEL,
  CustomAudienceFields::EVENT_SOURCE_GROUP => <EVENT_SOURCE_GROUP_ID>,
  CustomAudienceFields::RULE => array(
    'and' => array(
      array(
        'checkin_date' => array(
          'gte' => (new \DateTime("+3 day"))->format('Y-m-d')
        ),
      ),
      array(
        'checkout_date' => array(
          'lte' => (new \DateTime("+6 day"))->format('Y-m-d')
        ),
      ),
    ),
  ),
  'inclusions' => array(
    array(
      'event' => 'Search',
      'retention' => array('min_seconds'=> 0, 'max_seconds'=> 172800),
    ),
  ),
  'exclusions' => array(
    array(
      'event' => 'Purchase',
      'retention' => array('min_seconds'=> 0, 'max_seconds'=> 172800),
    ),
  ),
));
$custom_audience->create();
from facebookads.adobjects.customaudience import CustomAudience
import datetime

audience = CustomAudience(parent_id='act_<AD_ACCOUNT_ID>')
audience[CustomAudience.Field.name] = 'Travel Audience'
audience[CustomAudience.Field.subtype] = CustomAudience.Subtype.claim
audience[CustomAudience.Field.claim_objective] = \
    CustomAudience.ClaimObjective.travel
audience[CustomAudience.Field.content_type] = CustomAudience.ContentType.hotel
audience[CustomAudience.Field.event_source_group] = <EVENT_SOURCE_GROUP_ID>
audience[CustomAudience.Field.rule] = {
    'and': [
        {
            "checkin_date": {
                "gte": str(datetime.date.today() + datetime.timedelta(days=3)),
            },
        },
        {
            "checkout_date": {
                "gte": str(datetime.date.today() + datetime.timedelta(days=6)),
            },
        },
    ],
}
audience['inclusions'] = [
    {
        'event': 'Search',
        'retention': {'min_seconds': 0, 'max_seconds': 172800},
    },
]
audience['exclusions'] = [
    {
        'event': 'Purchase',
        'retention': {'min_seconds': 0, 'max_seconds': 172800},
    },
]

audience.remote_create()
curl \
  -F 'name=Travel Audience' \
  -F 'subtype=CLAIM' \
  -F 'claim_objective=TRAVEL' \
  -F 'content_type=HOTEL' \
  -F 'event_source_group=<EVENT_SOURCE_GROUP_ID>' \
  -F 'rule={ 
    "and": [ 
      {"checkin_date":{"gte":"2018-02-02"}}, 
      {"checkout_date":{"lte":"2018-02-05"}} 
    ] 
  }' \
  -F 'inclusions=[{"event":"Search","retention":{"min_seconds":0,"max_seconds":172800}}]' \
  -F 'exclusions=[{"event":"Purchase","retention":{"min_seconds":0,"max_seconds":172800}}]' \
  -F 'access_token=<ACCESS_TOKEN>' \
  https://graph.facebook.com/v2.11/act_<AD_ACCOUNT_ID>/customaudiences

Personen, die in den letzten zwei Tagen nach Hotelaufenthalten gesucht haben, die ein bestimmtes Datum umfassen (z. B. Weihnachten), aber noch nicht gebucht haben:

use FacebookAds\Object\CustomAudience;
use FacebookAds\Object\Fields\CustomAudienceFields;
use FacebookAds\Object\Values\CustomAudienceSubtypeValues;
use FacebookAds\Object\Values\CustomAudienceClaimObjectiveValues;
use FacebookAds\Object\Values\CustomAudienceContentTypeValues;

$custom_audience = new CustomAudience(null, 'act_<AD_ACCOUNT_ID>');
$custom_audience->setData(array(
  CustomAudienceFields::NAME => 'Travel Audience',
  CustomAudienceFields::SUBTYPE => CustomAudienceSubtypeValues::CLAIM,
  CustomAudienceFields::CLAIM_OBJECTIVE =>
    CustomAudienceClaimObjectiveValues::TRAVEL,
  CustomAudienceFields::CONTENT_TYPE => CustomAudienceContentTypeValues::HOTEL,
  CustomAudienceFields::EVENT_SOURCE_GROUP => <EVENT_SOURCE_GROUP_ID>,
  CustomAudienceFields::RULE => array(
    'itinerary_contains_date' => array(
      'eq' => (new \DateTime())->setDate(Date('Y'), 12, 25)->format('Y-m-d')
    ),
  ),
  'inclusions' => array(
    array(
      'event' => 'Search',
      'retention' => array('min_seconds'=> 0, 'max_seconds'=> 172800),
    ),
  ),
  'exclusions' => array(
    array(
      'event' => 'Purchase',
      'retention' => array('min_seconds'=> 0, 'max_seconds'=> 172800),
    ),
  ),
));
$custom_audience->create();
from facebookads.adobjects.customaudience import CustomAudience
import datetime

audience = CustomAudience(parent_id='act_<AD_ACCOUNT_ID>')
audience[CustomAudience.Field.name] = 'Travel Audience'
audience[CustomAudience.Field.subtype] = CustomAudience.Subtype.claim
audience[CustomAudience.Field.claim_objective] = \
    CustomAudience.ClaimObjective.travel
audience[CustomAudience.Field.content_type] = CustomAudience.ContentType.hotel
audience[CustomAudience.Field.event_source_group] = <EVENT_SOURCE_GROUP_ID>
audience[CustomAudience.Field.rule] = {
    "itinerary_contains_date": {
        "eq": str(datetime.date(datetime.date.today().year, 12, 25)),
    },
}
audience['inclusions'] = [
    {
        'event': 'Search',
        'retention': {'min_seconds': 0, 'max_seconds': 172800},
    },
]
audience['exclusions'] = [
    {
        'event': 'Purchase',
        'retention': {'min_seconds': 0, 'max_seconds': 172800},
    },
]

audience.remote_create()
curl \
  -F 'name=Travel Audience' \
  -F 'subtype=CLAIM' \
  -F 'claim_objective=TRAVEL' \
  -F 'content_type=HOTEL' \
  -F 'event_source_group=<EVENT_SOURCE_GROUP_ID>' \
  -F 'rule={"itinerary_contains_date":{"eq":"2018-12-25"}}' \
  -F 'inclusions=[{"event":"Search","retention":{"min_seconds":0,"max_seconds":172800}}]' \
  -F 'exclusions=[{"event":"Purchase","retention":{"min_seconds":0,"max_seconds":172800}}]' \
  -F 'access_token=<ACCESS_TOKEN>' \
  https://graph.facebook.com/v2.11/act_<AD_ACCOUNT_ID>/customaudiences

Personen, die eine Zielgruppe für Einzelflüge erstellen:

curl \
  -F 'name=Travel Audience' \
  -F 'claim_objective=TRAVEL' \
  -F 'content_type=FLIGHT' \
  -F 'event_source_group=<EVENT_SOURCE_GROUP_ID>' \
  -F 'rule={"and":[{"returning_departure_date":{"exists":false]}}' \
  -F 'inclusions=[ 
    { 
      "event": "Search", 
      "count": {"gt":3}, 
      "retention": {"min_seconds":0,"max_seconds":432000} 
    } 
  ]' \
  -F 'exclusions=[{"event":"Purchase","retention":{"min_seconds":0,"max_seconds":172800}}]' \
  -F 'access_token=<ACCESS_TOKEN>' \
  https://graph.facebook.com/v2.11/act_<AD_ACCOUNT_ID>/customaudiences

Nachdem du deine Zielgruppe(n) erstellt hast, kannst du sie zu den Targeting-Spezifikationen für deine Travel Ads-Kampagne hinzufügen.