Instant Experience

Instant Experience — это полноэкранная целевая страница, которая при переходе из рекламы в Ленте загружается практически мгновенно.

Все упоминания canvas в API означают Instant Experience. Холст (canvas) — предыдущее название этого формата.

Перед началом работы

Для создания Instant Experience и управления ими необходимы:

Ограничения

  • Обновлять можно только неопубликованные объявления Instant Experience.
  • Для Instagram API Instant Experience доступен с некоторыми ограничениями.
  • Реклама Instant Experience не поддерживается в историях на Facebook.

Создание

Для создания Instant Experience понадобятся ID Страницы Facebook (PAGE-ID) и элементы, такие как фото, кнопки и текст, которые необходимо добавить в объявление.

use FacebookAds\Api;
use FacebookAds\Http\RequestInterface;

$params = array(
  'background_color' => 'FFFFFF',
  'body_element_ids' => array(<CANVAS_PHOTO_ID>),
  'is_hidden' => false,
  'is_published' => false,
  'name' => 'Canvas Name',
);

$data = Api::instance()->call(
  '/' . <PAGE_ID> . '/canvases',
  RequestInterface::METHOD_POST,
  $params)->getContent();
curl \
  -F 'background_color=FFFFFF' \
  -F 'body_element_ids=["<CANVAS_PHOTO_ID>"]' \
  -F 'is_hidden=' \
  -F 'is_published=' \
  -F 'name=Canvas Name' \
  -F 'access_token=<ACCESS_TOKEN>' \
  https://graph.facebook.com/v2.11/<PAGE_ID>/canvases

Элементы

ИмяОписание

Кнопка

Кнопка для Instant Experience. Поле button_style является обязательным.

Кольцевая галерея

Кольцевая галерея для Instant Experience.

Нижний колонтитул

Нижний колонтитул для Instant Experience.

Верхний колонтитул

Верхний колонтитул для Instant Experience.

Фото

Фото для Instant Experience. Необходимо указать PHOTO-ID фото, загруженного на Страницу Facebook.

Список товаров

Список товаров для Instant Experience.

Группа товаров

Группа товаров из каталога товаров объявлений из каталога Advantage+, отображаемая в Instant Experience.

Локатор магазинов

Локатор магазинов для Instant Experience.

Текст

Текст со стилем, отображаемый в Instant Experience.

Видео

Видео для Instant Experience. Необходимо указать VIDEO-ID видео, загруженного на Страницу Facebook.

Удаление элемента

Чтобы удалить элемент, отправьте запрос DELETE с ID этого элемента.

use FacebookAds\Api;
use FacebookAds\Http\RequestInterface;

$data = Api::instance()->call(
  '/' . <CANVAS_ELEMENT_ID>,
  RequestInterface::METHOD_DELETE,
  array())->getContent();
curl -X DELETE \
  -d 'access_token=<ACCESS_TOKEN>' \
  https://graph.facebook.com/v2.11/<CANVAS_ELEMENT_ID>

Получение существующих объявлений Instant Experience

Чтобы получить информацию о существующем объявлении Instant Experience, понадобится его ID (CANVAS-ID).

use FacebookAds\Api;
use FacebookAds\Http\RequestInterface;

$params = array(
  'fields' => array(
    'body_elements',
    'canvas_link',
    'id',
    'is_hidden',
    'is_published',
    'name',
  ),
);

$data = Api::instance()->call(
  '/' . <CANVAS_ID>,
  RequestInterface::METHOD_GET,
  $params)->getContent();
curl -G \
  --data-urlencode 'fields=[ 
    "body_elements", 
    "canvas_link", 
    "id", 
    "is_hidden", 
    "is_published", 
    "name" 
  ]' \
  -d 'access_token=<ACCESS_TOKEN>' \
  https://graph.facebook.com/v2.11/<CANVAS_ID>

Получение всех объявлений Instant Experience для Страницы

Чтобы получить информацию обо всех существующих объявлениях Instant Experience для Страницы Facebook, понадобится ID Страницы (PAGE-ID).

use FacebookAds\Api;
use FacebookAds\Http\RequestInterface;

$params = array(
  'fields' => array(
    'background_color',
    'body_elements',
    'canvas_link',
    'id',
    'is_hidden',
    'is_published',
    'last_editor',
    'name',
    'owner',
    'update_time',
  ),
);

