Базовый (основной) таргетинг ведется по следующим группам параметров:
Если рекламодатель находится в США или настроил таргетинг на эту страну, а реклама связана с недвижимостью, трудоустройством, кредитованием, вопросами общественной значимости, выборами или политикой, то будут применяться особые наборы ограничений.
Начать можно с таргетинга по базовым параметрам — демографическим данным и местоположению. Как правило, в качестве источника данных используется поиск для таргетинга, а затем необходимые параметры задаются в параметрах таргетинга — атрибутах группы объявлений, которые определяют, кто увидит рекламу.
Если вы не работаете с пользовательскими аудиториями, то в параметрах таргетинга необходимо указать хотя бы одну страну.
Таргетинг по демографическим данным:
use FacebookAds\Object\AdSet;
use FacebookAds\Object\Fields\AdSetFields;
use FacebookAds\Object\Values\AdSetBillingEventValues;
use FacebookAds\Object\Values\AdSetOptimizationGoalValues;
use FacebookAds\Object\Fields\TargetingFields;
use FacebookAds\Object\Targeting;
$adset = new AdSet(null, 'act_<AD_ACCOUNT_ID>');
$adset->setData(array(
AdSetFields::NAME => 'My AdSet',
AdSetFields::OPTIMIZATION_GOAL => AdSetOptimizationGoalValues::REACH,
AdSetFields::BILLING_EVENT => AdSetBillingEventValues::IMPRESSIONS,
AdSetFields::BID_AMOUNT => 2,
AdSetFields::DAILY_BUDGET => 1000,
AdSetFields::CAMPAIGN_ID => <CAMPAIGN_ID>,
AdSetFields::TARGETING => (new Targeting())->setData(array(
TargetingFields::GEO_LOCATIONS => array(
'countries' => array(
'US',
),
),
TargetingFields::RELATIONSHIP_STATUSES => array(2, 4),
TargetingFields::LIFE_EVENTS => array(
array(
'id' => 6003054185372,
'name' => 'Recently Moved',
),
),
TargetingFields::INDUSTRIES => array(
array(
'id' => 6009003307783,
'name' => 'Accounting and finance',
),
),
)),
));
$adset->create(array(
AdSet::STATUS_PARAM_NAME => AdSet::STATUS_ACTIVE,
));
from facebookads.adobjects.adset import AdSet
adset = AdSet(parent_id='act_<AD_ACCOUNT_ID>')
adset.update({
AdSet.Field.name: 'My AdSet',
AdSet.Field.optimization_goal: AdSet.OptimizationGoal.reach,
AdSet.Field.billing_event: AdSet.BillingEvent.impressions,
AdSet.Field.bid_amount: 150,
AdSet.Field.daily_budget: 2000,
AdSet.Field.campaign_id: <CAMPAIGN_ID>,
AdSet.Field.targeting: {
'geo_locations': {
'countries': ['US'],
},
'relationship_statuses': [2, 4],
'life_events': [
{
'id': 6003054185372,
'name': 'Recently Moved',
},
],
'industries': [
{
'id': 6009003307783,
'name': 'Accounting and finance',
},
],
},
})
adset.remote_create(params={
'status': AdSet.Status.active,
})
AdSet adSet = new AdAccount(act_<AD_ACCOUNT_ID>, context).createAdSet()
.setName("My AdSet")
.setOptimizationGoal(AdSet.EnumOptimizationGoal.VALUE_REACH)
.setBillingEvent(AdSet.EnumBillingEvent.VALUE_IMPRESSIONS)
.setBidAmount(2L)
.setDailyBudget(1000L)
.setCampaignId(<CAMPAIGN_ID>)
.setTargeting(
new Targeting()
.setFieldGeoLocations(
new TargetingGeoLocation()
.setFieldCountries(Arrays.asList("US"))
)
.setFieldIndustries(Arrays.asList(
new IDName()
.setFieldId("6009003307783")
.setFieldName("Accounting and finance")
))
.setFieldLifeEvents(Arrays.asList(
new IDName()
.setFieldId("6003054185372")
.setFieldName("Recently Moved")
))
.setFieldRelationshipStatuses(Arrays.asList(2L, 4L))
)
.setStatus(AdSet.EnumStatus.VALUE_ACTIVE)
.execute();
String ad_set_id = adSet.getId();
curl \
-F 'name=My AdSet' \
-F 'optimization_goal=REACH' \
-F 'billing_event=IMPRESSIONS' \
-F 'bid_amount=2' \
-F 'daily_budget=1000' \
-F 'campaign_id=<CAMPAIGN_ID>' \
-F 'targeting={
"geo_locations": {"countries":["US"]},
"industries": [{"id":6009003307783,"name":"Accounting and finance"}],
"life_events": [{"id":6003054185372,"name":"Recently Moved"}],
"relationship_statuses": [2,4]
}' \
-F 'status=ACTIVE' \
-F 'access_token=<ACCESS_TOKEN>' \
https://graph.facebook.com/v2.11/act_<AD_ACCOUNT_ID>/adsets
Имя | Описание |
---|---|
| Таргетинг по полу. |
| Минимальный возраст. Значение по умолчанию — 18. Если этот параметр используется, значение должно быть не меньше 13. Если в приложении настроены собственные возрастные ограничения, они будут применяться для объявлений с целями APP_INSTALL. Например, если для |
| Максимальный возраст. Если этот параметр используется, значение должно быть не больше 65. |
При поиске данных для этого типа таргетинга используйте Targeting Search API. В таргетинге по местоположению используются два параметра: geo_locations
— целевые местоположения, excluded_geo_locations
(необязательный) — исключенные регионы.
Используйте поле country_groups
параметра geo_locations
, чтобы настроить таргетинг по более крупным географическим регионам, таким как Европа или Северная Америка.
Using radius
can cause an error, code: 100, subcode 1815946, when targeting multiple locations. We recommend creating an ad for each location or not using radius
in your call.
Имя | Описание |
---|---|
| Таргетинг по странам. Массив кодов стран (подробнее). Пример: |
| Область, провинция или регион. Доступные значения см. здесь. Ограничение: 200. |
| Укажите |
| Почтовые индексы для таргетинга (см. статью Поиск для таргетинга). Ограничение: 50 000 (предыдущее ограничение — 2 500). Если указано больше 2 500 индексов, из них создается массив Чтобы считать массив |
| Укажите определенное место. Ограничение: 200. Пример: |
| Доступно для всех целей. Укажите точное место — широту и долготу или адрес центральной точки. Также задайте радиус зоны. Допустимые значения: от 0,63 до 50 миль или от 1 до 80 км. |
| Географическая широта места. |
| Географическая долгота места. |
| Название точки, расположенной по этому адресу. Для таргетинга по местоположению можно использовать только значения |
| Радиус вокруг точки с указанной широтой и долготой (если не задано значение |
| Необязательный параметр. Допустимые значения: |
| Адрес, соответствующий указанным широте и долготе, например 1601 Willow Rd, Menlo Park, CA. Рекомендуемый формат: номер дома и название улицы, город, область (штат, провинция), страна. Почтовый индекс не указывается. |
| Код рынка в формате DMA:501. Поддерживаются все расчетные рыночные территории (Designated Marketing Area, DMA). Коды DMA можно определить путем поиска по названиям DMA. Ограничение: 2 500. |
| Код избирательного округа. Список округов см. здесь. |
| Примечание. Начиная с версии 18.0 единственным возможным вариантом будет массив Для версий старше 18.0, если параметр
|
| Глобальные географические регионы и свободные экономические зоны. Задается в виде массива кодов групп стран.
Подробнее о группах стран см. здесь. Пример: |
curl -X POST \
-F 'name="My Reach Ad Set"' \
-F 'optimization_goal="REACH"' \
-F 'billing_event="IMPRESSIONS"' \
-F 'bid_amount=2' \
-F 'daily_budget=1000' \
-F 'campaign_id="<AD_CAMPAIGN_ID>"' \
-F 'targeting={
"geo_locations": {
"countries": [
"US"
]
},
"facebook_positions": [
"feed"
]
}' \
-F 'status="PAUSED"' \
-F 'promoted_object={
"page_id": "<PAGE_ID>"
}' \
-F 'access_token=<ACCESS_TOKEN>' \
https://graph.facebook.com/v21.0/act_<AD_ACCOUNT_ID>/adsets
curl -X POST \
-F 'name="My Reach Ad Set"' \
-F 'optimization_goal="REACH"' \
-F 'billing_event="IMPRESSIONS"' \
-F 'bid_amount=2' \
-F 'daily_budget=1000' \
-F 'campaign_id="<AD_CAMPAIGN_ID>"' \
-F 'targeting={
"excluded_geo_locations": {
"regions": [
{
"key": "3847"
}
]
},
"geo_locations": {
"countries": [
"US"
]
},
"facebook_positions": [
"feed"
]
}' \
-F 'status="PAUSED"' \
-F 'promoted_object={
"page_id": "<PAGE_ID>"
}' \
-F 'access_token=<ACCESS_TOKEN>' \
https://graph.facebook.com/v21.0/act_<AD_ACCOUNT_ID>/adsets
use FacebookAds\Object\AdSet;
use FacebookAds\Object\Fields\AdSetFields;
use FacebookAds\Object\Values\AdSetBillingEventValues;
use FacebookAds\Object\Values\AdSetOptimizationGoalValues;
use FacebookAds\Object\Fields\TargetingFields;
use FacebookAds\Object\Targeting;
$adset = new AdSet(null, 'act_<AD_ACCOUNT_ID>');
$adset->setData(array(
AdSetFields::NAME => 'My AdSet',
AdSetFields::OPTIMIZATION_GOAL => AdSetOptimizationGoalValues::REACH,
AdSetFields::BILLING_EVENT => AdSetBillingEventValues::IMPRESSIONS,
AdSetFields::BID_AMOUNT => 2,
AdSetFields::DAILY_BUDGET => 1000,
AdSetFields::CAMPAIGN_ID => <CAMPAIGN_ID>,
AdSetFields::TARGETING => (new Targeting())->setData(array(
TargetingFields::GEO_LOCATIONS => array(
TargetingFields::ZIPS => array(
array(
'key' => 'US:94304',
),
array(
'key' => 'US:00501',
),
),
),
)),
));
$adset->create(array(
AdSet::STATUS_PARAM_NAME => AdSet::STATUS_ACTIVE,
));
from facebookads.adobjects.adset import AdSet
adset = AdSet(parent_id='act_<AD_ACCOUNT_ID>')
adset.update({
AdSet.Field.name: 'My AdSet',
AdSet.Field.optimization_goal: AdSet.OptimizationGoal.reach,
AdSet.Field.billing_event: AdSet.BillingEvent.impressions,
AdSet.Field.bid_amount: 150,
AdSet.Field.daily_budget: 2000,
AdSet.Field.campaign_id: <CAMPAIGN_ID>,
AdSet.Field.targeting: {
'geo_locations': {
'zips': [
{
'key': 'US:94304',
},
{
'key': 'US:00501',
},
],
},
},
})
adset.remote_create(params={
'status': AdSet.Status.active,
})
AdSet adSet = new AdAccount(act_<AD_ACCOUNT_ID>, context).createAdSet()
.setName("My AdSet")
.setOptimizationGoal(AdSet.EnumOptimizationGoal.VALUE_REACH)
.setBillingEvent(AdSet.EnumBillingEvent.VALUE_IMPRESSIONS)
.setBidAmount(2L)
.setDailyBudget(1000L)
.setCampaignId(<CAMPAIGN_ID>)
.setTargeting(
new Targeting()
.setFieldGeoLocations(
new TargetingGeoLocation()
.setFieldZips(Arrays.asList(
new TargetingGeoLocationZip()
.setFieldKey("US:94304")
,
new TargetingGeoLocationZip()
.setFieldKey("US:00501")
))
)
)
.setStatus(AdSet.EnumStatus.VALUE_ACTIVE)
.execute();
String ad_set_id = adSet.getId();
curl \
-F 'name=My AdSet' \
-F 'optimization_goal=REACH' \
-F 'billing_event=IMPRESSIONS' \
-F 'bid_amount=2' \
-F 'daily_budget=1000' \
-F 'campaign_id=<CAMPAIGN_ID>' \
-F 'targeting={"geo_locations":{"zips":[{"key":"US:94304"},{"key":"US:00501"}]}}' \
-F 'status=ACTIVE' \
-F 'access_token=<ACCESS_TOKEN>' \
https://graph.facebook.com/v2.11/act_<AD_ACCOUNT_ID>/adsets
В этом коде таргетинг настроен на:
use FacebookAds\Object\AdSet;
use FacebookAds\Object\Fields\AdSetFields;
use FacebookAds\Object\Values\AdSetBillingEventValues;
use FacebookAds\Object\Values\AdSetOptimizationGoalValues;
use FacebookAds\Object\Fields\TargetingFields;
use FacebookAds\Object\Targeting;
$adset = new AdSet(null, 'act_<AD_ACCOUNT_ID>');
$adset->setData(array(
AdSetFields::NAME => 'My AdSet',
AdSetFields::OPTIMIZATION_GOAL => AdSetOptimizationGoalValues::REACH,
AdSetFields::BILLING_EVENT => AdSetBillingEventValues::IMPRESSIONS,
AdSetFields::BID_AMOUNT => 2,
AdSetFields::DAILY_BUDGET => 1000,
AdSetFields::CAMPAIGN_ID => <CAMPAIGN_ID>,
AdSetFields::TARGETING => (new Targeting())->setData(array(
TargetingFields::GEO_LOCATIONS => array(
'custom_locations' => array(
array(
'address_string' => '1601 Willow Road, Menlo Park, CA',
'radius' => '5',
),
array(
'latitude' => '36',
'longitude' => '-121.0',
'radius' => '5',
'distance_unit' => 'kilometer',
),
),
'geo_markets' => array(
array(
'key' => 'DMA:501',
'name' => 'New York',
),
array(
'key' => 'DMA:543',
'name' => 'Springfield-Holyoke',
),
),
'location_types' => array('recent', 'home'),
),
)),
));
$adset->create(array(
AdSet::STATUS_PARAM_NAME => AdSet::STATUS_ACTIVE,
));
from facebookads.adobjects.adset import AdSet
adset = AdSet(parent_id='act_<AD_ACCOUNT_ID>')
adset.update({
AdSet.Field.name: 'My AdSet',
AdSet.Field.optimization_goal: AdSet.OptimizationGoal.reach,
AdSet.Field.billing_event: AdSet.BillingEvent.impressions,
AdSet.Field.bid_amount: 150,
AdSet.Field.daily_budget: 2000,
AdSet.Field.campaign_id: <CAMPAIGN_ID>,
AdSet.Field.targeting: {
'geo_locations': {
'custom_locations': [
{
'custom_type': 'multi_city',
'min_population': 500000,
'max_population': 1000000,
'country': 'BR',
},
{
'custom_type': 'multi_city',
'country_group': 'Europe',
},
],
'location_types': ['recent', 'home'],
},
},
})
adset.remote_create(params={
'status': AdSet.Status.active,
})
AdSet adSet = new AdAccount(act_<AD_ACCOUNT_ID>, context).createAdSet()
.setName("My AdSet")
.setOptimizationGoal(AdSet.EnumOptimizationGoal.VALUE_REACH)
.setBillingEvent(AdSet.EnumBillingEvent.VALUE_IMPRESSIONS)
.setBidAmount(2L)
.setDailyBudget(1000L)
.setCampaignId(<CAMPAIGN_ID>)
.setTargeting(
new Targeting()
.setFieldGeoLocations(
new TargetingGeoLocation()
.setFieldCustomLocations(Arrays.asList(
new TargetingGeoLocationCustomLocation()
.setFieldAddressString("1601 Willow Road, Menlo Park, CA")
.setFieldRadius((double) 5)
,
new TargetingGeoLocationCustomLocation()
.setFieldDistanceUnit("kilometer")
.setFieldLatitude((double) 36)
.setFieldLongitude((double) -121.0)
.setFieldRadius((double) 5)
))
.setFieldGeoMarkets(Arrays.asList(
new TargetingGeoLocationMarket()
.setFieldKey("DMA:501")
.setFieldName("New York")
,
new TargetingGeoLocationMarket()
.setFieldKey("DMA:543")
.setFieldName("Springfield-Holyoke")
))
.setFieldLocationTypes(Arrays.asList("recent", "home"))
)
)
.setStatus(AdSet.EnumStatus.VALUE_ACTIVE)
.execute();
String ad_set_id = adSet.getId();
curl \
-F 'name=My AdSet' \
-F 'optimization_goal=REACH' \
-F 'billing_event=IMPRESSIONS' \
-F 'bid_amount=2' \
-F 'daily_budget=1000' \
-F 'campaign_id=<CAMPAIGN_ID>' \
-F 'targeting={
"geo_locations": {
"custom_locations": [
{"address_string":"1601 Willow Road, Menlo Park, CA","radius":"5"},
{
"latitude": "36",
"longitude": "-121.0",
"radius": "5",
"distance_unit": "kilometer"
}
],
"geo_markets": [
{"key":"DMA:501","name":"New York"},
{"key":"DMA:543","name":"Springfield-Holyoke"}
],
"location_types": ["recent","home"]
}
}' \
-F 'status=ACTIVE' \
-F 'access_token=<ACCESS_TOKEN>' \
https://graph.facebook.com/v2.11/act_<AD_ACCOUNT_ID>/adsets
Предположим, нам нужно настроить таргетинг на пользователей мужского пола в возрасте 20–24 лет, находящихся в радиусе 10 миль от города Менло-Парк (Калифорния, США) либо проживающих в Техасе или Японии.
Получите код Японии:
use FacebookAds\Object\TargetingSearch;
use FacebookAds\Object\Search\TargetingSearchTypes;
$result = TargetingSearch::search(
TargetingSearchTypes::GEOLOCATION,
null,
'japan',
array(
'location_types' => array('country'),
));
from facebookads.adobjects.targetingsearch import TargetingSearch
params = {
'q': 'japan',
'type': 'adgeolocation',
'location_types': ['country'],
}
resp = TargetingSearch.search(params=params)
print(resp)
curl -G \
-d 'location_types=["country"]' \
-d 'type=adgeolocation' \
-d 'q=japan' \
-d 'access_token=<ACCESS_TOKEN>' \
https://graph.facebook.com/v2.11/search
Получите код Техаса:
use FacebookAds\Object\TargetingSearch;
use FacebookAds\Object\Search\TargetingSearchTypes;
$result = TargetingSearch::search(
TargetingSearchTypes::GEOLOCATION,
null,
'texas',
array(
'location_types' => array('region'),
));
from facebookads.adobjects.targetingsearch import TargetingSearch
params = {
'q': 'texas',
'type': 'adgeolocation',
'location_types': ['region'],
}
resp = TargetingSearch.search(params=params)
print(resp)
curl -G \
-d 'location_types=["region"]' \
-d 'type=adgeolocation' \
-d 'q=texas' \
-d 'access_token=<ACCESS_TOKEN>' \
https://graph.facebook.com/v2.11/search
Найдите код Менло-Парка:
use FacebookAds\Object\TargetingSearch;
use FacebookAds\Object\Search\TargetingSearchTypes;
$result = TargetingSearch::search(
TargetingSearchTypes::GEOLOCATION,
null,
'menlo',
array(
'location_types' => array('city'),
));
from facebookads.adobjects.targetingsearch import TargetingSearch
params = {
'q': 'menlo',
'type': 'adgeolocation',
'location_types': ['city'],
}
resp = TargetingSearch.search(params=params)
print(resp)
curl -G \
-d 'location_types=["city"]' \
-d 'type=adgeolocation' \
-d 'q=menlo' \
-d 'access_token=<ACCESS_TOKEN>' \
https://graph.facebook.com/v2.11/search
Укажите genders
и возраст (age_min
и age_max
).
Укажите коды страны, региона и города в параметрах таргетинга:
use FacebookAds\Object\AdSet;
use FacebookAds\Object\Fields\AdSetFields;
use FacebookAds\Object\Fields\TargetingFields;
use FacebookAds\Object\Targeting;
use FacebookAds\Object\Values\AdSetOptimizationGoalValues;
use FacebookAds\Object\Values\AdSetBillingEventValues;
$adset = new AdSet(null, 'act_<AD_ACCOUNT_ID>');
$adset->setData(array(
AdSetFields::NAME => 'My First AdSet',
AdSetFields::DAILY_BUDGET => 10000,
AdSetFields::BID_AMOUNT => 300,
AdSetFields::BILLING_EVENT => AdSetBillingEventValues::IMPRESSIONS,
AdSetFields::OPTIMIZATION_GOAL => AdSetOptimizationGoalValues::REACH,
AdSetFields::CAMPAIGN_ID => <CAMPAIGN_ID>,
AdSetFields::PROMOTED_OBJECT => array(
'page_id' => <PAGE_ID>,
),
AdSetFields::TARGETING => (new Targeting())->setData(array(
TargetingFields::GEO_LOCATIONS => array(
'countries' => array('JP'),
'regions' => array(array('key' => '3886')),
'cities' => array(
array(
'key' => '2420605',
'radius' => 10,
'distance_unit' => 'mile',
),
),
),
TargetingFields::GENDERS => array(1),
TargetingFields::AGE_MIN => 20,
TargetingFields::AGE_MAX => 24,
TargetingFields::PUBLISHER_PLATFORMS => array(
'facebook',
'audience_network',
),
TargetingFields::DEVICE_PLATFORMS => array('mobile'),
)),
));
$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='act_<AD_ACCOUNT_ID>')
adset.update({
AdSet.Field.name: 'My AdSet',
AdSet.Field.optimization_goal: AdSet.OptimizationGoal.reach,
AdSet.Field.billing_event: AdSet.BillingEvent.impressions,
AdSet.Field.bid_amount: 150,
AdSet.Field.daily_budget: 2000,
AdSet.Field.campaign_id: <CAMPAIGN_ID>,
AdSet.Field.promoted_object: {'page_id': <PAGE_ID>},
AdSet.Field.targeting: {
Targeting.Field.geo_locations: {
'countries': ['JP'],
'regions': [
{'key': '3886'},
],
'cities': [
{
'key': '2420605',
'radius': '10',
'distance_unit': 'mile',
},
],
},
Targeting.Field.genders: [1],
Targeting.Field.age_min: 20,
Targeting.Field.age_max: 24,
Targeting.Field.publisher_platforms: ['facebook', 'audience_network'],
Targeting.Field.device_platforms: ['mobile'],
},
})
adset.remote_create(params={
'status': AdSet.Status.active,
})
AdSet adSet = new AdAccount(act_<AD_ACCOUNT_ID>, context).createAdSet()
.setName("My First AdSet")
.setDailyBudget(10000L)
.setBidAmount(300L)
.setBillingEvent(AdSet.EnumBillingEvent.VALUE_IMPRESSIONS)
.setOptimizationGoal(AdSet.EnumOptimizationGoal.VALUE_REACH)
.setCampaignId(<CAMPAIGN_ID>)
.setPromotedObject("{\"page_id\":\"" + <PAGE_ID> + "\"}")
.setTargeting(
new Targeting()
.setFieldAgeMax(24L)
.setFieldAgeMin(20L)
.setFieldDevicePlatforms(Arrays.asList(Targeting.EnumDevicePlatforms.VALUE_MOBILE))
.setFieldGenders(Arrays.asList(1L))
.setFieldGeoLocations(
new TargetingGeoLocation()
.setFieldCities(Arrays.asList(
new TargetingGeoLocationCity()
.setFieldDistanceUnit("mile")
.setFieldKey("2420605")
.setFieldRadius(10L)
))
.setFieldCountries(Arrays.asList("JP"))
.setFieldRegions(Arrays.asList(
new TargetingGeoLocationRegion()
.setFieldKey("3886")
))
)
.setFieldPublisherPlatforms(Arrays.asList("facebook", "audience_network"))
)
.setStatus(AdSet.EnumStatus.VALUE_PAUSED)
.execute();
String ad_set_id = adSet.getId();
curl \
-F 'name=My First AdSet' \
-F 'daily_budget=10000' \
-F 'bid_amount=300' \
-F 'billing_event=IMPRESSIONS' \
-F 'optimization_goal=REACH' \
-F 'campaign_id=<CAMPAIGN_ID>' \
-F 'promoted_object={"page_id":"<PAGE_ID>"}' \
-F 'targeting={
"age_max": 24,
"age_min": 20,
"device_platforms": ["mobile"],
"genders": [1],
"geo_locations": {
"countries": ["JP"],
"regions": [{"key":"3886"}],
"cities": [
{
"key": "2420605",
"radius": 10,
"distance_unit": "mile"
}
]
},
"publisher_platforms": ["facebook","audience_network"]
}' \
-F 'status=PAUSED' \
-F 'access_token=<ACCESS_TOKEN>' \
https://graph.facebook.com/v2.11/act_<AD_ACCOUNT_ID>/adsets
Укажите для параметра custom_type
значение 'multi_city'
и задайте country
или country_group
, как описано выше. Также можно использовать перечисленные ниже необязательные параметры.
Имя | Описание |
---|---|
| Минимальная численность населения целевых городов. |
| Максимальная численность населения целевых городов. |
use FacebookAds\Object\AdSet;
use FacebookAds\Object\Fields\AdSetFields;
use FacebookAds\Object\Values\AdSetBillingEventValues;
use FacebookAds\Object\Values\AdSetOptimizationGoalValues;
use FacebookAds\Object\Fields\TargetingFields;
use FacebookAds\Object\Targeting;
$adset = new AdSet();
$adset->setParentId('act_<AD_ACCOUNT_ID>');
$adset->setData(array(
AdSetFields::NAME => 'My AdSet',
AdSetFields::OPTIMIZATION_GOAL => AdSetOptimizationGoalValues::REACH,
AdSetFields::BILLING_EVENT => AdSetBillingEventValues::IMPRESSIONS,
AdSetFields::BID_AMOUNT => 2,
AdSetFields::DAILY_BUDGET => 1000,
AdSetFields::CAMPAIGN_ID => <CAMPAIGN_ID>,
AdSetFields::TARGETING => (new Targeting())->setData(array(
TargetingFields::GEO_LOCATIONS => array(
'custom_locations' => array(
array(
'custom_type' => 'multi_city',
'min_population' => 500000,
'max_population' => 1000000,
'country' => 'BR',
),
array(
'custom_type' => 'multi_city',
'country_group' => 'Europe',
),
),
'location_types' => array('recent', 'home'),
),
)),
));
$adset->create(array(
AdSet::STATUS_PARAM_NAME => AdSet::STATUS_ACTIVE,
));
from facebookads.adobjects.adaccount import AdAccount
from facebookads.adobjects.adset import AdSet
ad_account = AdAccount(fbid='act_<AD_ACCOUNT_ID>')
params = {
AdSet.Field.name: 'My AdSet',
AdSet.Field.optimization_goal: AdSet.OptimizationGoal.reach,
AdSet.Field.billing_event: AdSet.BillingEvent.impressions,
AdSet.Field.bid_amount: 150,
AdSet.Field.daily_budget: 2000,
AdSet.Field.campaign_id: <CAMPAIGN_ID>,
AdSet.Field.targeting: {
'geo_locations': {
'custom_locations': [
{
'custom_type': 'multi_city',
'min_population': 500000,
'max_population': 1000000,
'country': 'BR',
},
{
'custom_type': 'multi_city',
'country_group': 'Europe',
},
],
'location_types': ['recent', 'home'],
},
},
AdSet.Field.status: AdSet.Status.active,
}
adset = ad_account.create_ad_set(params=params)
AdSet adSet = new AdAccount(act_<AD_ACCOUNT_ID>, context).createAdSet()
.setName("My First AdSet")
.setDailyBudget(10000L)
.setBidAmount(300L)
.setBillingEvent(AdSet.EnumBillingEvent.VALUE_IMPRESSIONS)
.setOptimizationGoal(AdSet.EnumOptimizationGoal.VALUE_REACH)
.setCampaignId(<CAMPAIGN_ID>)
.setPromotedObject("{\"page_id\":\"" + <PAGE_ID> + "\"}")
.setTargeting(
new Targeting()
.setFieldAgeMax(24L)
.setFieldAgeMin(20L)
.setFieldDevicePlatforms(Arrays.asList(Targeting.EnumDevicePlatforms.VALUE_MOBILE))
.setFieldGenders(Arrays.asList(1L))
.setFieldGeoLocations(
new TargetingGeoLocation()
.setFieldCustomLocations(Arrays.asList(
new TargetingGeoLocationCustomLocation()
.setFieldCountry("BR")
.setFieldCustomType("multi_city")
.setFieldMaxPopulation(1000000L)
.setFieldMinPopulation(500000L)
,
new TargetingGeoLocationCustomLocation()
.setFieldCountryGroup("Asia")
.setFieldCustomType("multi_city")
))
.setFieldLocationTypes(Arrays.asList("recent", "home"))
)
.setFieldPublisherPlatforms(Arrays.asList("facebook", "audience_network"))
)
.setStatus(AdSet.EnumStatus.VALUE_PAUSED)
.execute();
String ad_set_id = adSet.getId();
curl \
-F 'name=My AdSet' \
-F 'optimization_goal=REACH' \
-F 'billing_event=IMPRESSIONS' \
-F 'bid_amount=2' \
-F 'daily_budget=1000' \
-F 'campaign_id=<CAMPAIGN_ID>' \
-F 'targeting={
"geo_locations": {
"custom_locations": [
{
"custom_type": "multi_city",
"min_population": 500000,
"max_population": 1000000,
"country": "BR"
},
{"custom_type":"multi_city","country_group":"Europe"}
],
"location_types": ["recent","home"]
}
}' \
-F 'status=ACTIVE' \
-F 'access_token=<ACCESS_TOKEN>' \
https://graph.facebook.com/v2.11/act_<AD_ACCOUNT_ID>/adsets
Для таргетинга можно использовать интересы пользователей. Facebook определяет их на основании хроники, понравившихся Страниц, а также ключевых слов, связанных с используемыми Страницами и приложениями. Подробнее см. в статье Поиск для таргетинга.
Для таргетинга на людей, которые интересуются футболом, сначала выполните следующий запрос:
use FacebookAds\Object\TargetingSearch;
use FacebookAds\Object\Search\TargetingSearchTypes;
$result = TargetingSearch::search(
TargetingSearchTypes::INTEREST,
null,
'soccer');
from facebookads.adobjects.targetingsearch import TargetingSearch
params = {
'q': 'soccer',
'type': 'adinterest',
}
resp = TargetingSearch.search(params=params)
print(resp)
curl -G \
-d 'type=adinterest' \
-d 'q=soccer' \
-d 'access_token=<ACCESS_TOKEN>' \
https://graph.facebook.com/v2.11/search
Укажите этот интерес в параметрах таргетинга, используя поля name
и id
(здесь path
— путь к интересу в рекламных инструментах).
curl -X POST \
-F 'name="My First AdSet"' \
-F 'daily_budget=10000' \
-F 'bid_amount=300' \
-F 'billing_event="IMPRESSIONS"' \
-F 'optimization_goal="REACH"' \
-F 'campaign_id="<AD_CAMPAIGN_ID>"' \
-F 'promoted_object={
"page_id": "<PAGE_ID>"
}' \
-F 'targeting={
"facebook_positions": [
"feed"
],
"geo_locations": {
"countries": [
"US"
],
"regions": [
{
"key": "4081"
}
],
"cities": [
{
"key": 777934,
"radius": 10,
"distance_unit": "mile"
}
]
},
"genders": [
1
],
"age_max": 24,
"age_min": 20,
"publisher_platforms": [
"facebook",
"audience_network"
],
"device_platforms": [
"mobile"
],
"flexible_spec": [
{
"interests": [
{
"id": "<INTEREST_ID>",
"name": "<INTEREST_NAME>"
}
]
}
]
}' \
-F 'status="PAUSED"' \
-F 'access_token=<ACCESS_TOKEN>' \
https://graph.facebook.com/v21.0/act_<AD_ACCOUNT_ID>/adsets
Другой пример:
use FacebookAds\Object\AdSet;
use FacebookAds\Object\Fields\AdSetFields;
use FacebookAds\Object\Values\AdSetBillingEventValues;
use FacebookAds\Object\Values\AdSetOptimizationGoalValues;
use FacebookAds\Object\Fields\TargetingFields;
use FacebookAds\Object\Targeting;
$adset = new AdSet(null, 'act_<AD_ACCOUNT_ID>');
$adset->setData(array(
AdSetFields::NAME => 'My AdSet',
AdSetFields::OPTIMIZATION_GOAL => AdSetOptimizationGoalValues::REACH,
AdSetFields::BILLING_EVENT => AdSetBillingEventValues::IMPRESSIONS,
AdSetFields::BID_AMOUNT => 2,
AdSetFields::DAILY_BUDGET => 1000,
AdSetFields::CAMPAIGN_ID => <CAMPAIGN_ID>,
AdSetFields::TARGETING => (new Targeting())->setData(array(
TargetingFields::GEO_LOCATIONS => array(
'countries' => array(
'US',
),
),
TargetingFields::INTERESTS => array(
array(
'id' => 6003139266461,
'name' => 'Movies',
),
array(
'id' => 6003397425735,
'name' => 'Tennis',
),
array(
'id' => 6003659420716,
'name' => 'Cooking',
),
),
)),
));
$adset->create(array(
AdSet::STATUS_PARAM_NAME => AdSet::STATUS_ACTIVE,
));
from facebookads.adobjects.adset import AdSet
adset = AdSet(parent_id='act_<AD_ACCOUNT_ID>')
adset.update({
AdSet.Field.name: 'My AdSet',
AdSet.Field.optimization_goal: AdSet.OptimizationGoal.reach,
AdSet.Field.billing_event: AdSet.BillingEvent.impressions,
AdSet.Field.bid_amount: 150,
AdSet.Field.daily_budget: 2000,
AdSet.Field.campaign_id: <CAMPAIGN_ID>,
AdSet.Field.targeting: {
'geo_locations': {
'countries': ['US'],
},
'interests': [
{
'id': 6003139266461,
'name': 'Movies',
},
{
'id': 6003397425735,
'name': 'Tennis',
},
{
'id': 6003659420716,
'name': 'Cooking',
},
],
},
})
adset.remote_create(params={
'status': AdSet.Status.active,
})
AdSet adSet = new AdAccount(act_<AD_ACCOUNT_ID>, context).createAdSet()
.setName("My AdSet")
.setOptimizationGoal(AdSet.EnumOptimizationGoal.VALUE_REACH)
.setBillingEvent(AdSet.EnumBillingEvent.VALUE_IMPRESSIONS)
.setBidAmount(2L)
.setDailyBudget(1000L)
.setCampaignId(<CAMPAIGN_ID>)
.setTargeting(
new Targeting()
.setFieldGeoLocations(
new TargetingGeoLocation()
.setFieldCountries(Arrays.asList("US"))
)
.setFieldInterests(Arrays.asList(
new IDName()
.setFieldId("6003139266461")
.setFieldName("Movies")
,
new IDName()
.setFieldId("6003397425735")
.setFieldName("Tennis")
,
new IDName()
.setFieldId("6003659420716")
.setFieldName("Cooking")
))
)
.setStatus(AdSet.EnumStatus.VALUE_ACTIVE)
.execute();
String ad_set_id = adSet.getId();
curl \
-F 'name=My AdSet' \
-F 'optimization_goal=REACH' \
-F 'billing_event=IMPRESSIONS' \
-F 'bid_amount=2' \
-F 'daily_budget=1000' \
-F 'campaign_id=<CAMPAIGN_ID>' \
-F 'targeting={
"geo_locations": {"countries":["US"]},
"interests": [
{"id":6003139266461,"name":"Movies"},
{"id":6003397425735,"name":"Tennis"},
{"id":6003659420716,"name":"Cooking"}
]
}' \
-F 'status=ACTIVE' \
-F 'access_token=<ACCESS_TOKEN>' \
https://graph.facebook.com/v2.11/act_<AD_ACCOUNT_ID>/adsets
Имя | Описание |
---|---|
| Массив с полем id и необязательным полем name: |
Этот вид таргетинга основан на действиях в Интернете, устройствах, которыми пользуются люди, прошлых или планируемых покупках, а также путешествиях. Посмотреть доступные варианты (например, Frequent Travelers — часто путешествующие) можно с помощью Browse
. Подробнее см. в статье Поиск для таргетинга.
use FacebookAds\Object\TargetingSearch;
use FacebookAds\Object\Search\TargetingSearchTypes;
$result = TargetingSearch::search(
TargetingSearchTypes::TARGETING_CATEGORY,
'behaviors');
from facebookads.adobjects.targetingsearch import TargetingSearch
params = {
'type': 'adTargetingCategory',
'class': 'behaviors',
}
resp = TargetingSearch.search(params=params)
print(resp)
curl -G \
-d 'type=adTargetingCategory' \
-d 'class=behaviors' \
-d 'access_token=<ACCESS_TOKEN>' \
https://graph.facebook.com/v2.11/search
Укажите поведение в targeting_spec
:
use FacebookAds\Object\AdSet;
use FacebookAds\Object\Fields\AdSetFields;
use FacebookAds\Object\Fields\TargetingFields;
use FacebookAds\Object\Targeting;
use FacebookAds\Object\Values\AdSetOptimizationGoalValues;
use FacebookAds\Object\Values\AdSetBillingEventValues;
$adset = new AdSet(null, 'act_<AD_ACCOUNT_ID>');
$adset->setData(array(
AdSetFields::NAME => 'My First AdSet',
AdSetFields::DAILY_BUDGET => 10000,
AdSetFields::BID_AMOUNT => 300,
AdSetFields::BILLING_EVENT => AdSetBillingEventValues::IMPRESSIONS,
AdSetFields::OPTIMIZATION_GOAL => AdSetOptimizationGoalValues::REACH,
AdSetFields::CAMPAIGN_ID => <CAMPAIGN_ID>,
AdSetFields::PROMOTED_OBJECT => array(
'page_id' => <PAGE_ID>,
),
AdSetFields::TARGETING => (new Targeting())->setData(array(
TargetingFields::GEO_LOCATIONS => array(
'countries' => array('JP'),
'regions' => array(array('key' => '3886')),
'cities' => array(
array(
'key' => '2420605',
'radius' => 10,
'distance_unit' => 'mile',
),
),
),
TargetingFields::GENDERS => array(1),
TargetingFields::AGE_MIN => 20,
TargetingFields::AGE_MAX => 24,
TargetingFields::PUBLISHER_PLATFORMS => array(
'facebook',
'audience_network',
),
TargetingFields::DEVICE_PLATFORMS => array('mobile'),
TargetingFields::INTERESTS => array(
array(
'id' => 6003107902433,
'name' => 'Association football (Soccer)',
),
),
TargetingFields::BEHAVIORS => array(
array(
'id' => 6002714895372,
'name' => 'All frequent travelers',
),
),
)),
));
$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='act_<AD_ACCOUNT_ID>')
adset.update({
AdSet.Field.name: 'My AdSet',
AdSet.Field.optimization_goal: AdSet.OptimizationGoal.reach,
AdSet.Field.billing_event: AdSet.BillingEvent.impressions,
AdSet.Field.bid_amount: 150,
AdSet.Field.daily_budget: 2000,
AdSet.Field.campaign_id: <CAMPAIGN_ID>,
AdSet.Field.promoted_object: {'page_id': <PAGE_ID>},
AdSet.Field.targeting: {
Targeting.Field.geo_locations: {
'countries': ['JP'],
'regions': [
{'key': '3886'},
],
'cities': [
{
'key': '2420605',
'radius': '10',
'distance_unit': 'mile',
},
],
},
Targeting.Field.genders: [1],
Targeting.Field.age_min: 20,
Targeting.Field.age_max: 24,
Targeting.Field.publisher_platforms: ['facebook', 'audience_network'],
Targeting.Field.device_platforms: ['mobile'],
Targeting.Field.interests: [
{
'id': 6003107902433,
'name': 'Association football (Soccer)',
},
],
Targeting.Field.behaviors: [
{
'id': 6002714895372,
'name': 'All frequent travelers',
},
],
},
})
adset.remote_create(params={
'status': AdSet.Status.active,
})
AdSet adSet = new AdAccount(act_<AD_ACCOUNT_ID>, context).createAdSet()
.setName("My First AdSet")
.setDailyBudget(10000L)
.setBidAmount(300L)
.setBillingEvent(AdSet.EnumBillingEvent.VALUE_IMPRESSIONS)
.setOptimizationGoal(AdSet.EnumOptimizationGoal.VALUE_REACH)
.setCampaignId(<CAMPAIGN_ID>)
.setPromotedObject("{\"page_id\":\"" + <PAGE_ID> + "\"}")
.setTargeting(
new Targeting()
.setFieldAgeMax(24L)
.setFieldAgeMin(20L)
.setFieldBehaviors(Arrays.asList(
new IDName()
.setFieldId("6002714895372")
.setFieldName("All frequent travelers")
))
.setFieldDevicePlatforms(Arrays.asList(Targeting.EnumDevicePlatforms.VALUE_MOBILE))
.setFieldGenders(Arrays.asList(1L))
.setFieldGeoLocations(
new TargetingGeoLocation()
.setFieldCities(Arrays.asList(
new TargetingGeoLocationCity()
.setFieldDistanceUnit("mile")
.setFieldKey("2420605")
.setFieldRadius(10L)
))
.setFieldCountries(Arrays.asList("JP"))
.setFieldRegions(Arrays.asList(
new TargetingGeoLocationRegion()
.setFieldKey("3886")
))
)
.setFieldInterests(Arrays.asList(
new IDName()
.setFieldId("6003107902433")
.setFieldName("Association football (Soccer)")
))
.setFieldPublisherPlatforms(Arrays.asList("facebook", "audience_network"))
)
.setStatus(AdSet.EnumStatus.VALUE_PAUSED)
.execute();
String ad_set_id = adSet.getId();
curl \
-F 'name=My First AdSet' \
-F 'daily_budget=10000' \
-F 'bid_amount=300' \
-F 'billing_event=IMPRESSIONS' \
-F 'optimization_goal=REACH' \
-F 'campaign_id=<CAMPAIGN_ID>' \
-F 'promoted_object={"page_id":"<PAGE_ID>"}' \
-F 'targeting={
"age_max": 24,
"age_min": 20,
"behaviors": [{"id":6002714895372,"name":"All frequent travelers"}],
"device_platforms": ["mobile"],
"genders": [1],
"geo_locations": {
"countries": ["JP"],
"regions": [{"key":"3886"}],
"cities": [
{
"key": "2420605",
"radius": 10,
"distance_unit": "mile"
}
]
},
"interests": [{"id":6003107902433,"name":"Association football (Soccer)"}],
"publisher_platforms": ["facebook","audience_network"]
}' \
-F 'status=PAUSED' \
-F 'access_token=<ACCESS_TOKEN>' \
https://graph.facebook.com/v2.11/act_<AD_ACCOUNT_ID>/adsets
Другой пример:
curl -X POST \
-F 'name="My AdSet"' \
-F 'optimization_goal="REACH"' \
-F 'billing_event="IMPRESSIONS"' \
-F 'bid_amount=2' \
-F 'daily_budget=1000' \
-F 'campaign_id="<AD_CAMPAIGN_ID>"' \
-F 'targeting={
"facebook_positions": [
"feed"
],
"geo_locations": {
"countries": [
"US"
]
},
"behaviors": [
{
"id": 6007101597783,
"name": "Business Travelers"
},
{
"id": 6004386044572,
"name": "Android Owners (All)"
}
]
}' \
-F 'access_token=<ACCESS_TOKEN>' \
https://graph.facebook.com/v21.0/act_<AD_ACCOUNT_ID>/adsets
Имя | Описание |
---|---|
| Массив с полем id и необязательным полем name: |
Прочие виды таргетинга: