Коэффициенты ставок

Этот API могут использовать только партнеры и рекламодатели, внесенные в список разрешенных. Если вы хотите его использовать, обратитесь к своему представителю Meta.

Применяя коэффициенты ставок, рекламодатели могут использовать многоуровневую стратегию ставок в одной группе объявлений с одной целевой аудиторией, что позволяет снизить необходимую степень сегментации аудитории. Например, рекламодатель может создать одну группу объявлений, а затем настроить коэффициенты ставок для каждой группы пользователей с разной давностью посещения.

Обычно рекламодатели создают группы объявлений, чтобы настроить разные ставки для отдельных сегментов аудитории. Например, можно создать три группы объявлений, каждая из которых соответствует одной возрастной группе: 18–25, 26–35 и 36–65.

Для рекламодателей, которые находятся в США или настраивают таргетинг на США, и показывают рекламу недвижимости, трудоустройства и услуг кредитования, при корректировке ставок применяются другие наборы ограничений и подмножество категорий аудиторий. Кампании, рекламирующие недвижимость, трудоустройство и услуги кредитования, не могут корректировать ставки для следующих категорий аудиторий: age, gender, locale, home_location, user_bucket и похожие аудитории custom_audience (пользовательские аудитории на основе похожих аудиторий). См. статью об особых категориях рекламы.

Начиная с 30 января 2023 г. реклама, в которой используются коэффициенты ставок со сторонними категориями данных (booking_window, custom_audience (в том числе похожие пользовательские аудитории), lengthofstay, travelstartdate, travelstartdayofweek, user_recency, user_bucket), больше не будет показываться пользователям, отказавшимся от нее.

Рекомендации по настройке коэффициентов ставок

  • Настраивайте сложные стратегии назначения ставок, чтобы не нужно было создавать слишком много сегментов аудитории или групп объявлений. Это поможет обеспечить больше показов без излишней сегментации кампании на множество групп объявлений с относительно небольшими аудиториями.
  • Коэффициенты ставок не привязаны к какой-то определенной цели. Их можно использовать со следующими видами оптимизации: APP_INSTALLS, CLICKS, LANDING_PAGE_VIEWS, LEAD_GENERATION, OFFSITE_CLICKS и OFFSITE_CONVERSIONS.
  • Раньше можно было создать три группы объявлений, каждая из которых соответствовала одной возрастной группе, и настроить отдельные ставки для каждой из них. Теперь можно создать одну группу объявлений и изменять ставки для каждой возрастной группы с помощью коэффициентов в диапазоне от 0,09 до 1,00.
  • Коэффициенты ставок нужно указывать в одном ключе user_groups.

Примечание. Коэффициенты ставок можно использовать при всех стратегиях назначения ставок (в частности, таких, как предельная ставка, предельная цена и минимальная цена).

Настройка категорий аудиторий

Вы можете определять категории аудиторий и назначать каждой из них коэффициент ставки. Категории аудиторий определяются на основании демографических данных, сведений об устройствах, а также данных, заданных рекламодателем. Кампании, рекламирующие недвижимость, трудоустройство или услуги кредитования, не могут назначать ставки для следующих категорий аудиторий: age, gender, locale, home_location, user_bucket и похожие аудитории custom_audience (пользовательские аудитории на основе похожих аудиторий).

ПриоритетОписание

age

Ставка зависит от возраста или возрастной группы. (Недоступно для кампаний, рекламирующих недвижимость, трудоустройство и услуги кредитования.)

booking_window

Ставка зависит от количества дней до начала поездки.

custom_audience

Ставка зависит от того, в какую пользовательскую аудиторию (custom_audience) входит пользователь. Похожие аудитории поддерживаются (за исключением кампаний, рекламирующих недвижимость, трудоустройство и услуги кредитования).

device_platform

Ставка зависит от платформы устройства пользователя (например, мобильное устройство или ПК).

gender

Ставка зависит от пола. (Недоступно для кампаний, рекламирующих недвижимость, трудоустройство и услуги кредитования.)

home_location

Ставка зависит от параметра home_location пользователя. Он представляет текущее место жительства. Коэффициент home_location можно разбивать по городам, регионам и странам. (Недоступно для кампаний, рекламирующих недвижимость, трудоустройство и услуги кредитования.)

lengthofstay

Ставка зависит от количества дней с начала до окончания поездки.

locale

Ставка зависит от региона в настройках пользователя (например, английский язык или испанский). (Недоступно для кампаний, рекламирующих недвижимость, трудоустройство и услуги кредитования.)

position_type

Ставка зависит от позиции, в которой показывается реклама (например, facebook_feed, facebook_marketplace или instagram_story).

publisher_platform

Ставка зависит от параметра publisher_platform (например, facebook, instagram, audience_network или messenger).

travelstartdate

Ставка зависит от даты начала поездки (например, 20181231 означает 31 декабря 2018 года).

travelstartdayofweek

Ставка зависит от того, в какой день недели начинается поездка (0 — понедельник, 6 — воскресенье).

user_bucket

Ставка зависит от значения user_bucket, определенного при инициализации пикселя рекламодателя или наступлении события в приложении. Поле user_bucket — необязательный параметр. Значение: целое число от 0 до 100. (Недоступно для кампаний, рекламирующих недвижимость, трудоустройство и услуги кредитования.)

user_device

Ставка зависит от параметра user_device (например, iPhone). См. user_device.

user_os

Ставка зависит от параметра user_os (например, iOS или Android).

user_recency

Ставка зависит от того, как давно пользователь в последний раз посещал сайт или запускал приложение.

age

Пользователи распределяются по возрастным группам (например, 18-25 и 26-35). Предположим, что максимальная ставка для группы объявлений — 5 долларов США. Тогда для пользователей от 18 до 25 лет ставка может составлять 2,5 доллара США, для людей от 26 до 40 лет — 3,5 доллара США, для остальных — 5 долларов США. Примечание. Значение по умолчанию необязательно. В качестве коэффициента можно использовать значение 1.0.

Пример

{
    "user_groups": {
      "age": {
        "18-25": 0.5,
        "26-40": 0.7,
        "default": 1.0
      }
    }
}

booking_window

Допустимые значения разбивки: любой диапазон целых чисел не меньше 1. Например: 1-3, 4-9 и т. д.

Пример

curl -X POST \ 
  -F 'bid_adjustments=
     {"user_groups":{"booking_window":{"event_sources":["123456789"],"1-2":0.1,"3-5":0.2,"default":0.5}}}' \ 
  -F 'access_token='$access_token \ 
  https://graph.facebook.com/<API_VERSION>/<ad_set_id>

См. также пример использования коэффициентов для путешествий.

custom_audience

Начиная с 30 января 2023 г. реклама, в которой используются коэффициенты ставок со сторонними категориями данных (booking_window, custom_audience (в том числе похожие пользовательские аудитории), lengthofstay, travelstartdate, travelstartdayofweek, user_recency, user_bucket), больше не будет показываться пользователям, отказавшимся от нее.

Ставки можно корректировать на основании пользовательских аудиторий.

Пример

curl -X POST \ 
  -F 'bid_adjustments=
     {"user_groups":{"custom_audience":{"<CUSTOM_AUDIENCE_ID>":0.8, "<CUSTOM_AUDIENCE_ID>":1.0, "default":0.5}}}' \ 
  -F 'access_token='$access_token \ 
  https://graph.facebook.com/<API_VERSION>/<ad_set_id>

device_platform

Допустимые значения разбивки:

  • mobile;
  • desktop.

Пример

{
  "user_groups": {
    "device_platform": {
      "mobile": 0.7,
      "desktop": 0.9
    }
  }
}

gender

Группировка пользователей по полу.

Пример

{
  "user_groups": {
    "gender": {
      "male": 0.5,
      "female": 0.7,
      "default": 1.0
    }
  }
}

home_location

Допустимые значения разбивки:

  • city id;
  • region id;
  • двузначный код страны.

Найти city id и region id можно с помощью API Search. Запрос можно выполнить через Graph API Explorer или через терминал.

Примечание: Значение default можно установить только под home_location, а не cities, regions, или countries.

Пример

{
  "user_groups": {
    "home_location": {
      "cities": {
         "2420605": 0.2
      },
      "regions": {
         "3847": 0.5
      },
      "countries": {
         "US": 0.2
      },
      "default": 0.8
     }
  }
}

length_of_stay

Допустимые значения разбивки: любой диапазон целых чисел не меньше 1. Например: “1-3”, “4-9” и т. д.

Пример

curl -X POST \ 
  -F 'bid_adjustments=
  {"user_groups":{"length_of_stay":{"event_sources":["123456789"],"1-2":0.1,"3-     5":0.2,"default":0.5}}}' \ 
  -F 'access_token='$access_token \ 
  https://graph.facebook.com/<API_VERSION>/<ad_set_id>

См. также пример использования коэффициентов для путешествий.

locale

Можно использовать ID локали или группы локалей (например, 6 для американского английского или 5 для немецкого).

ID локали можно найти с помощью поиска локали для таргетинга, указав type=adlocale. Пример:

{
  "user_groups": {
    "locale": {
      6: 0.8,
      5: 0.3
    }
  }
}

position_type

Эта категория аналогична позициям в API Targeting. Допустимые значения разбивки:

Место размещенияЗначение

Лента Facebook

facebook_feed

Facebook Marketplace

facebook_marketplace