$data = Api::instance()->call(
  '/' . <PAGE_ID> . '/canvases',
  RequestInterface::METHOD_GET,
  $params)->getContent();
curl -G \
  --data-urlencode 'fields=[ 
    "background_color", 
    "body_elements", 
    "canvas_link", 
    "id", 
    "is_hidden", 
    "is_published", 
    "last_editor", 
    "name", 
    "owner", 
    "update_time" 
  ]' \
  -d 'access_token=<ACCESS_TOKEN>' \
  https://graph.facebook.com/v2.11/<PAGE_ID>/canvases

Обновление Instant Experience

Обновить можно только неопубликованные объявления Instant Experience. Для этого понадобятся ID объявления Instant Experience (CANVAS-ID) и всех элементов, которые необходимо обновить.

use FacebookAds\Api;
use FacebookAds\Http\RequestInterface;

$params = array(
  'background_color' => 'FFFFFF',
  'body_element_ids' => array(<CANVAS_PHOTO_ID>),
  'is_hidden' => false,
  'is_published' => false,
  'name' => 'Canvas Name',
);

$data = Api::instance()->call(
  '/' . <CANVAS_ID>,
  RequestInterface::METHOD_POST,
  $params)->getContent();
curl \
  -F 'background_color=FFFFFF' \
  -F 'body_element_ids=["<CANVAS_PHOTO_ID>"]' \
  -F 'is_hidden=' \
  -F 'is_published=' \
  -F 'name=Canvas Name' \
  -F 'access_token=<ACCESS_TOKEN>' \
  https://graph.facebook.com/v2.11/<CANVAS_ID>

Использование шаблона

С помощью шаблонов можно быстро создавать объявления Instant Experience для определенных бизнес-целей. У каждого шаблона свой макет, но вместо контента по умолчанию вы можете добавить свои изображения, видео, товары, текст и ссылки.

Имя шаблона APIID шаблонаОписание

Поиск новых клиентов

133471657203838

Увеличьте количество конверсий с помощью целевой страницы для мобильных устройств, которая побуждает людей к действию. Шаблон "Привлечение клиентов" в Ads Manager.

Знакомство с компанией

1063217037112304

Расскажите людям о своем бренде, товарах или услугах. Шаблон "История" в Ads Manager.

Продажа товаров (без каталога)

424787857903852

Показывайте в рекламе товары, которые люди могут купить на мобильных устройствах. Для этого необязательно использовать каталог — можно просто загрузить информацию о позициях. Шаблон "Продажа товаров (без каталога)" в Ads Manager.

Продажа товаров: макет "Стиль жизни"

1369752616394017

Продемонстрируйте свои товары в действии с помощью фото. Шаблон "Каталог" в Ads Manager.

Продажа товаров: макет "Сетка"

1932289657009030

Используйте свой каталог товаров, чтобы люди могли делать покупки прямо со своего мобильного устройства. Шаблон "Витрина" в Ads Manager.

AR-продукт

Шаблон "AR-продукт" доступен только через Ads Manager.

Получение типов элементов для шаблона

Шаг 1. Получение информации о документе для шаблона.

Отправьте запрос GET, чтобы определить, какие элементы необходимы для конкретного шаблона (в следующем примере используется шаблон Поиск новых клиентов).

curl -i -X GET \
 "https://graph.facebook.com/VERSION/133471657203838?fields=document&access_token=ACCESS-TOKEN"

Пример ответа

{
  "document": {
    "name": "Get New Customers",
    "id": "397246414010297"
  },
  "id": "133471657203838"
}

Шаг 2. Получение типов элементов.

Используйте ID из поля document, чтобы получить определенные элементы, доступные для конкретного шаблона.

curl -i -X GET \
 "https://graph.facebook.com/VERSION/397246414010297?fields=body_elements&access_token=ACCESS-TOKEN"

Возвращенный список будет содержать типы элементов, которые можно использовать в шаблоне Поиск новых клиентов.

    {
  "body_elements": [
    {
      "name": "Cover Image or Video",
      "element_type": "PHOTO",
      "id": "397271930674412"
    },
    {
      "name": "Text",
      "element_type": "RICH_TEXT",
      "id": "397271920674413"
    },
    {
      "name": "Text",
      "element_type": "RICH_TEXT",
      "id": "397271910674414"
    },
    {
      "name": "Button",
      "element_type": "BUTTON",
      "id": "397271914007747"
    },
    {
      "name": "Carousel",
      "element_type": "CAROUSEL",
      "id": "397271940674411"
    },
    {
      "name": "Text",
      "element_type": "RICH_TEXT",
      "id": "397271917341080"
    },
    {
      "name": "Button",
      "element_type": "BUTTON",
      "id": "397271924007746"
    }
  ],
  "id": "397246414010297"
}

