يمكن ترويج مخزون السفر الخاص بك تلقائيًا على فيسبوك. تستخدم إعلانات السفر من فيسبوك الإشارات المقصودة للتوفر على مستوى مختلف الأجهزة بغرض ترويج خيارات السفر ذات الصلة تلقائيًا من مخزونك باستخدام تصميمات فريدة على فيسبوك.
تدعم إعلانات السفر إعلانات الفنادق وإعلانات الرحلات الجوية وإعلانات الوجهة.
يفترض هذا الدليل:
تدعم إعلانات السفر استراتيجيات استهداف مختلفة. يمكنك زيادة أهداف أعمال مختلفة من خلال الجمع بين الجمهور المناسب ومجموعة المنتجات المناسبة:
إعادة الاستهداف—يمكنك عرض الفنادق أو الوجهات أو الرحلات الجوية المناسبة للأشخاص الذين انتقلوا إلى موقعك على الويب أو تطبيقك للبحث عن فنادق أو وجهات أو رحلات جوية.
عرض المنتجات ذات الصلة وبيع البديل الأغلى—يمكنك استهداف الأشخاص الذين اشتروا رحلة جوية مع فنادق ذات صلة أو بيع البديل الأغلى من حيث أولوية الصعود إلى الطائرة واختيار المقعد.
العملاء المحتملون—يمكنك توسيع مدى وصول الإعلان والعثور على عملاء جدد من خلال استهداف الجماهير المحتملة.
عند إنشاء إعلانات سفر، فإنك تتبع العملية نفسها التي تتبعها عند إعداد أي نوع آخر من إعلانات فيسبوك باستخدام API:
تستخدم إعلانات السفر الهدف PRODUCT_CATALOG_SALES
. حدد كتالوج سفر في promoted_object
على مستوى الحملة الإعلانية:
use FacebookAds\Object\Campaign;
use FacebookAds\Object\Fields\CampaignFields;
use FacebookAds\Object\Values\CampaignObjectiveValues;
$campaign = new Campaign(null, 'act_<AD_ACCOUNT_ID>');
$campaign->setData(array(
CampaignFields::NAME => 'Product Catalog Sales Campaign',
CampaignFields::OBJECTIVE => CampaignObjectiveValues::PRODUCT_CATALOG_SALES,
CampaignFields::PROMOTED_OBJECT => array(
'product_catalog_id' => <PRODUCT_CATALOG_ID>,
),
));
$campaign->create(array(
Campaign::STATUS_PARAM_NAME => Campaign::STATUS_PAUSED,
));
from facebookads.adobjects.campaign import Campaign
campaign = Campaign(parent_id='act_<AD_ACCOUNT_ID>')
campaign[Campaign.Field.name] = 'Product Catalog Sales Campaign'
objective = Campaign.Objective.product_catalog_sales
campaign[Campaign.Field.objective] = objective
campaign[Campaign.Field.promoted_object] = {
'product_catalog_id': <PRODUCT_CATALOG_ID>,
}
campaign.remote_create(params={
'status': Campaign.Status.paused,
})
Campaign campaign = new AdAccount(act_<AD_ACCOUNT_ID>, context).createCampaign()
.setName("Product Catalog Sales Campaign Group")
.setObjective(Campaign.EnumObjective.VALUE_PRODUCT_CATALOG_SALES)
.setPromotedObject("{\"product_catalog_id\":\"" + <PRODUCT_CATALOG_ID> + "\"}")
.setStatus(Campaign.EnumStatus.VALUE_PAUSED)
.execute();
String campaign_id = campaign.getId();
curl \
-F 'name=Product Catalog Sales Campaign' \
-F 'objective=PRODUCT_CATALOG_SALES' \
-F 'promoted_object={"product_catalog_id":"<PRODUCT_CATALOG_ID>"}' \
-F 'status=PAUSED' \
-F 'access_token=<ACCESS_TOKEN>' \
https://graph.facebook.com/v2.11/act_<AD_ACCOUNT_ID>/campaigns
بمجرد توفر الحملة الإعلانية campaign_id
، يمكنك إنشاء المجموعة الإعلانية. تحدد المجموعة الإعلانية خيارات عرض الأسعار والاستهداف الخاصة بإعلاناتك.
لإعادة استهداف موقع الويب أو زوار التطبيق، استخدم جمهورًا ديناميكيًا من نوع مجموعة المنتجات نفسه التي تروّج لها، فعلى سبيل المثال، الترويج لمجموعة فنادق إلى جمهور الفنادق والترويج لمجموعة رحلات جوية إلى جمهور الرحلات الجوية والترويج لمجموعة الوجهات إلى جمهور الوجهات.
لاستخدام عرض المنتجات ذات الصلة وبيع البديل الأغلى مع الأشخاص الذين اشتروا من موقعك على الويب و/أو تطبيقك، استخدم جمهورًا ديناميكًا يضم أشخاصًا أجروا عملية شراء، واعرض عليهم خيارات السفر من كتالوج آخر، فعلى سبيل المثال، يمكنك استهداف جمهور شراء رحلة جوية مع مجموعة فنادق أو مجموعة رحلات جوية أخرى توضح اختيار المقعد.
OFFSITE_CONVERSIONS
من خلال إشارات هدف أقوى، مثل Purchase
أو InitiateCheckout
. راجع أيضًا إعلانات كتالوج Advantage+، استهداف جمهور عريض
use FacebookAds\Object\AdSet;
use FacebookAds\Object\Fields\AdSetFields;
use FacebookAds\Object\Fields\TargetingFields;
use FacebookAds\Object\Values\AdSetBillingEventValues;
use FacebookAds\Object\Values\AdSetOptimizationGoalValues;
$adset = new AdSet(null, 'act_<AD_ACCOUNT_ID>');
$adset->setData(array(
AdSetFields::NAME => 'Product Catalog Sales Adset',
AdSetFields::BID_AMOUNT => 3000,
AdSetFields::BILLING_EVENT => AdSetBillingEventValues::IMPRESSIONS,
AdSetFields::OPTIMIZATION_GOAL =>
AdSetOptimizationGoalValues::OFFSITE_CONVERSIONS,
AdSetFields::DAILY_BUDGET => 15000,
AdSetFields::CAMPAIGN_ID => <CAMPAIGN_ID>,
AdSetFields::TARGETING => array(
TargetingFields::GEO_LOCATIONS => array(
'countries' => array('US'),
),
TargetingFields::DYNAMIC_AUDIENCE_IDS => array(<DYNAMIC_AUDIENCE_ID>),
),
AdSetFields::PROMOTED_OBJECT => array(
'product_set_id' => <PRODUCT_SET_ID>,
),
));
$adset->create(array(
AdSet::STATUS_PARAM_NAME => AdSet::STATUS_PAUSED,
));
from facebookads.adobjects.adset import AdSet
from facebookads.adobjects.targeting import Targeting
adset = AdSet(parent_id=ad_account_id)
adset[AdSet.Field.name] = 'Product Catalog Sales Adset'
adset[AdSet.Field.bid_amount] = 3000
adset[AdSet.Field.billing_event] = AdSet.BillingEvent.impressions
adset[AdSet.Field.optimization_goal] = \
AdSet.OptimizationGoal.offsite_conversions
adset[AdSet.Field.daily_budget] = 15000
adset[AdSet.Field.campaign_id] = campaign_id
adset[AdSet.Field.targeting] = {
Targeting.Field.geo_locations: {
Targeting.Field.countries: ['US'],
},
Targeting.Field.dynamic_audience_ids: [
dynamic_audience_id,
],
}
adset[AdSet.Field.promoted_object] = {
'product_set_id': product_set_id,
}
adset.remote_create()
AdSet adSet = new AdAccount(act_<AD_ACCOUNT_ID>, context).createAdSet()
.setName("Product Catalog Sales Adset")
.setBidAmount(3000L)
.setBillingEvent(AdSet.EnumBillingEvent.VALUE_IMPRESSIONS)
.setOptimizationGoal(AdSet.EnumOptimizationGoal.VALUE_OFFSITE_CONVERSIONS)
.setDailyBudget(15000L)
.setCampaignId(<CAMPAIGN_ID>)
.setTargeting(
new Targeting()
.setFieldDynamicAudienceIds(Arrays.asList(<DYNAMIC_AUDIENCE_ID>))
.setFieldGeoLocations(
new TargetingGeoLocation()
.setFieldCountries(Arrays.asList("US"))
)
)
.setPromotedObject("{\"product_set_id\":\"" + <PRODUCT_SET_ID> + "\"}")
.setStatus(AdSet.EnumStatus.VALUE_PAUSED)
.execute();
String ad_set_id = adSet.getId();
curl \
-F 'name=Product Catalog Sales Adset' \
-F 'bid_amount=3000' \
-F 'billing_event=IMPRESSIONS' \
-F 'optimization_goal=OFFSITE_CONVERSIONS' \
-F 'daily_budget=15000' \
-F 'campaign_id=<CAMPAIGN_ID>' \
-F 'targeting={
"geo_locations": {"countries":["US"]},
"dynamic_audience_ids": ["<DYNAMIC_AUDIENCE_ID>"]
}' \
-F 'promoted_object={"product_set_id":"<PRODUCT_SET_ID>"}' \
-F 'status=PAUSED' \
-F 'access_token=<ACCESS_TOKEN>' \
https://graph.facebook.com/v2.11/act_<AD_ACCOUNT_ID>/adsets
إعلانات السفر لا تدعم مواصفات استهداف الجماهير الديناميكية المُضمنة في المجموعة الإعلانية. يجب أولاً إنشاء الجمهور بشكل منفصل.
يمكنك استخدام إشارات القوالب في تصميمات الإعلان الخاصة بإعلانات السفر. عندما يعرض فيسبوك إعلانك، سيتم إشارات القوالب ليحل محلها اختيارات السفر الفعلية الخاصة بشخص ما. يمكنك استخدام إشارات القوالب في الإعلان نفسه وفي عنوان URL الذي يظهر لشخص ما بمجرد النقر على الإعلان.
استخدم الحقل template_url_spec
لتحديد عنوان URL الذي يظهر بعد أن ينقر شخص ما على الإعلان. إذا لم يتم توفيره أو إذا لم نتمكّن من استخراجه عند عرض الإعلان، فسنعرض عنوان URL من الكتالوج. بالنسبة لإعلانات الرحلات الجوية، يكون هذا الحقل مطلوبًا إذا لم توفر عنوان URL في الكتالوج.
يمكنك عرض عنصر واحد أو إعلان دوّار يحتوي على عدة عناصر. بالنسبة للإعلانات التي تحتوي على عنصر واحد، يمكنك عرض صور متعددة للعنصر نفسه في الإعلان الدوّار بافتراض أن كتالوج المنتجات لديك يحتوي على صور متعددة لكل عنصر. كما يمكنك عرض بطاقات ثابتة بجانب البطاقات الديناميكية. لمزيد من المعلومات حول خيارات التصميم، راجع إعلانات كتالوج Advantage+، إنشاء قالب تصميم.
يوضح المثال التالي كيفية إنشاء تصميم إعلان دوّار في الإعلانات الخاصة بالفنادق. يتوفر لدى الإعلانات الخاصة بالوجهات والإعلانات الخاصة بالرحلات الجوية إعداد متشابه.
use FacebookAds\Object\AdCreative;
use FacebookAds\Object\Fields\AdCreativeFields;
use FacebookAds\Object\Fields\AdCreativeLinkDataFields;
use FacebookAds\Object\Fields\AdCreativeObjectStorySpecFields;
use FacebookAds\Object\Values\AdCreativeCallToActionTypeValues;
use FacebookAds\Object\AdCreativeObjectStorySpec;
use FacebookAds\Object\AdCreativeLinkData;
$object_story_spec = new AdCreativeObjectStorySpec();
$object_story_spec->setData(array(
AdCreativeObjectStorySpecFields::PAGE_ID => <PAGE_ID>,
AdCreativeObjectStorySpecFields::TEMPLATE_DATA =>
(new AdCreativeLinkData())->setData(array(
AdCreativeLinkDataFields::MESSAGE =>
'Book your upcoming stay in {{hotel.city}}',
AdCreativeLinkDataFields::NAME => '{{hotel.name | titleize}}',
AdCreativeLinkDataFields::LINK => '<LINK>',
AdCreativeLinkDataFields::DESCRIPTION =>
'{{hotel.description}}',
AdCreativeLinkDataFields::ADDITIONAL_IMAGE_INDEX => 0,
AdCreativeLinkDataFields::CALL_TO_ACTION => array(
'type' => AdCreativeCallToActionTypeValues::BOOK_TRAVEL,
),
)),
));
$creative = new AdCreative(null, 'act_<AD_ACCOUNT_ID>');
$creative->setData(array(
AdCreativeFields::NAME => 'Dynamic Ad Template Creative Sample',
AdCreativeFields::OBJECT_STORY_SPEC => $object_story_spec,
AdCreativeFields::TEMPLATE_URL_SPEC =>
array(
'config' => array(
'app_id' => '123456789012345',
),
'ios' => array(
'url' => 'example://home/hotel'.
'?id={{hotel.hotel_id | urlencode}}'.
'&startDate={{trip.checkin_date date_format:Y-m-d | urlencode}}'.
'&endDate={{trip.checkout_date date_format:Y-m-d | urlencode}}',
),
'web' => array(
'url' => 'http://www.example.com/hotel'.
'?id={{hotel.hotel_id | urlencode}}'.
'&startDate={{trip.checkin_date date_format:Y-m-d | urlencode}}'.
'&endDate={{trip.checkout_date date_format:Y-m-d | urlencode}}',
)
),
AdCreativeFields::PRODUCT_SET_ID => <PRODUCT_SET_ID>,
));
$creative->create();
from facebookads.adobjects.adcreative import AdCreative
from facebookads.adobjects.adcreativeobjectstoryspec \
import AdCreativeObjectStorySpec
story = AdCreativeObjectStorySpec()
story[story.Field.page_id] = <PAGE_ID>
story[story.Field.template_data] = {
'message': 'Book your upcoming stay in {{hotel.city}}',
'name': '{{hotel.name | titleize}}',
'link': '<LINK>',
'description': '{{hotel.description}}',
'additional_image_index': 0,
'call_to_action': {
'type': 'BOOK_TRAVEL',
},
}
creative = AdCreative(parent_id='act_<AD_ACCOUNT_ID>')
creative[AdCreative.Field.name] = 'Dynamic Ad Template Creative Sample'
creative[AdCreative.Field.object_story_spec] = story
template_url = ('http://www.example.com/hotel.aspx?id={{hotel.hotel_id}}'
'&startDate={{trip.checkin_date date_format:Y-m-d}}'
'&endDate={{trip.checkout_date date_format:Y-m-d}}')
creative[AdCreative.Field.template_url] = template_url
creative[AdCreative.Field.product_set_id] = <PRODUCT_SET_ID>
creative.remote_create()
curl \
-F 'name=Dynamic Ad Template Creative Sample' \
-F 'object_story_spec={
"page_id": "<PAGE_ID>",
"template_data": {
"additional_image_index": 0,
"call_to_action": {"type":"BOOK_TRAVEL"},
"description": "{{hotel.description}}",
"link": "<LINK>",
"message": "Book your upcoming stay in {{hotel.city}}",
"name": "{{hotel.name | titleize}}"
}
}' \
-F 'template_url_spec={
"config": {"app_id":"123456789012345"},
"ios": {
"url": "example:\/\/home\/hotel?id={{hotel.hotel_id | urlencode}}&startDate={{trip.checkin_date date_format:Y-m-d | urlencode}}&endDate={{trip.checkout_date date_format:Y-m-d | urlencode}}"
},
"web": {
"url": "http:\/\/www.example.com\/hotel?id={{hotel.hotel_id | urlencode}}&startDate={{trip.checkin_date date_format:Y-m-d | urlencode}}&endDate={{trip.checkout_date date_format:Y-m-d | urlencode}}"
}
}' \
-F 'product_set_id=<PRODUCT_SET_ID>' \
-F 'access_token=<ACCESS_TOKEN>' \
https://graph.facebook.com/v2.11/act_<AD_ACCOUNT_ID>/adcreatives
للحصول على خيارات بيع البديل الأغلى مثل تحديد المقاعد أو أولوية الصعود بالنسبة للجمهور الذي اشترى رحلات جوية:
PURCHASE
.recommender_settings
التابع لتصميم الإعلان، حدد أحداث PURCHASE
لتوصية الإعلانات.curl \ -F 'name=Advantage+ Catalog Ad Template Creative Up-sell Sample' \ -F 'object_story_spec={ "page_id": "<PAGE_ID>", "template_data": { "additional_image_index": 0, "call_to_action": {"type":"LEARN_MORE"}, "description": "{{flight.description}}", "link": "<LINK>", "message": "Book extra leg room on your flight from {{flight.origin_city}} to {{flight.destination_city}}", } }' \ -F 'template_url_spec={ "config": {"app_id":"<APP_ID>"}, "ios": { "url": "example:\/\/home\/flight?id={{flight.origin_airport}}&startDate={{trip.departing_departure_date date_format:Y-m-d | urlencode}}&endDate={{trip.returning_departure_date date_format:Y-m-d | urlencode}}" }, "web": { "url": "http:\/\/www.example.com\/flight?id={{flight.origin_airport}}&startDate={{trip.checkin_date date_format:Y-m-d | urlencode}}&endDate={{trip.returning_departure_date date_format:Y-m-d | urlencode}}" } }' \ -F 'product_set_id=<FLIGHT_SET_ID>' \ -F 'recommender_settings'={"preferred_events":["Purchase"]}\ -F 'access_token=<ACCESS_TOKEN>' \ https://graph.facebook.com/VERSION/act_<AD_ACCOUNT_ID>/adcreatives
تتيح التراكبات للمُعلنين إضافة معلومات الأسعار (كسعر مباشر أو بنسبة خصم) لكل عنصر ضمن إعلانات كتالوج Advantage+.
يمكنك استخدام أنواع التراكبات التالية حسب نوع الكتالوج الذي تستخدمه في المجموعة الإعلانية:
price
وstrikethrough
و% off
price
price
ملاحظة: تكون كل إشارات القوالب المرتبطة بالأسعار لكل نوع من أنواع الكتالوجات مدعومة لخيارات التراكب الموضحة أعلاه. لعرض إشارات القوالب لكل نوع من أنواع الكتالوجات، راجع الفنادق والوجهات والرحلات الجوية.
يتم الحصول على معلومات حول الأسعار ديناميكيًا من العمودين السعر وسعر البيع في قائمة المنتجات. يمكن للمُعلنين الاختيار من بين التخصيصات التالية لتراكب إعلانات كتالوج Advantage+ الخاصة بهم:
TOP_LEFT
وTOP_RIGHT
وBOTTOM_LEFT
وBOTTOM_RIGHT
. بالنسبة للمثلث، يتم دعم الزاويتين TOP_LEFT
وTOP_RIGHT
فقط.price
وstrikethrough
و% off
. ملاحظة: يتوفر النوعان strikethrough
و% off
للفنادق فقط.تعرف على المزيد حول كيفية إضافة التراكبات.
curl \ -F 'name=Test Templates in Overlay' \ -F 'object_story_spec={ "page_id": "<PAGE_ID>", "template_data": { "description": "Description", "link": "<LINK>", "name": "Name: {{hotel.name}}", "message" : "Come visit {{hotel.city}}!", "image_overlay_spec": { "overlay_template":"pill_with_text", "text_font":"droid_serif_regular", "text_type":"strikethrough_price", "position":"top_left", "theme_color":"background_e50900_text_ffffff", "float_with_margin":"true", "text_template_tags": ["{{hotel.price round}}", "{{hotel.sale_price round}}"], } } }' \ -F 'product_set_id=<PRODUCT_SET_ID>' \ -F 'template_url=http://www.example.com' \ -F 'access_token=<ACCESS_TOKEN>' \ https://graph.facebook.com/v2.10/act_897427477067185/adcreatives
لإنشاء الإعلان، استخدم المعرفين ad_set_id
وcreative_id
.
curl -X POST \
-F 'name="My Ad"' \
-F 'adset_id="<AD_SET_ID>"' \
-F 'creative={
"creative_id": "<CREATIVE_ID>"
}' \
-F 'status="PAUSED"' \
-F 'access_token=<ACCESS_TOKEN>' \
https://graph.facebook.com/v21.0/act_<AD_ACCOUNT_ID>/ads
يمكنك إنشاء معاينة لتصميم Advantage+ للكتالوج الخاص بك باستخدام API معاينات الإعلانات. احرص على تضمين المعلمة product_item_ids
لتحديد عناصر الكتالوج التي تريد عرضها في المعاينة.
أنشئ معاينة لإعلانك باستخدام API معاينات الإعلانات. احرص على تضمين product_item_ids
لتحديد عناصر الكتالوج التي تظهر في المعاينة وتضمين start_date
وend_date
لتحديد تواريخ معينة.
curl -X GET \
-d 'ad_format="DESKTOP_FEED_STANDARD"' \
-d 'product_item_ids=[
"<PRODUCT_ITEM_ID>"
]' \
-d 'access_token=<ACCESS_TOKEN>' \
https://graph.facebook.com/v21.0/<CREATIVE_ID>/previews
اسم الحقل ونوعه | الوصف |
---|---|
النوع: |
|
النوع: | يتم عرض المعاينة مع إشارة نية المستخدم، مثل 2016-12-24.
|
النوع: | يتم عرض المعاينة مع إشارة الهدف لدى المستخدم، مثل 2017-01-01.
|
للحصول على رؤى إعلانية عن أحد كائنات السفر مثل فندق، احرص على إرسال استدعاء GET
إلى /insights
. ملاحظة: تذكّر إضافة المعرف product_id
إلى المعلمة breakdown
.
بالنسبة للفندق والوجهة، يظهر تقسيم product id
لكل من المعرفين hotel_id
أو destination_id
. بالنسبة للرحلة الجوية، يعرض تقسيم product id
القيمة origin_airport:destination_airport
.
لاستعادة التعليقات أو "تسجيلات الإعجاب" لإعلانات كتالوج Advantage+، استخدم API المنشور الديناميكي.