Ленты видео на Facebook

facebook_suggested_video

Правый столбец на Facebook

facebook_right_hand_column

Facebook Business Explore

facebook_biz_disco_feed

Лента Instagram

instagram_stream

Лента профиля в Instagram

instagram_profile_feed

Вкладка "Интересное" в Instagram

instagram_explore

Главный экран раздела "Интересное" в Instagram

instagram_explore_home

Входящие в Messenger

messenger_messenger_home

Истории в Instagram

instagram_story

Истории на Facebook

facebook_story

Истории в Messenger

messenger_story

Instagram Reels

instagram_reels

Facebook Reels

facebook_facebook_reels

Видеореклама In-Stream на Facebook

facebook_instream_video

Реклама в Facebook Reels

facebook_facebook_reels_overlay

Результаты поиска на Facebook

facebook_search

Результаты поиска в Instagram

instagram_ig_search

Рекламные сообщения в Messenger

Не поддерживается

Нативная, баннерная и межстраничная реклама в Audience Network

audience_network_classic

Видео с вознаграждением в Audience Network

audience_network_rewarded_video

Видеореклама In-Stream в Audience Network

Не поддерживается

Пример

{
  "user_groups": {
    "position_type":{
        "facebook_feed":0.9,
        "messenger_messenger_home":0.7,
        "instagram_stream":0.8,
        "audience_network_classic":0.5,
        "default":0.4
    }
  }
}

publisher_platform

Допустимые значения разбивки:

  • facebook;
  • instagram;
  • audience_network;
  • messenger.

Пример

{
  "user_groups": {
    "publisher_platform": {
      "facebook": 0.7,
      "instagram": 0.9,
      "default": 1.0 // We'll apply bid multiplier 1.0 if no default is specified anyway
    }
  }
}

travel_start_date

Допустимые значения разбивки: любой диапазон дат в формате _yyyymmdd_-_yyyymmdd_.

Пример

curl -X POST \ 
  -F 'bid_adjustments=
     {"user_groups":{"travel_start_date":{"event_sources":["123456789"],"20180901-20181001":0.2,"default":0.9}}}' \ 
  -F 'access_token='$access_token \ 
  https://graph.facebook.com/<API_VERSION>/<ad_set_id>

См. также пример использования коэффициентов для путешествий.

travel_start_day_of_week

Допустимые значения разбивки: целые числа от 0 до 6 включительно (0 — понедельник, 6 — воскресенье).

Пример

curl -X POST \ 
  -F 'bid_adjustments=
  {"user_groups":{"travel_start_day_of_week":{"event_sources":        ["123456789"],"0":0.1,"2":0.2,"6":0.3,"default":0.9}}}' \ 
  -F 'access_token='$access_token \ 
  https://graph.facebook.com/<API_VERSION>/<ad_set_id>

См. также пример использования коэффициентов для путешествий.

user_bucket

Вы можете отправить нам результаты работы собственного классификатора пользователей. Затем отправляйте дополнительный параметр user_bucket при инициализации пикселя или наступлении событий в приложении. Значением может быть целое число от 0 до 100.

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

  • event_sources — источник для отслеживания (инициализация пикселя или событие в приложении);
  • event_retention (необязательный) — время в секундах, в течение которого нужно игнорировать предыдущие значения user_bucket;
  • events_dedup_mode (необязательный) — флаг, определяющий, какое значение user_bucket нужно использовать, если один источник событий отправляет разные значения user_bucket для одного и того же пользователя (значение по умолчанию — latest);
  • event_source_preference (необязательный) — флаг, определяющий, какое значение user_bucket нужно использовать, если несколько источников событий отправляют разные значения user_bucket для одного и того же пользователя (значение по умолчанию — latest).

Пример

{
  "user_groups": {
   "user_bucket": {
      "event_sources": [<pixel_id>,<app_id>,...],
      "event_retention": 604800, // optional, exclude old events
      
      //optional, useful when multiple event sources have user_bucket
      "events_dedup_mode": "max"|"min"|"latest",
      
      //optional, dedup user_bucket values sent from one single event source
      "event_source_preference": "max"|"min"|"latest",
      
      "1":0.7, // these are the bid multipliers
      "2":1.0,
     }
  }
}

user_device

Допустимые значения разбивки:

  • iPad;
  • iPhone.

Другие допустимые значения можно получить с помощью API Targeting Search (параметры type=adTargetingCategory и class=user_device).

Пример

{
  "user_groups": {
    "user_device": {
      "iPad": 0.7,
      "iPhone": 0.9,
      "default": 1.0
    }
  }
}

Пример