Публикация

Чтобы опубликовать объявление Instant Experience, отправьте запрос POST к его ID (CANVAS-ID) и установите для поля is_published значение true.

use FacebookAds\Api;
use FacebookAds\Http\RequestInterface;

$params = array(
  'is_published' => true,
);

$data = Api::instance()->call(
  '/' . <CANVAS_ID>,
  RequestInterface::METHOD_POST,
  $params)->getContent();
curl \
  -F 'is_published=1' \
  -F 'access_token=<ACCESS_TOKEN>' \
  https://graph.facebook.com/v2.11/<CANVAS_ID>

Создание рекламного креатива.

Создайте рекламный креатив, используя ссылку на существующее объявление Instant Experience (CANVAS-LINK).

curl -X POST \ -F 'image_hash="<IMAGE_HASH>"' \ -F 'object_story_spec={ "page_id": "<PAGE_ID>", "link_data": { "image_hash": "<IMAGE_HASH>", "link": "<CANVAS_LINK>", "name": "Creative message", "call_to_action": { "type": "LEARN_MORE" } } }' \ -F 'access_token=<ACCESS_TOKEN>' \ https://graph.facebook.com/v19.0/act_<AD_ACCOUNT_ID>/adcreatives
'use strict'; const bizSdk = require('facebook-nodejs-business-sdk'); const AdAccount = bizSdk.AdAccount; const AdCreative = bizSdk.AdCreative; const access_token = '<ACCESS_TOKEN>'; const app_secret = '<APP_SECRET>'; const app_id = '<APP_ID>'; const id = '<AD_ACCOUNT_ID>'; const api = bizSdk.FacebookAdsApi.init(access_token); const showDebugingInfo = true; // Setting this to true shows more debugging info. if (showDebugingInfo) { api.setDebug(true); } const logApiCallResult = (apiCallName, data) => { console.log(apiCallName); if (showDebugingInfo) { console.log('Data:' + JSON.stringify(data)); } }; let fields, params; fields = [ ]; params = { 'image_hash' : '<imageHash>', 'object_story_spec' : {'page_id':'<pageID>','link_data':{'image_hash':'<imageHash>','link':'<canvasURI>','name':'Creative message','call_to_action':{'type':'LEARN_MORE'}}}, }; const adcreatives = (new AdAccount(id)).createAdCreative( fields, params ); logApiCallResult('adcreatives api call complete.', adcreatives);
require __DIR__ . '/vendor/autoload.php'; use FacebookAds\Object\AdAccount; use FacebookAds\Object\AdCreative; use FacebookAds\Api; use FacebookAds\Logger\CurlLogger; $access_token = '<ACCESS_TOKEN>'; $app_secret = '<APP_SECRET>'; $app_id = '<APP_ID>'; $id = '<AD_ACCOUNT_ID>'; $api = Api::init($app_id, $app_secret, $access_token); $api->setLogger(new CurlLogger()); $fields = array( ); $params = array( 'image_hash' => '<imageHash>', 'object_story_spec' => array('page_id' => '<pageID>','link_data' => array('image_hash' => '<imageHash>','link' => '<canvasURI>','name' => 'Creative message','call_to_action' => array('type' => 'LEARN_MORE'))), ); echo json_encode((new AdAccount($id))->createAdCreative( $fields, $params )->exportAllData(), JSON_PRETTY_PRINT);
from facebook_business.adobjects.adaccount import AdAccount from facebook_business.adobjects.adcreative import AdCreative from facebook_business.api import FacebookAdsApi access_token = '<ACCESS_TOKEN>' app_secret = '<APP_SECRET>' app_id = '<APP_ID>' id = '<AD_ACCOUNT_ID>' FacebookAdsApi.init(access_token=access_token) fields = [ ] params = { 'image_hash': '<imageHash>', 'object_story_spec': {'page_id':'<pageID>','link_data':{'image_hash':'<imageHash>','link':'<canvasURI>','name':'Creative message','call_to_action':{'type':'LEARN_MORE'}}}, } print AdAccount(id).create_ad_creative( fields=fields, params=params, )
import com.facebook.ads.sdk.*; import java.io.File; import java.util.Arrays; public class SAMPLE_CODE_EXAMPLE { public static void main (String args[]) throws APIException { String access_token = \"<ACCESS_TOKEN>\"; String app_secret = \"<APP_SECRET>\"; String app_id = \"<APP_ID>\"; String id = \"<AD_ACCOUNT_ID>\"; APIContext context = new APIContext(access_token).enableDebug(true); new AdAccount(id, context).createAdCreative() .setImageHash(\"<imageHash>\") .setObjectStorySpec( new AdCreativeObjectStorySpec() .setFieldLinkData( new AdCreativeLinkData() .setFieldCallToAction( new AdCreativeLinkDataCallToAction() .setFieldType(AdCreativeLinkDataCallToAction.EnumType.VALUE_LEARN_MORE) ) .setFieldImageHash(\"<imageHash>\") .setFieldLink(\"<canvasURI>\") .setFieldName(\"Creative message\") ) .setFieldPageId(\"<pageID>\") ) .execute(); } }
require 'facebook_ads' access_token = '<ACCESS_TOKEN>' app_secret = '<APP_SECRET>' app_id = '<APP_ID>' id = '<AD_ACCOUNT_ID>' FacebookAds.configure do |config| config.access_token = access_token config.app_secret = app_secret end ad_account = FacebookAds::AdAccount.get(id) adcreatives = ad_account.adcreatives.create({ image_hash: '<imageHash>', object_story_spec: {'page_id':'<pageID>','link_data':{'image_hash':'<imageHash>','link':'<canvasURI>','name':'Creative message','call_to_action':{'type':'LEARN_MORE'}}}, })

Когда рекламный креатив будет готов, можно перейти к созданию рекламной группы, группы объявлений и рекламной кампании.

Диалог рекламы Instant Experience

В диалоге рекламы Instant Experience вы можете добавлять на свой сайт интерфейсы для создания объявлений Instant Experience на Facebook. Подробные сведения об этом компоненте пользовательского интерфейса см. в этом разделе.

Вам понадобится настроить Facebook SDK для JavaScript, как описано в следующих документах:

При создании объявлений Instant Experience SDK для JavaScript использует разрешения пользователя, вошедшего в систему. Если у пользователя нет необходимых разрешений для указанной страницы и компании, в диалоге появится сообщение об ошибке. Чтобы ошибок не возникало, пользователь должен относиться к компании и иметь разрешения на создание рекламы для страницы.

Вызовите диалог:

FB.ui({         
  display: 'popup',
  method: 'instant_experiences_builder',
  business_id: '<BUSINESS_ID>',
  page_id: '<PAGE_ID>'
}, function(response) {
  // callback
});

Для плагина можно задать следующие параметры:

ИмяОбязательноОписание

display

Да

Необходимый параметр со значением popup

method

Да

Необходимый параметр со значением instant_experiences_builder

business_id

Да

ID вашей компании

page_id

Да

ID Страницы, с которым вы хотите связать Instant Experience

canvas_id

Нет

ID объявления Instant Experience, которое вы хотите отредактировать

Параметр canvas_id необязателен. Он нужен, чтобы пользователь мог отредактировать или предварительно просмотреть уже существующее объявление Instant Experience. Готовое объявление Instant Experience нельзя изменить. Для предварительного просмотра Instant Experience рекомендуем использовать соответствующий диалог.

В случае успеха плагин вернет следующий ответ:

{
  "success": true,
  "id": "CANVAS-ID"
}

Возвращаемый ID относится к опубликованному объявлению Instant Experience. Вы можете использовать его в рекламных кампаниях. Если ответа нет или получен ответ undefined, это означает, что пользователь закрыл диалог, когда объявление Instant Experience ещё не было готово. Возможно, пользователь сохранил объявление Instant Experience, но не завершил работу с ним. С помощью Graph API можно получить все относящиеся к странице объявления Instant Experience, чтобы проверить, нет ли среди них незавершенных.

Предпросмотр объявлений Instant Experience

API предпросмотра iFrame

Чтобы сгенерировать предпросмотр объявления Instant Experience, можно вызвать API предпросмотра, который вернет iFrame, аналогично API предпросмотра рекламы:

curl -X GET \
  -d 'access_token=<ACCESS_TOKEN>' \
  https://graph.facebook.com/v18.0/<CANVAS_ID>/preview

API вернет примерно такой ответ, для просмотра которого можно встроить возвращенный элемент iFrame в код HTML:

{
"data": [
    {
      "body": "<iframe src=\"https://www.facebook.com/ads/canvas/preview?d=AQKELApdJxoVp2f3PHl8-pRtYuAh4-_eDupMDbh-pS9zde_EFxckhYQCXu7NYUi4PhhBA7uskIo2Ys3IjIVNGZiS&t=AQKGOPqGI-NWcv1YKbA\" width=\"405\" height=\"720\" scrolling=\"yes\" style=\"border: none;\"></iframe>"
    }
  ],
  "__www_request_id__": "AQnyr47Qp2r5M-ISqSiMgrw"
}

Facebook SDK

В этом диалоге можно посмотреть, как объявление Instant Experience будет выглядеть для пользователя Facebook на вашем сайте. Подробные сведения о компоненте пользовательского интерфейса см. в статье о диалогах.

Вам понадобится настроить Facebook SDK для JavaScript, как описано в следующих документах:

При создании объявлений Instant Experience SDK для JavaScript использует разрешения пользователя, вошедшего в систему. Если у пользователя нет необходимых разрешений на просмотр объявления Instant Experience, в диалоге отобразится сообщение об ошибке.

Затем нужно вызвать диалог предпросмотра:

FB.ui({         
  display: 'popup',
  method: 'instant_experiences_preview',
  canvas_id: 'CANVAS-ID'
});

Для плагина можно задать следующие параметры:

ИмяОбязательноОписание

display

Да

Необходимый параметр со значением popup

method

Да

Необходимый параметр со значением instant_experiences_preview

canvas_id

Да

ID объявления Instant Experience, которое вы хотите просмотреть

Создание аудиторий для Instant Experience

Чтобы создать аудиторию на основе вовлеченности (т. е. аудиторию, состоящую из людей, которые взаимодействовали с Instant Experience), в вызове POST /act_AD-ACCOUNT/customaudiences установите для параметра object_id в поле rule значение ID Instant Experience (CANVAS-ID).

Люди, которые открыли объявление Instant Experience

curl \
  -F 'name=Instant Experience Engagement Audience' \
  -F 'description=People who opened this Instant Experience' \
  -F 'rule=[{"object_id":"<CANVAS_ID>","event_name":"instant_shopping_document_open"}]' \
  -F 'access_token=<ACCESS_TOKEN>' \  
https://graph.facebook.com/<VERSION>/act_<AD_ACCOUNT_ID>/customaudiences

Люди, которые нажали на ссылки в объявлении Instant Experience

curl \
  -F 'name=Instant Experience Engagement Audience' \
  -F 'description=People who clicked any links in this Instant Experience' \
  -F 'rule=[{"object_id":"<CANVAS_ID>","event_name":"instant_shopping_element_click"}]' \
  -F 'access_token=<ACCESS_TOKEN>' \  
https://graph.facebook.com/<VERSION>/act_<AD_ACCOUNT_ID>/customaudiences

Дополнительную информацию о пользовательских аудиториях см. в этом разделе справки.

Instant Experience и реклама в Instagram

Для интеграции Instant Experience с Instagram используются те же вызовы API, что и для Instant Experience на Facebook. Обратите внимание на ограничения при использовании объявлений Instant Experience в Instagram:

  • Места размещения. Можно настроить для ленты Instagram и историй в Instagram. Если вы выберете истории в Instagram, только этот вариант можно будет выбрать в качестве места размещения для рекламы.
  • Элементы Instant Experience. Полностью поддерживаются заголовки и группы товаров.

Частично поддерживаемые в Instagram элементы Instant Experience:

  • Нижний колонтитул. Без swipe to open; в клиентах отображается как Tap to open.
  • Кольцевая галерея. Без фото, перенаправляющих в другое объявление Instant Experience. В клиенте отображается как ссылка, на которую невозможно нажать. Для фото и видео нет выравнивания по высоте и ширине и функции "повернуть для панорамы"; отображаются с выравниванием по ширине.
  • Кнопка. Не может перенаправлять в другое объявление Instant Experience или в App Store.
  • Текст. Нет поддержки языков с письмом справа налево.
  • Видео. Видео 360° не поддерживаются.
  • Локаторы магазинов. Не поддерживаются.

Статистика рекламы

Обзор и описание доступных метрик см. в разделе Статистика рекламы.

Статьи по теме