Iklan Perjalanan - Pengelolaan Pemirsa

Panduan ini menganggap Anda telah menyiapkan katalog berisi inventaris perjalanan Anda, dan menyiapkan peristiwa perjalanan yang wajib di situs web Anda dan/atau di aplikasi seluler Anda, dan telah mengaitkan katalog Anda dengan sumber peristiwa Anda.

Mulai 20 September 2018, kami tidak akan lagi mendukung subtype setelah Marketing API v3.0 untuk pemirsa khusus untuk situs web, aplikasi, pemirsa khusus interaksi, dan pemirsa dari data konversi offline. Satu-satunya pengecualian adalah bahwa subtype masih akan didukung untuk pemirsa khusus interaksi untuk video.

Buat pemirsa perjalanan dalam dua langkah:

Langkah 1: Buat dan Bagikan Grup Sumber Peristiwa Perjalanan dan Wisata

Selain mengaitkan sumber peristiwa Anda dengan katalog Anda, juga harus dibuat grup sumber peristiwa. Grup sumber peristiwa digunakan untuk mengisi pemirsa.

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

Anda lantas harus membagikan grup sumber peristiwa ini ke akun iklan yang ingin membuat pemirsa yang didukung oleh grup itu. Sekali lagi, ini dilakukan dengan melakukan panggilan HTTP POST:

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

Langkah 2: Buat Pemirsa Perjalanan dan Wisata

Di titik ini Anda seharusnya sudah menyiapkan sinyal pengguna Anda (yaitu pixel dan/atau peristiwa aplikasi) dan dikaitkan dengan grup sumber peristiwa serta katalog perjalanan Anda.

Untuk menarget orang yang telah menunjukkan niat perjalanan yang jelas, Anda harus membuat pemirsa perjalanan dinamis berisi orang yang ingin Anda sajikan iklan. Anda dapat menyertakan dan mengecualikan orang berdasarkan sinyal niat perjalanan mereka. Anda juga dapat menerapkan filter berbasis peraturan di bagian peristiwa seperti dengan Pemirsa Khusus Situs Web. Kolom flight_set_id dibutuhkan untuk pemirsa penerbangan dinamis. Untuk pemirsa hotel dan destinasi, Anda tidak perlu menetapkan hotel_set_id atau destination_set_id.

Untuk menyiapkan pemirsa perjalanan baru, buat HTTP POST ke /act_<AD_ACCOUNT_ID>/customaudiences.

Parameter Pemirsa

Kolom & JenisDeskripsi

claim_objective

Jenis: enum {TRAVEL}

Wajib.

Tujuan pemirsa.

Harus diatur ke TRAVEL.

content_type

Jenis: enum {HOTEL, FLIGHT, DESTINATION}

Wajib.

Tentukan jenis sinyal yang harus digunakan untuk membuat pemirsa ini.

Harus diatur ke HOTEL, FLIGHT, atau DESTINATION.

event_sources

Jenis: json string

Array JSON dari pasangan id dan type. Kolom id mengambil id sumber peristiwa tunggal, dan kolom type adalah pixel, aplikasi, atau offline_events. Contoh:

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

Wajib jika Anda tidak menyediakan event_source_group. Jika Anda menyediakan, tidak perlu event_source_group.

event_source_group

Jenis: id

Tentukan grup sumber peristiwa yang peristiwanya akan menyokong pemirsa. Wajib jika Anda tidak menyediakan event_sources.

inclusions

Jenis: object[]

Wajib.

Array objek JSON yang mencantumkan setiap sinyal niat yang menjadikan seseorang memenuhi syarat untuk pemirsa ini. Lihat tabel Parameter Objek Inklusi di bawah.

description

Jenis: string

Deskripsi lebih lanjut tentang pemirsa.

exclusions

Jenis: object[]

Array objek JSON yang mencantumkan setiap sinyal niat yang mengecualikan seseorang yang memenuhi syarat dari pemirsa ini. Lihat tabel Parameter Objek Pengecualian di bawah.

rule

Jenis: object

Aturan pemirsa klasik yang diterapkan pada aliran peristiwa sebelum inclusions dan exclusions diproses. Gunakan parameter klasik apa saja, dan lihat tabel Parameter Perjalanan dan Wisata Objek Aturan di bawah untuk parameter khusus iklan perjalanan.

Parameter Objek Inklusi

Nama dan Jenis KolomDeskripsi

event

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

Wajib.

Nama peristiwa sinyal yang ingin Anda pertimbangkan untuk inklusi.

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

retention

Jenis: object

Wajib.

Jumlah waktu minimal/maksimal sejak peristiwa itu diterima agar dapat dianggap untuk tujuan inklusi. Interval retensi harus minimal 4 jam.

Lihat tabel Parameter Objek Retensi di bawah.

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

booking_window

Jenis: object