curl
  -F 'name=Test BM Adset '$(date +%s) \
  -F 'bid_amount=3000' \
  -F 'billing_event=IMPRESSIONS' \
  -F 'optimization_goal=OFFSITE_CONVERSIONS' \
  -F 'daily_budget=15000' \
  -F 'campaign_id=23843038336220329' \
  -F 'promoted_object={"product_set_id":"267888283975766"}' \
  -F 'targeting={
     "geo_locations": {"countries":["AQ"]},
     "dynamic_audience_ids": ["23842885952670329"],
     "publisher_platforms": ["facebook"]
    }' \
  -F 'bid_adjustments={"user_groups":{"user_device": {"iPad": 0.7, "iPhone": 0.9, "default": 1.0}}}' \
  -F 'status=PAUSED' \
  -F 'access_token='$access_token \
  https://graph.facebook.com/<API_VERSION>/act_1653439931385336/adsets

Пример

curl
  -F 'name=Test BM Adset '$(date +%s) \
  -F 'bid_amount=3000' \
  -F 'billing_event=IMPRESSIONS' \
  -F 'optimization_goal=OFFSITE_CONVERSIONS' \
  -F 'daily_budget=15000' \
  -F 'campaign_id=23843038336220329' \
  -F 'promoted_object={"product_set_id":"267888283975766"}' \
  -F 'targeting={
     "geo_locations": {"countries":["AQ"]},
     "dynamic_audience_ids": ["23842885952670329"],
     "publisher_platforms": ["facebook"]
     }' \
  -F 'bid_adjustments={"user_groups":{"user_device": {"iPad": 0.7, "iPhone": 0.9, "default": 1.0}}}' \
  -F 'status=PAUSED' \
  -F 'access_token='$access_token \
   https://graph.facebook.com/<API_VERSION>/act_1653439931385336/adsets
   {"id":"23843038339320329"}

Пример

curl
  -F 'access_token='$access_token \
  https://graph.facebook.com/VERSION/ID?fields=bid_adjustments
  {"bid_adjustments":{"user_groups":"{\"user_device\":    {\"default\":1,\"iPad\":0.7,\"iPhone\":0.9}}"},"id":"ID"}

См. также расширенный пример.

user_group_weight_spec

Допустимые значения разбивки:

  • age;
  • gender;
  • device_platform;
  • publisher_platform;
  • user_device;
  • user_os.

См. также дополнительный пример.

Пример. Параметр user_group_weight_spec представляет собой структуру JSON, которая выглядит следующим образом:

{
  <BREAKDOWN_NAME>: {
    <BREAKDOWN_VALUE_1>: <WEIGHT_VALUE> OR <NESTED_USER_GROUP_WEIGHT_SPEC>,
    <BREAKDOWN_VALUE_2>: <WEIGHT_VALUE> OR <NESTED_USER_GROUP_WEIGHT_SPEC>,
    <BREAKDOWN_VALUE_3>: <WEIGHT_VALUE> OR <NESTED_USER_GROUP_WEIGHT_SPEC>,
    ...
    "default": <WEIGHT_VALUE> OR <NESTED_USER_GROUP_WEIGHT_SPEC>, // optional, if not specified, we'll use 1.0
  }
}
{
  "age": {
    "18-25": 0.7,
    "26-35": {
      "gender": {
        "male": 0.9,
        "female": 1.0
      }
    },
    "default": 0.85
  }
}

* For users between the ages of 18 and 25, we apply bid multiplier 0.7.
* For male users between the ages of 26 and 35, we apply bid multiplier 0.9.
* For female users between the ages of 26 and 35, we apply bid multiplier 1.0.
* For all other users, we apply bid multiplier 0.85.

Значения разбивки — это возрастные группы, выраженные целыми числами. Например: 18–25, где минимальный возраст — 18 лет. Возрастные группы не должны пересекаться.

Пример

{
  "user_groups": {
    "age": {
      "18-25": 0.7,
      "30-40": 1.0,
      "default": 0.3
    }
  }
}

Дополнительный пример

> curl 
    -F 'bid_adjustments={"user_groups":{"user_device":{"iPad":0.3,"iPhone":{"user_os":{"Android":0.3,"iOS":{"age":{"18-35":0.3,"35-45":0.4}}}}}}}' -F access_token=$token https://graph.intern.facebook.com/v2.12/6089875504114
{"success":true}%
> curl -G 
   -d access_token=$token https://graph.intern.facebook.com/v2.12/6089875504114\?  fields\=bid_adjustments
{"bid_adjustments":{"user_groups":"{\"user_device\":{\"iPad\":0.3,\"iPhone\":{\"user_os\":{\"Android\":0.3,\"iOS\":{\"age\":{\"18-35\":0.3,\"35-45\":0.4}}}}}}"},"id":"6089875504114"}%

Примеры использования коэффициентов для путешествий

