Quảng cáo du lịch - Quản lý đối tượng

Hướng dẫn này giả định rằng bạn đã có sẵn một danh mục gồm danh sách cung ứng du lịch, đồng thời bạn đã thiết lập các sự kiện du lịch bắt buộc trên trang web và/hoặc trong ứng dụng di động của mình, cũng như đã liên kết danh mục với các nguồn sự kiện.

Kể từ ngày 20/09/2018, chúng tôi sẽ không hỗ trợ subtype sau v3.0 của API Marketing cho đối tượng tùy chỉnh của trang web, ứng dụng, đối tượng tùy chỉnh tương tác và đối tượng từ dữ liệu chuyển đổi offline. Một ngoại lệ là subtype vẫn sẽ được hỗ trợ cho đối tượng tùy chỉnh tương tác của video.

Tạo đối tượng du lịch theo 2 bước:

Bước 1: Tạo và chia sẻ một nhóm nguồn sự kiện du lịch

Ngoài việc liên kết nguồn sự kiện với danh mục, bạn còn phải tạo một nhóm nguồn sự kiện. Nhóm nguồn sự kiện được dùng để điền thông tin đối tượng.

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

Sau đó, bạn phải chia sẻ nhóm nguồn sự kiện này với bất kỳ tài khoản quảng cáo nào muốn tạo đối tượng được nhóm này hỗ trợ. Một lần nữa, bạn có thể dùng lệnh gọi HTTP POST để thực hiện việc này:

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

Bước 2: Tạo đối tượng du lịch

Đến thời điểm này, bạn đã thiết lập và liên kết tín hiệu người dùng (tức là sự kiện pixel và/hoặc sự kiện trong ứng dụng) với một nhóm nguồn sự kiện và (các) danh mục du lịch.

Để nhắm mục tiêu những người đã thể hiện ý định du lịch rõ ràng, bạn phải tạo một đối tượng du lịch động gồm những người mà bạn muốn phân phối quảng cáo. Bạn có thể đưa vào và loại trừ bất kỳ người nào dựa trên tín hiệu thể hiện ý định du lịch của họ. Bạn cũng có thể áp dụng thêm các bộ lọc dựa trên quy tắc cho các sự kiện giống như với Đối tượng tùy chỉnh trên trang web. Trường flight_set_id là bắt buộc đối với đối tượng chuyến bay động. Đối với đối tượng khách sạn và điểm đến, bạn không cần phải chỉ định hotel_set_id hoặc destination_set_id.

Để thiết lập đối tượng du lịch mới, hãy thực hiện lệnh gọi HTTP POST đến /act_<AD_ACCOUNT_ID>/customaudiences.

Thông số đối tượng

Trường và loạiMô tả

claim_objective

Loại: enum {TRAVEL}

Bắt buộc.

Mục tiêu của đối tượng.

Phải được đặt là TRAVEL.

content_type

Loại: enum {HOTEL, FLIGHT, DESTINATION}

Bắt buộc.

Chỉ định loại tín hiệu cần dùng để tạo đối tượng này.

Phải được đặt là HOTEL, FLIGHT hoặc DESTINATION.

event_sources

Loại: json string

Mảng JSON của cặp idtype. Trường id sử dụng một ID nguồn sự kiện và trường type là pixel, ứng dụng hoặc offline_events. Ví dụ:

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

Đây là trường bắt buộc, nếu bạn không cung cấp event_source_group. Nếu cung cấp trường này, bạn không cần cung cấp cả event_source_group.

event_source_group

Loại: id

Chỉ định nhóm nguồn sự kiện có các sự kiện sẽ hỗ trợ đối tượng. Đây là trường bắt buộc, nếu bạn không cung cấp event_sources.

inclusions

Loại: object[]

Bắt buộc.

Mảng đối tượng JSON liệt kê từng tín hiệu thể hiện ý định sẽ khiến một tài khoản trong Trung tâm tài khoản đủ điều kiện được đưa vào đối tượng này. Hãy xem bảng Thông số đối tượng bao gồm bên dưới.