Termin pemesanan merupakan waktu dalam detik antara tanggal singgah pengguna dan waktu saat ini. Anda menetapkan rentang dan hanya orang yang termin pemesanannya dalam rentang ini yang disertakan. Termin pemesanan negatif juga didukung, sehingga Anda dapat menyertakan orang yang tanggal singgahnya telah lewat.

Lihat tabel Parameter Objek Termin Pemesanan di bawah.

Contoh:

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

count

Jenis: operator JSON

Jumlah berapa kali peristiwa itu telah diaktifkan. Anda dapat menggunakan operator perbandingan ekualitas maupun numerik di sini.

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

Parameter Objek Retensi

Nama dan Jenis KolomDeskripsi

max_seconds

Jenis: int

Wajib.

Jumlah waktu maksimal (dalam detik) sejak peristiwa itu diterima.

Contoh: 259200

min_seconds

Jenis: int

Jumlah waktu minimal (dalam detik) sejak peristiwa itu diterima.

Contoh: 0

Parameter Objek Termin Pemesanan

Nama dan Jenis KolomDeskripsi

min_seconds

Jenis: int

Wajib.

Jumlah waktu minimal (dalam detik) antara tanggal sekarang dan tanggal singgah yang pengguna inginkan.

Example: 172800

max_seconds

Jenis: int

Wajib.

Jumlah waktu maksimal (dalam detik) antara tanggal sekarang dan tanggal singgah yang pengguna inginkan.

Contoh: 604800

Parameter Objek Pengecualian

Nama dan Jenis KolomDeskripsi

event

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

Wajib.

Nama peristiwa sinyal yang ingin Anda pertimbangkan untuk pengecualian.

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

retention

jenis: object

Wajib.

Jumlah waktu minimal/maksimal sejak peristiwa itu diterima agar dapat dianggap untuk tujuan pengecualian. Interval retensi harus minimal 4 jam.

Lihat tabel Parameter Objek Retensi di bawah.

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

Parameter Perjalanan dan Wisata Objek Aturan

Seperti halnya parameter klasik, setiap parameter di sini dapat digunakan dengan operatorJSON standar.

Nama dan Jenis KolomDeskripsi

hotel_set_id

jenis: int

Mencocokkan hanya peristiwa saat sedikitnya satu content_id ada di hotel_set_id yang ditetapkan.

Hanya untuk pemirsa perjalanan dengan content_type diatur ke HOTEL.

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

destination_set_id

jenis: int

Mencocokkan hanya peristiwa saat sedikitnya satu content_id ada di destination_set_id yang ditetapkan.

Hanya untuk pemirsa perjalanan dengan content_type diatur ke DESTINATION.

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

flight_set_id

jenis: int

Wajib untuk iklan penerbangan.

Mencocokkan hanya peristiwa saat rute (origin_airport ke destination_airport) ada di flight_set_id yang ditetapkan.

Hanya untuk pemirsa perjalanan dengan content_type diatur ke FLIGHT.

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

length_of_stay

jenis: int

Jumlah malam yang dihabiskan selama perjalanan.

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

number_of_weekends

jenis: int

Jumlah akhir pekan antara tanggal mulai dan berakhir

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

num_travelers

jenis: int

Total jumlah wisatawan

  • Untuk content_type dari hotel atau destination ini merupakan num_adults + num_children
  • Untuk content_type dari flight, ini juga mencakup num_infants

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

Kolom tanggal:

Iklan hotel

  • checkin_date
  • checkout_date

Iklan penerbangan

  • departing_departure_date
  • departing_arrival_date
  • returning_departure_date
  • returning_arrival_date

Iklan destinasi

  • travel_start
  • travel_end

jenis: string

Gunakan kolom tanggal relevan berdasarkan content_type.

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

itinerary_contains_date

jenis: string

Perjalanan berisi tanggal tertentu.

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

Contoh Kode

Wisatawan individu yang telah mencari sedikitnya 3 kali dalam 5 hari terakhir tetapi belum memesan:

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

Orang yang melihat atau mulai memesan hotel dalam set hotel dalam 2 hari terakhir tetapi tidak pernah menyelesaikan pesanannya:

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

Orang yang memulai check out atau membeli tiket penerbangan dalam 5 hari terakhir dan jendela pemesanan penerbangan mereka antara 2 sampai 7 hari:

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

Orang yang mencari hotel di 'New York City' lebih dari 3 kali dalam 2 hari terakhir tetapi belum memesan:

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

Orang yang mencari hotel antara checkin_date dan checkout_date yang spesifik dalam 2 hari terakhir tetapi belum memesan:

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

Orang yang mencari waktu menginap di hotel berisi tanggal spesifik (mis., Natal) dalam 2 hari terakhir tetapi belum memesan:

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

Orang-orang yang membuat pemirsa untuk penerbangan sekali jalan:

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

Setelah Anda membuat pemirsa, mereka lalu dapat ditambahkan ke spesifikasi penargetan dalam kampanye iklan perjalanan.