curl -X POST \
  -F 'bid_adjustments={"user_groups":{"travel_start_day_of_week":{"event_sources":["1862565504034757"],"1":0.1,"3":0.1,"default":0.9}}}' \
  -F 'access_token=<ACCESS_TOKEN>' \
  https://graph.facebook.com/<API_VERSION>/<ADSET_ID>

  Length of Stay 'bid_adjustments={"user_groups":{"length_of_stay":{"event_sources":["1862565504034757"],"1-2":0.1,"3-7":0.2,"default":0.5}}}'
  Booking window 'bid_adjustments={"user_groups":{"booking_window":{"event_sources":["1862565504034757"],"1-2":0.1,"3-7":0.2,"default":0.5}}}'
  Travel start date: 'bid_adjustments={"user_groups":{"travel_start_date":{"event_sources":["1862565504034757"],"20180918-20190101":0.1,"default":0.5}}}'
  Day of week: 'bid_adjustments={"user_groups":{"travel_start_day_of_week":{"event_sources":["1862565504034757"],"1":0.1,"2":0.1,"0":0.2,"default":0.5}}}'

user_os

Допустимые значения разбивки:

  • iOS;
  • Windows.

Другие допустимые значения можно получить с помощью API Targeting Search (параметры type=adTargetingCategory и class=user_os).

Поддерживаемые значения:

  • Android;
  • Windows;
  • Windows Phone;
  • iOS.

Пример

{
  "user_groups": {
    "user_os": {
      "Android": 0.7,
      "iOS": 0.9,
      "default": 1.0
    }
  }
}

Влияние изменений в iOS 14

Повлияют ли на коэффициенты ставок для кампаний конверсии на сайте изменения политики для iOS 14?

Да, в результате изменений в iOS 14 мы ожидаем потери сигналов и менее четкой атрибуции, вследствие чего количество сигналов на группу объявлений уменьшится. Для большинства категорий, по которым можно делать разные ставки, ничего не изменится, но при таргетинге на пользователей iOS 14.5 будут затронуты коэффициенты, связанные с давностью посещения, пользовательскими аудиториями и параметром user_bucket. Это связано с тем, что такие коэффициенты зависят от событий, измеряемых с помощью пикселя Facebook или API Conversions. Все остальные коэффициенты основаны на локальных данных и не зависят от пикселя Facebook и API Conversions.

user_recency

Группировка пользователей по времени инициализации пикселя или наступления событий в приложении. Необходимо указать, какие источники событий нужно отслеживать и в какие промежутки времени.

Пример

В этом примере показано, как применить коэффициент ставки 1.0 для пользователей, инициировавших пиксель или событие в приложении в течение 86400 секунд, и т. д.

{
  "user_groups": {
    "user_recency": {
      "event_sources": [<pixel_id>,<app_id>,...],
      "0-86400": 1.0,
      "86401-172800": 0.7,
      "default": 0.5
    }
  }
}

Последовательные разбивки

Группы пользователей также можно определить с помощью нескольких последовательных разбивок. В этом случае вместо плавающего значения коэффициента ставки задается спецификация дальнейшей разбивки. Рассмотрите пример группы объявлений с максимальной ставкой 5 долларов США и следующими настройками:

  • ставка 4,5 доллара США для мужчин;
  • ставка 3,5 доллара США для женщин в возрасте от 18 до 25 лет;
  • ставка 4,0 доллара США для женщин в возрасте от 26 до 35 лет;
  • ставка 5,0 долларов США для всех остальных пользователей.
{
  "user_groups": {
    "gender": {
      "male": 0.9,
      "female": {
        "age": {
          "18-25": 0.7,
          "26-35": 0.8
        }
      }
    }
  }
}

Требования для применения

  • Коэффициент ставки может иметь значение от 0.09 до 1.0.

Вызовы API

Получение

curl -G \
  -d 'access_token=<ACCESS_TOKEN>' \
  https://graph.facebook.com/<API_VERSION>/<ADSET_ID>?fields=bid_adjustments

Обновление

curl \
  -F 'bid_adjustments={"user_groups":<USER_GROUP_WEIGHT_SPEC>}' \
  -F 'access_token=<ACCESS_TOKEN>' \
  https://graph.facebook.com/<API_VERSION>/<PRODUCT_CATALOG_ID>/<ADSET_ID>

Создание или обновление коэффициента ставки для группы объявлений

Ниже приведен пример вызова API для обновления существующей группы объявлений. (Вам нужно будет подставить свои значения для ID группы объявлений, маркера доступа, источников событий и коэффициентов ставки.)