description

Loại: string

Mô tả thêm về đối tượng.

exclusions

Loại: object[]

Mảng đối tượng JSON liệt kê từng tín hiệu thể hiện ý định sẽ loại trừ một tài khoản trong Trung tâm tài khoản đủ điều kiện khỏi đối tượng này. Hãy xem bảng Thông số đối tượng loại trừ bên dưới.

rule

Loại: object

Quy tắc đối tượng cũ sẽ được áp dụng cho luồng sự kiện trước khi xử lý bất kỳ inclusionsexclusions nào. Hãy sử dụng các thông số cũ và xem bảng Thông số quy tắc đối tượng du lịch dưới đây để biết các thông số cụ thể của quảng cáo du lịch.

Thông số đối tượng bao gồm

Tên và loại trườngMô tả

event

Loại: enum {Search, ViewContent, InitiateCheckout, Purchase}

Bắt buộc.

Tên sự kiện của tín hiệu mà bạn muốn cân nhắc đưa vào.

Ví dụ: {"event": "Search", …}

retention

Loại: object

Bắt buộc.

Khoảng thời gian tối thiểu/tối đa kể từ khi nhận được sự kiện để cân nhắc cho mục đích đưa vào. Khoảng thời gian giữ chân tối thiểu phải là 4 giờ.

Hãy xem bảng Thông số đối tượng giữ chân bên dưới.

Ví dụ: {…, "retention": {"min_seconds": 0, "max_seconds": 259200}, …}

booking_window

Loại: object

Khoảng thời gian đặt trước là thời gian tính bằng giây từ thời điểm hiện tại đến ngày nhận phòng của người dùng. Bạn chỉ định một khoảng và chỉ đưa vào những người có khoảng thời gian đặt trước nằm trong khoảng này. Chúng tôi cũng hỗ trợ khoảng thời gian đặt trước có giá trị âm, cho phép bạn thêm những người có ngày nhận phòng đã qua.

Hãy xem bảng Thông số đối tượng khoảng thời gian đặt trước bên dưới.

Ví dụ:

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

count

Loại: Toán tử JSON

Số lần kích hoạt sự kiện. Tại đây, bạn có thể sử dụng cả toán tử đẳng thức và toán tử so sánh dạng số.

Ví dụ: {…"count": {"lte": 3}, …}

Thông số đối tượng giữ chân

Tên và loại trườngMô tả

max_seconds

Loại: int

Bắt buộc.

Khoảng thời gian tối đa (tính bằng giây) kể từ khi nhận được sự kiện.

Ví dụ: 259200

min_seconds

Loại: int

Khoảng thời gian tối thiểu (tính bằng giây) kể từ khi nhận được sự kiện.

Ví dụ: 0

Thông số đối tượng khoảng thời gian đặt trước

Tên và loại trườngMô tả

min_seconds

Loại: int

Bắt buộc.

Khoảng thời gian tối thiểu (tính bằng giây) kể từ ngày hiện tại đến ngày nhận phòng mong muốn của người dùng.

Ví dụ: 172800

max_seconds

Loại: int

Bắt buộc.

Khoảng thời gian tối đa (tính bằng giây) kể từ ngày hiện tại đến ngày nhận phòng mong muốn.

Ví dụ: 604800

Thông số đối tượng loại trừ

Tên và loại trườngMô tả

event

Loại: enum { Search, ViewContent, InitiateCheckout, Purchase }

Bắt buộc.

Tên sự kiện của tín hiệu mà bạn muốn cân nhắc loại trừ.

Ví dụ: {"event": "Search", …}

retention

loại: object

Bắt buộc.

Khoảng thời gian tối thiểu/tối đa kể từ khi nhận được sự kiện để cân nhắc cho mục đích loại trừ. Khoảng thời gian giữ chân tối thiểu phải là 4 giờ.

Hãy xem bảng Thông số đối tượng giữ chân bên dưới.

