Объявления из каталога Advantage+ позволяют показывать людям рекламу в соответствии с их намерениями, которые определяются на разных устройствах. Вы можете собирать сигналы о намерениях пользователей из мобильных приложений и с сайтов, а затем с помощью этих данных формировать аудиторию для настройки таргетинга на потенциальных клиентов.
В этом документе рассматриваются следующие темы:
Для сбора сигналов пользователей используйте События в приложении (для мобильного приложения) или пиксель Meta (для веб-сайта).
Если у вас есть приложение и вы показываете рекламу только на ПК, установите Facebook SDK. С его помощью можно регистрировать сигналы для расширения целевой аудитории.
Используя Facebook SDK для iOS и для Android, добавьте в приложение следующие события:
Событие | Событие в iOS | Событие для Android |
---|---|---|
Поиск |
|
|
Просмотр контента |
|
|
Добавление в корзину |
|
|
Покупка | // Отправить через logPurchase |
|
В эти события должны содержать content_id
(или массив JSON нескольких content_id
).
В отличие от пикселя Meta Pixel, События в приложении не имеют параметра product_catalog_id
. Поэтому необходимо связать каталог и приложение с помощью указанной ниже конечной точки external_event_sources
.
Событие "Добавить в корзину" в iOS:
[[FBSDKAppEvents shared] logEvent:FBSDKAppEventNameAddedToCart valueToSum:54.23 parameters:@{ FBSDKAppEventParameterNameCurrency : @"USD", FBSDKAppEventParameterNameContentType : @"product", FBSDKAppEventParameterNameContentID : @"123456789" } ];
Событие "Покупка" в iOS (два разных товара, с указанием количества):
[[FBSDKAppEvents shared] logPurchase:21.97 currency:@"USD" parameters:@{ FBSDKAppEventParameterNameContent : @"[{\"id\":\"1234\",\"quantity\":2},{\"id\":\"5678\",\"quantity\":1}]", FBSDKAppEventParameterNameContentType : @"product" } ];
Событие "Покупка" в Android (два товара, с указанием количества):
Bundle parameters = new Bundle(); parameters.putString(AppEventsConstants.EVENT_PARAM_CURRENCY, "USD"); parameters.putString(AppEventsConstants.EVENT_PARAM_CONTENT_TYPE, "product"); parameters.putString(AppEventsConstants.EVENT_PARAM_CONTENT, "[{\"id\":\"1234\",\"quantity\":2},{\"id\":\"5678\",\"quantity\":1}]"); logger.logEvent( AppEventsConstants.EVENT_NAME_PURCHASED, 21.97, parameters );
Событие "Покупка" в Android (два товара):
Bundle parameters = new Bundle(); parameters.putString(AppEventsConstants.EVENT_PARAM_CURRENCY, "USD"); parameters.putString(AppEventsConstants.EVENT_PARAM_CONTENT_TYPE, "product"); parameters.putString(AppEventsConstants.EVENT_PARAM_CONTENT_ID, "[\"1234\",\"5678\"]"); logger.logEvent( AppEventsConstants.EVENT_NAME_PURCHASED, 21.97, parameters );
Обратите внимание: чтобы сообщить ID товаров, с объявлениями из каталога Advantage+ можно использовать либо CONTENT_ID
, либо CONTENT
. Параметр CONTENT
позволяет предоставить дополнительную информацию о товарах.
Для использования объявлений из каталога Advantage+ с партнером по мобильным измерениям (MMP) в процессе работы пользователя с вашим приложением должны активироваться отдельные требуемые события. Основные точки взаимодействия, которые следует отслеживать, — это поиск товара, просмотр товара, добавление позиции в корзину и покупка товаров. В MMP следует выбрать события, соответствующие следующим стандартным событиям объявлений из каталога Advantage+:
Имя | Описание |
---|---|
| Какой-либо пользователь ищет товар. |
| Аккаунт из Центра аккаунтов просматривает товар. |
| Какой-либо пользователь добавил товар в корзину. |
| Аккаунт из Центра аккаунтов покупается один или несколько товаров. |
Кроме того, чтобы каждое событие регистрировалось как действительное объявление из каталога Advantage+, потребуются два дополнительных параметра. Они представляют ID просматриваемой, добавляемой в корзину или приобретаемой позиции, а также то, принадлежит ли этот ID товару или группе товаров. Возможные дополнительные параметры:
Имя | Описание |
---|---|
Строка | Требуется либо |
Строка | Требуется либо Поля |
Строка | Необязательно. Если Подробнее см. в разделе Выбор правильного значения |
Строка | Необязательно. |
Строка | Необязательно. |
Примечание. При совершении покупки рекомендуется передавать параметры _valueToSum
и fb_currency
.
Если это применимо, на ваш веб-сайт должны быть добавлены следующие события:
Search
ViewCategory
ViewContent
AddToCart
Purchase
Эти события необходимо отправлять со следующими параметрами данных:
Имя | Описание |
---|---|
строка или строка[] | Требуется либо |
Объект[] | Требуется либо Поля |
Строка | Необязательно. Если Подробнее см. в разделе Выбор правильного значения |
Строка | Необязательно. |
Ниже приведен пример стандартного события Search
. В параметре content_ids
рекомендуется указывать 5–10 самых распространенных элементов из результатов поиска.
<!-- Facebook Pixel Code --> <script> !function(f,b,e,v,n,t,s){if(f.fbq)return;n=f.fbq=function(){n.callMethod? n.callMethod.apply(n,arguments):n.queue.push(arguments)};if(!f._fbq)f._fbq=n; n.push=n;n.loaded=!0;n.version='2.0';n.queue=[];t=b.createElement(e);t.async=!0; t.src=v;s=b.getElementsByTagName(e)[0];s.parentNode.insertBefore(t,s)}(window, document,'script','https://connect.facebook.net/en_US/fbevents.js'); // Insert Your Facebook Pixel ID below. fbq('init', '<FB_PIXEL_ID>'); fbq('track', 'PageView'); fbq('track', 'Search', { search_string: 'leather sandals', content_ids: ['1234', '2424', '1318', '6832'], // top 5-10 search results content_type: 'product' }); </script> <!-- End Facebook Pixel Code -->
Событие ViewCategory
приведено ниже. В параметре content_ids
рекомендуется указывать 5–10 самых распространенных элементов из результатов. Обратите внимание, что ViewCategory
не является стандартным событием, поэтому используется функция trackCustom
.
<!-- Facebook Pixel Code --> <script> !function(f,b,e,v,n,t,s){if(f.fbq)return;n=f.fbq=function(){n.callMethod? n.callMethod.apply(n,arguments):n.queue.push(arguments)};if(!f._fbq)f._fbq=n; n.push=n;n.loaded=!0;n.version='2.0';n.queue=[];t=b.createElement(e);t.async=!0; t.src=v;s=b.getElementsByTagName(e)[0];s.parentNode.insertBefore(t,s)}(window, document,'script','https://connect.facebook.net/en_US/fbevents.js'); // Insert Your Facebook Pixel ID below. fbq('init', '<FB_PIXEL_ID>'); fbq('track', 'PageView'); fbq('trackCustom', 'ViewCategory', { content_name: 'Really Fast Running Shoes', content_category: 'Apparel & Accessories > Shoes', content_ids: ['1234', '2424', '1318', '6832'], // top 5-10 results content_type: 'product' }); </script> <!-- End Facebook Pixel Code -->
Стандартное событие ViewContent
приведено ниже. Подробную информацию о настройке пикселя см. в разделе Пиксель Meta.
<!-- Facebook Pixel Code --> <script> !function(f,b,e,v,n,t,s){if(f.fbq)return;n=f.fbq=function(){n.callMethod? n.callMethod.apply(n,arguments):n.queue.push(arguments)};if(!f._fbq)f._fbq=n; n.push=n;n.loaded=!0;n.version='2.0';n.queue=[];t=b.createElement(e);t.async=!0; t.src=v;s=b.getElementsByTagName(e)[0];s.parentNode.insertBefore(t,s)}(window, document,'script','https://connect.facebook.net/en_US/fbevents.js'); // Insert Your Facebook Pixel ID below. fbq('init', '<FB_PIXEL_ID>'); fbq('track', 'PageView'); fbq('track', 'ViewContent', { content_ids: ['1234'], content_type: 'product', value: 0.50, currency: 'USD' }); </script> <!-- End Facebook Pixel Code -->
Реализация стандартного события AddToCart
зависит от того, как ваша платформа электронной торговли обрабатывает добавление товаров в корзину. Если это делается динамически, используйте обработчик событий onclick
, чтобы событие активировалось при нажатии кнопки. Если загружается отдельная страница, событие пикселя может инициироваться обычным образом.
<!-- Facebook Pixel Code --> <script> !function(f,b,e,v,n,t,s){if(f.fbq)return;n=f.fbq=function(){n.callMethod? n.callMethod.apply(n,arguments):n.queue.push(arguments)};if(!f._fbq)f._fbq=n; n.push=n;n.loaded=!0;n.version='2.0';n.queue=[];t=b.createElement(e);t.async=!0; t.src=v;s=b.getElementsByTagName(e)[0];s.parentNode.insertBefore(t,s)}(window, document,'script','https://connect.facebook.net/en_US/fbevents.js'); // Insert Your Facebook Pixel ID below. fbq('init', '<FB_PIXEL_ID>'); fbq('track', 'PageView'); // If you have a separate add to cart page that is loaded. fbq('track', 'AddToCart', { content_ids: ['1234', '1853', '9386'], content_type: 'product', value: 3.50, currency: 'USD' }); </script> <!-- End Facebook Pixel Code -->
Если отдельная страница не загружается и событие должно инициироваться при нажатии кнопки:
<!-- The below method uses jQuery, but that is not required --> <button id="addToCartButton">Add To Cart</button> <!-- Add event to the button's click handler --> <script type="text/javascript"> $( '#addToCartButton' ).click(function() { fbq('track', 'AddToCart', { content_ids: ['1234'], content_type: 'product', value: 2.99, currency: 'USD' }); }); </script>
Стандартное событие Purchase
(два товара, с указанием количества):
<!-- Facebook Pixel Code --> <script> !function(f,b,e,v,n,t,s){if(f.fbq)return;n=f.fbq=function(){n.callMethod? n.callMethod.apply(n,arguments):n.queue.push(arguments)};if(!f._fbq)f._fbq=n; n.push=n;n.loaded=!0;n.version='2.0';n.queue=[];t=b.createElement(e);t.async=!0; t.src=v;s=b.getElementsByTagName(e)[0];s.parentNode.insertBefore(t,s)}(window, document,'script','https://connect.facebook.net/en_US/fbevents.js'); // Insert Your Facebook Pixel ID below. fbq('init', '<FB_PIXEL_ID>'); fbq('track', 'PageView'); fbq('track', 'Purchase', { contents: [ {'id': '1234', 'quantity': 2}, {'id': '4642', 'quantity': 1} ], content_type: 'product', value: 21.97, currency: 'USD' }); </script> <!-- End Facebook Pixel Code -->
Стандартное событие Purchase
(два товара):
<!-- Facebook Pixel Code --> <script> !function(f,b,e,v,n,t,s){if(f.fbq)return;n=f.fbq=function(){n.callMethod? n.callMethod.apply(n,arguments):n.queue.push(arguments)};if(!f._fbq)f._fbq=n; n.push=n;n.loaded=!0;n.version='2.0';n.queue=[];t=b.createElement(e);t.async=!0; t.src=v;s=b.getElementsByTagName(e)[0];s.parentNode.insertBefore(t,s)}(window, document,'script','https://connect.facebook.net/en_US/fbevents.js'); // Insert Your Facebook Pixel ID below. fbq('init', '<FB_PIXEL_ID>'); fbq('track', 'PageView'); fbq('track', 'Purchase', { content_ids: ['1234', '4642'], content_type: 'product', value: 21.97, currency: 'USD' }); </script> <!-- End Facebook Pixel Code -->
content_type
Примечание.fb_content_type
— это тип контента для мобильного приложения.
Если страница посвящена конкретному SKU (определенного размера, цвета и т. д.), используйте product
для content_type
и передавайте идентификаторы товаров (т. е. столбец id
в ленте товаров) в content_ids
. Для всех событий AddToCart
и Purchase
следует использовать параметр content_type=product
, поскольку люди приобретают определенные товары. Человеку не нужна абстрактная рубашка неопределенного цвета и размера: он покупает рубашку с конкретными свойствами.
Если страница посвящена группе связанных продуктов, которые отличаются размером, цветом и т. д., но относятся к одной группе, используйте значение product_group
и передавайте идентификаторы группы товаров (т. е. столбецitem_group_id
в ленте товаров) в content_ids
. Стандартная ситуация — страница ViewContent
, когда пользователь ещё не выбрал размер. Не используйтеproduct_group
с AddToCart
или с Purchase
.
Значение content_type
должно соответствовать типу идентификатора в параметре content_ids
или contents
.
Когда вы передаете идентификатор определенных товаров (content_type=product
), Meta может, исходя из информации о конкретных свойствах (размер, цвет и т. д.), рекомендовать покупателям актуальные товары, которые их интересуют. Мы всегда показываем товары, а не их группы, даже если content_type=product_group
.
Если content_type
не указано, Meta будет сопоставлять событие с каждым товаром, который имеет такой же идентификатор, независимо от его типа. Рекомендуется отправлять content_type
, поскольку это позволит вам эффективнее контролировать то, какой конкретный идентификатор вы хотите сопоставить с событием.
Вам необходимо связать источники событий с каталогами товаров, чтобы эти данные передавались в Facebook для демонстрации соответствующей рекламы. Для этого откройте страницу каталога в Business Manager и нажмите кнопку Associate Event Source. Выберите приложение и пиксель, который будет получать события объявлений из каталога Advantage+.
Также можно выполнить вызов API POST
со списком внешних источников событий в виде параметров строки запроса с кодировкой UTF-8:
use FacebookAds\Object\ProductCatalog;
$product_catalog = new ProductCatalog(<PRODUCT_CATALOG_ID>);
$product_catalog->createExternalEventSource(array(), array(
'external_event_sources' => array(
<PIXEL_ID>,
<APP_ID>,
),
));
from facebookads.adobjects.productcatalog import ProductCatalog
product_catalog = ProductCatalog(<PRODUCT_CATALOG_ID>)
product_catalog.add_external_event_sources([
<PIXEL_ID>,
<APP_ID>,
])
curl \
-F 'external_event_sources=["<PIXEL_ID>","<APP_ID>"]' \
-F 'access_token=<ACCESS_TOKEN>' \
https://graph.facebook.com/v2.11/<PRODUCT_CATALOG_ID>/external_event_sources
Примечание. У вас должны быть разрешения на доступ к каталогу, пикселю, приложению и компании.
Имя | Описание |
---|---|
| Обязательный параметр. |
Следующим шагом будет создание аудиторий товаров на основании действий в ваших мобильных приложениях и на веб-сайте. Аудитории продуктов можно использовать для таргетинга рекламы и выбирать для них события.
Для стандартных событий в приложении аудитория агрегируется с использованием имен событий в пикселе рекламы:
Search
ViewContent
AddToCart
Purchase
Используйте эти имена событий в правилах аудиторий, в том числе тех, которые содержат пользователей устройств с Android и iOS.
Создайте аудиторию товаров, выполнив вызов API POST
к конечной точке /act_{ad-account-id}/product_audiences
.
https://graph.facebook.com/v21.0
/act_AD_ACCOUNT_ID/product_audiences
Имя | Описание |
---|---|
Строка | Обязательный параметр. |
Строка | Необязательный параметр. |
строка цифр | Обязательный параметр. Группа товаров, которая таргетируется на эту аудиторию. |
Объект JSON | Обязательный параметр. |
Целое число | Обязательный параметр. |
Объект[] | Обязательный параметр. |
объект JSON | Необязательный параметр. |
Целое число | Обязательный параметр, если указано исключение. |
Объект[] | Обязательный параметр, если указано исключение. |
Каждое правило должно содержать event
с оператором eq
либо в качестве правила верхнего уровня, либо в качестве части правила and
верхнего уровня.
Если один и тот же объект event
используется и в параметре inclusions, и в параметре exclusions, то проверки дополнительных параметров должны быть одинаковыми.
Чтобы создать аудиторию, таргетированную на людей, которые просмотрели или добавили товары в корзину, но не купили их:
curl -X POST \
-F 'name="Test Product Audience"' \
-F 'product_set_id="<PRODUCT_SET_ID>"' \
-F 'inclusions=[
{
"retention_seconds": 86400,
"rule": {
"event": {
"eq": "AddToCart"
}
}
},
{
"retention_seconds": 72000,
"rule": {
"event": {
"eq": "ViewContent"
}
}
}
]' \
-F 'exclusions=[
{
"retention_seconds": 172800,
"rule": {
"event": {
"eq": "Purchase"
}
}
}
]' \
-F 'access_token=<ACCESS_TOKEN>' \
https://graph.facebook.com/v21.0/act_<AD_ACCOUNT_ID>/product_audiences
Для таргетинга на людей, которые просмотрели товар в браузере на iPhone, но не купили его ни на одном из устройств, создайте следующую аудиторию.
Это предполагает, что ваш пиксель Meta содержит параметр userAgent
.
curl -X POST \
-F 'name="Test Iphone Product Audience"' \
-F 'product_set_id="<PRODUCT_SET_ID>"' \
-F 'inclusions=[
{
"retention_seconds": 86400,
"rule": {
"and": [
{
"event": {
"eq": "AddToCart"
}
},
{
"userAgent": {
"i_contains": "iPhone"
}
}
]
}
}
]' \
-F 'exclusions=[
{
"retention_seconds": 172800,
"rule": {
"event": {
"eq": "Purchase"
}
}
}
]' \
-F 'access_token=<ACCESS_TOKEN>' \
https://graph.facebook.com/v21.0/act_<AD_ACCOUNT_ID>/product_audiences
Созданную аудиторию продукта можно получить с помощью API Custom Audiences. Параметры, которые изначально использовались для создания аудитории, можно получить с помощью параметра data_source
.
Аудитория товара — это особый тип пользовательской аудитории, которая генерируется динамически на основании событий, связанных с товаром. Конечная точка act_{ad-account-id}/product_audiences
является специальной конечной точкой POST
, которая служит для создания этих аудиторий.
Чтобы получить пользовательскую аудиторию:
curl -X GET \
-d 'fields="data_source,subtype"' \
-d 'access_token=<ACCESS_TOKEN>' \
https://graph.facebook.com/v21.0/act_<AD_ACCOUNT_ID>/customaudiences
Чтобы получить аудиторию определенного товара:
use FacebookAds\Object\ProductAudience;
$product_audience = new ProductAudience(<PRODUCT_AUDIENCE_ID>);
$product_audience->read();
from facebookads.objects import ProductAudience
product_audience = ProductAudience(<PRODUCT_AUDIENCE_ID>)
product_audience.remote_read()
CustomAudience customAudience2 = new CustomAudience(<PRODUCT_AUDIENCE_ID>, context).get()
.execute();
curl -G \
-d 'access_token=<ACCESS_TOKEN>' \
https://graph.facebook.com/v2.11/<PRODUCT_AUDIENCE_ID>