curl -X POST \ -F 'bid_adjustments={ "user_groups": { "user_bucket": { "event_sources": [ "<PIXEL_ID>", "<APP_ID>" ], "1": 0.1, "2": 0.2, "3": 0.3, "default": { "gender": { "male": 0.99, "female": 0.12 } } } } }' \ -F 'access_token=<ACCESS_TOKEN>' \ https://graph.facebook.com/v19.0/<AD_SET_ID>/
'use strict'; const bizSdk = require('facebook-nodejs-business-sdk'); const AdSet = bizSdk.AdSet; const access_token = '<ACCESS_TOKEN>'; const app_secret = '<APP_SECRET>'; const app_id = '<APP_ID>'; const id = '<AD_SET_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 = { 'bid_adjustments' : {'user_groups':{'user_bucket':{'event_sources':['<pixelID>','<appID>'],'1':0.1,'2':0.2,'3':0.3,'default':{'gender':{'male':0.99,'female':0.12}}}}}, }; const sample_code = (new AdSet(id)).update( fields, params ); logApiCallResult('sample_code api call complete.', sample_code);
require __DIR__ . '/vendor/autoload.php'; use FacebookAds\Object\AdSet; use FacebookAds\Api; use FacebookAds\Logger\CurlLogger; $access_token = '<ACCESS_TOKEN>'; $app_secret = '<APP_SECRET>'; $app_id = '<APP_ID>'; $id = '<AD_SET_ID>'; $api = Api::init($app_id, $app_secret, $access_token); $api->setLogger(new CurlLogger()); $fields = array( ); $params = array( 'bid_adjustments' => array('user_groups' => array('user_bucket' => array('event_sources' => array('<pixelID>','<appID>'),'1' => 0.1,'2' => 0.2,'3' => 0.3,'default' => array('gender' => array('male' => 0.99,'female' => 0.12))))), ); echo json_encode((new AdSet($id))->updateSelf( $fields, $params )->exportAllData(), JSON_PRETTY_PRINT);
from facebook_business.adobjects.adset import AdSet from facebook_business.api import FacebookAdsApi access_token = '<ACCESS_TOKEN>' app_secret = '<APP_SECRET>' app_id = '<APP_ID>' id = '<AD_SET_ID>' FacebookAdsApi.init(access_token=access_token) fields = [ ] params = { 'bid_adjustments': {'user_groups':{'user_bucket':{'event_sources':['<pixelID>','<appID>'],'1':0.1,'2':0.2,'3':0.3,'default':{'gender':{'male':0.99,'female':0.12}}}}}, } print AdSet(id).update( 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_SET_ID>\"; APIContext context = new APIContext(access_token).enableDebug(true); new AdSet(id, context).update() .setBidAdjustments(\"{\\"user_groups\\":{\\"user_bucket\\":{\\"event_sources\\":[\\"<pixelID>\\",\\"<appID>\\"],\\"1\\":0.1,\\"2\\":0.2,\\"3\\":0.3,\\"default\\":{\\"gender\\":{\\"male\\":0.99,\\"female\\":0.12}}}}}\") .execute(); } }
require 'facebook_ads' access_token = '<ACCESS_TOKEN>' app_secret = '<APP_SECRET>' app_id = '<APP_ID>' id = '<AD_SET_ID>' FacebookAds.configure do |config| config.access_token = access_token config.app_secret = app_secret end ad_set = FacebookAds::AdSet.get(id) ad_set.bid_adjustments = {'user_groups':{'user_bucket':{'event_sources':['<pixelID>','<appID>'],'1':0.1,'2':0.2,'3':0.3,'default':{'gender':{'male':0.99,'female':0.12}}}}} ad_set.save

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

Вместе со своей командой, ответственной за ведение аккаунта Meta, и специалистом по измерениям создайте тестовые кампании, чтобы протестировать прирост конверсий или провести сплит-тест. Для оценки результативности рекомендуем использовать тройной сплит-тест со следующими элементами:

  • Элемент 1 (контрольная группа А), кампания 1 — одна группа объявлений с одной ставкой для всех таргетированных пользователей.
  • Элемент 2 (контрольная группа Б), кампания 2 — несколько групп объявлений, каждая из которых предназначена для одной группы пользователей. Сегментировать аудиторию по параметрам пикселя или приложения можно с помощью правил, определяющих пользовательские аудитории сайта или мобильного приложения.
  • Элемент 3 (тестовая группа), кампания 3 — одна группа объявлений с разными коэффициентами ставки для разных групп пользователей. Скорректированная ставка для каждой группы пользователей обязательно должна совпадать со ставкой на уровне группы объявлений для соответствующей группы в элементе 2.

Настройка сплит-тестов

Теперь следует настроить сплит-тесты и контрольные группы для оценки результативности рекламы с применением коэффициентов ставки. Тесты проводятся в течение 1–2 недель, и для них не требуется минимальный бюджет. Настройте сплит-тестирование, как описано ниже.

  • Элемент 1, контрольная группа А содержит одну группу объявлений с одной ставкой. Таргетинг выполняется на основании всех значений user_bucket.
  • Элемент 2, контрольная группа Б содержит несколько групп объявлений, по одной для каждого значения user_bucket. Для каждой группы объявлений необходимо задать таргетинг по отдельному значению user_bucket и соответствующую ставку. Для дальнейшей сегментации аудитории на основании других параметров пикселя Meta или событий в приложении можно использовать правила, определяющие пользовательские аудитории сайта или мобильного приложения. См. статьи о пользовательских аудиториях с сайтов и из мобильных приложений.
  • Элемент 3, тестовая группа содержит одну группу объявлений со свойством bid_adjustment, определяющим разные ставки для каждого значения user_bucket. Коэффициенты должны соответствовать индивидуальным ставкам для каждой группы объявлений в элементе 2, т. е. в контрольной группе Б.

Подробные сведения см. в статье Сплит-тестирование.

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

Настройте рекламную кампанию согласно обычной процедуре. Если вам потребуется помощь в настройке корректировки ставок, обратитесь к представителю Meta.

Настройте группы user_groups и установите разные коэффициенты ставки для каждой группы. Группы определяются на основании демографических (например, возраст или пол) и дополнительных данных (например, количество баллов или участие в программе лояльности). Пример:

{
   "user_bucket":{
      "business_id":253286871795863,
      "1":0.7,
      "2":1.0,
      "3":{
         "gender":{
            "male":1.0,
            "female":0.8
         }
      },
      "default": 0.9
   }
}

В этом примере:

  • для пользователей со значением 1 для loyalty_program применяется коэффициент ставки 0,7;
  • для пользователей со значением 2 для loyalty_program применяется коэффициент ставки 1,0;
  • для мужчин со значением 3 для loyalty_program применяется коэффициент ставки 1,0;
  • для женщин со значением 3 для loyalty_program применяется коэффициент ставки 0,8;
  • для пользователей с другим значением loyalty_program применяется коэффициент ставки 0,9;
  • для всех остальных пользователей применяется коэффициент ставки 1,0.

Теперь можно создать рекламную кампанию:

curl -X POST \ -F 'name="My Adset with bid multiplier"' \ -F 'campaign_id="<AD_CAMPAIGN_ID>"' \ -F 'daily_budget=3000' \ -F 'billing_event="IMPRESSIONS"' \ -F 'optimization_goal="OFFSITE_CONVERSIONS"' \ -F 'bid_amount=500' \ -F 'bid_adjustments={ "user_groups": { "gender": { "male": 0.8, "female": 1 } } }' \ -F 'promoted_object={ "product_set_id": "<PRODUCT_SET_ID>", "custom_event_type": "ADD_TO_CART" }' \ -F 'targeting={ "facebook_positions": [ "feed" ], "geo_locations": { "countries": [ "US" ] } }' \ -F 'status="PAUSED"' \ -F 'access_token=<ACCESS_TOKEN>' \ https://graph.facebook.com/v19.0/act_<AD_ACCOUNT_ID>/adsets
'use strict'; const bizSdk = require('facebook-nodejs-business-sdk'); const AdAccount = bizSdk.AdAccount; const AdSet = bizSdk.AdSet; 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 = { 'name' : 'My Adset with bid multiplier', 'campaign_id' : '<adCampaignLinkClicksID>', 'daily_budget' : '3000', 'billing_event' : 'IMPRESSIONS', 'optimization_goal' : 'OFFSITE_CONVERSIONS', 'bid_amount' : '500', 'bid_adjustments' : {'user_groups':{'gender':{'male':0.8,'female':1}}}, 'promoted_object' : {'product_set_id':'<productSetID>','custom_event_type':'ADD_TO_CART'}, 'targeting' : {'facebook_positions':['feed'],'geo_locations':{'countries':['US']}}, 'status' : 'PAUSED', }; const adsets = (new AdAccount(id)).createAdSet( fields, params ); logApiCallResult('adsets api call complete.', adsets);
require __DIR__ . '/vendor/autoload.php'; use FacebookAds\Object\AdAccount; use FacebookAds\Object\AdSet; 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( 'name' => 'My Adset with bid multiplier', 'campaign_id' => '<adCampaignLinkClicksID>', 'daily_budget' => '3000', 'billing_event' => 'IMPRESSIONS', 'optimization_goal' => 'OFFSITE_CONVERSIONS', 'bid_amount' => '500', 'bid_adjustments' => array('user_groups' => array('gender' => array('male' => 0.8,'female' => 1))), 'promoted_object' => array('product_set_id' => '<productSetID>','custom_event_type' => 'ADD_TO_CART'), 'targeting' => array('facebook_positions' => array('feed'),'geo_locations' => array('countries' => array('US'))), 'status' => 'PAUSED', ); echo json_encode((new AdAccount($id))->createAdSet( $fields, $params )->exportAllData(), JSON_PRETTY_PRINT);
from facebook_business.adobjects.adaccount import AdAccount from facebook_business.adobjects.adset import AdSet 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 = { 'name': 'My Adset with bid multiplier', 'campaign_id': '<adCampaignLinkClicksID>', 'daily_budget': '3000', 'billing_event': 'IMPRESSIONS', 'optimization_goal': 'OFFSITE_CONVERSIONS', 'bid_amount': '500', 'bid_adjustments': {'user_groups':{'gender':{'male':0.8,'female':1}}}, 'promoted_object': {'product_set_id':'<productSetID>','custom_event_type':'ADD_TO_CART'}, 'targeting': {'facebook_positions':['feed'],'geo_locations':{'countries':['US']}}, 'status': 'PAUSED', } print AdAccount(id).create_ad_set( 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).createAdSet() .setName(\"My Adset with bid multiplier\") .setCampaignId(\"<adCampaignLinkClicksID>\") .setDailyBudget(3000L) .setBillingEvent(AdSet.EnumBillingEvent.VALUE_IMPRESSIONS) .setOptimizationGoal(AdSet.EnumOptimizationGoal.VALUE_OFFSITE_CONVERSIONS) .setBidAmount(500L) .setBidAdjustments(\"{\\"user_groups\\":{\\"gender\\":{\\"male\\":0.8,\\"female\\":1}}}\") .setPromotedObject(\"{\\"product_set_id\\":\\"<productSetID>\\",\\"custom_event_type\\":\\"ADD_TO_CART\\"}\") .setTargeting( new Targeting() .setFieldFacebookPositions(Arrays.asList(\"feed\")) .setFieldGeoLocations( new TargetingGeoLocation() .setFieldCountries(Arrays.asList(\"US\")) ) ) .setStatus(AdSet.EnumStatus.VALUE_PAUSED) .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) adsets = ad_account.adsets.create({ name: 'My Adset with bid multiplier', campaign_id: '<adCampaignLinkClicksID>', daily_budget: '3000', billing_event: 'IMPRESSIONS', optimization_goal: 'OFFSITE_CONVERSIONS', bid_amount: '500', bid_adjustments: {'user_groups':{'gender':{'male':0.8,'female':1}}}, promoted_object: {'product_set_id':'<productSetID>','custom_event_type':'ADD_TO_CART'}, targeting: {'facebook_positions':['feed'],'geo_locations':{'countries':['US']}}, status: 'PAUSED', })

После создания групп объявлений установите для них bid_adjustments с помощью API. Параметр будет выглядеть примерно так:

{
  "user_groups": {
    "user_bucket": {
      "event_sources": [<pixel_id>,<app_id>,...],
      "event_source_preference": "max"|"min"|"latest", //optional, useful when multiple event sources have user_bucket
      "events_dedup_mode": "max"|"min"|"latest", //optional, dedup user_bucket values sent from one single event source
      "event_retention": 604800, // optional, exclude old events
      "1":0.7, // these are the bid multipliers
      "2":1.0,
      "default": { // used in the case that we don't have user_bucket for that user
         gender:{ // this is a nested example, but you could just do "default": 1.0,
            "male": {
              home_location: {
                  cities: { // city id, can be found in search API, eg: search?type=adgeolocation&q=Menlo Park&limit=10
                    "2420605": 0.2,
                  },
                  regions: {
                    "3847": 0.5
                  },
                  countries: {
                    "US": 0.2
                  }
                }
              }
            },
            "female": {
              "user_recency": {
                "event_sources": [<pixel_id>,<app_id>,...],
                "0-86400": 0.5,
                "86400-172800": 0.7,
                "default": 0.2
              }
            }
         },
      },
   },
}

В настоящее время мы не проверяем этот параметр. Отправьте ID группы объявлений представителю Meta, чтобы мы проверили его вручную.

Для каждого источника событий используется последнее полученное значение user_bucket для конкретного пользователя. Однако если указано несколько источников событий (например, пиксель и приложение) и в двух и более из них зафиксированы разные значения user_bucket, то используется максимальное из них.

Ниже приведен пример вызова для обновления существующей группы объявлений. Вам нужно будет указать свои значения для ID группы объявлений, маркера доступа, источников событий и коэффициентов ставки.

curl -X POST 
  -F access_token=<access_token> \
  -F 'bid_adjustments={"user_groups": {"user_bucket": {"event_sources": [<pixel_id>,  <app_id>,...], "1": 0.1, "2": 0.2, "3": 0.3, "default": {"gender": {"male": 0.99, "female": 0.1}} }} }' \ 
  https://graph.facebook.com/<VERSION>/<ad-set-id>