Ví dụ: {…, "retention": {"min_seconds": 0, "max_seconds": 259200}, …}

Thông số quy tắc đối tượng du lịch

Cũng giống như với thông số cũ, bạn có thể sử dụng từng thông số ở đây với bất kỳ JSONtoán tử tiêu chuẩn nào.

Tên và loại trườngMô tả

hotel_set_id

loại: int

Chỉ khớp các sự kiện đó khi có tối thiểu một content_id trong hotel_set_id được chỉ định.

Chỉ dành cho đối tượng du lịch có content_typeHOTEL.

Ví dụ: {…, "hotel_set_id": {"eq": 123456789}, …}

destination_set_id

loại: int

Chỉ khớp các sự kiện đó khi có tối thiểu một content_id trong destination_set_id được chỉ định.

Chỉ dành cho đối tượng du lịch có content_typeDESTINATION.

Ví dụ: {…, "destination_set_id": {"eq": 123456789}, …}

flight_set_id

loại: int

Bắt buộc đối với quảng cáo chuyến bay.

Chỉ khớp các sự kiện đó khi có lộ trình (origin_airport đến destination_airport) trong flight_set_id được chỉ định.

Chỉ dành cho đối tượng du lịch có content_typeFLIGHT.

Ví dụ: {…, "flight_set_id": {"eq": 123456789}, …}

length_of_stay

loại: int

Số đêm trong chuyến đi.

Ví dụ: {… "length_of_stay": {"eq": 1}, …}

number_of_weekends

loại: int

Số ngày cuối tuần từ ngày bắt đầu đến ngày kết thúc

Ví dụ: {…, "number_of_weekends": {"gte": 5}, …}

num_travelers

loại: int

Tổng số khách du lịch

  • Đối với content_typehotel hoặc destination, trường này là num_adults + num_children
  • Đối với content_typeflight, trường này cũng bao gồm num_infants

Ví dụ: {…, "num_travelers": {"gt": 1}, …}

Trường ngày tháng:

Quảng cáo khách sạn

  • checkin_date
  • checkout_date

Quảng cáo chuyến bay

  • departing_departure_date
  • departing_arrival_date
  • returning_departure_date
  • returning_arrival_date

Quảng cáo điểm đến

  • travel_start
  • travel_end

loại: string

Sử dụng các trường ngày tháng liên quan dựa trên content_type.

Ví dụ: {"checkin_date": {"gte": "2016-09-01"}}

itinerary_contains_date

loại: string

Chuyến đi có một ngày cụ thể.

Ví dụ: {"itinerary_contains_date": {"eq": "2016-12-25"}}

Mã mẫu

Những khách du lịch lẻ đã tìm kiếm tối thiểu 3 lần trong 5 ngày qua nhưng chưa đặt trước:

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

Những người đã xem hoặc bắt đầu đặt phòng khách sạn trong nhóm khách sạn trong 2 ngày qua nhưng chưa hoàn tất đặt phòng:

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

Những người đã bắt đầu thanh toán hoặc mua vé máy bay trong 5 ngày qua và khoảng thời gian đặt trước vé máy bay của họ là từ 2 đến 7 ngày:

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

Những người đã tìm kiếm khách sạn tại "Thành phố New York" hơn 3 lần trong 2 ngày qua nhưng chưa đặt phòng:

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

Những người đã tìm kiếm khách sạn trong khoảng ngày cụ thể từ checkin_date đến checkout_date trong 2 ngày qua nhưng chưa đặt phòng:

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

Những người đã tìm kiếm thời gian lưu trú tại khách sạn chứa một ngày cụ thể (ví dụ: Giáng sinh) trong 2 ngày qua nhưng chưa đặt phòng:

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

Những người tạo đối tượng cho các chuyến bay một chiều:

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

Sau khi tạo đối tượng, bạn có thể thêm đối tượng đó vào thông số nhắm mục tiêu trong chiến dịch quảng cáo du lịch của mình.