Determina la forma en que se usa tu presupuesto de anuncios a lo largo del tiempo. Proporciona competencia uniforme en la subasta de anuncios de Facebook entre todos los anunciantes cada día y asigna de forma automática presupuestos a diferentes anuncios. La frecuencia funciona de la misma manera en el caso de los anuncios creados con la API y de las herramientas de Facebook. Consulta Servicio de ayuda para anunciantes, entrega y frecuencia.
Puedes configurar tres opciones de frecuencia en pacing_type
al crear o actualizar un conjunto de anuncios. Con la frecuencia estándar, introducimos tu anuncio en cada subasta pertinente y ajustamos tu puja a lo largo de un día para propiciar una entrega uniforme y óptima en función de tu objetivo y presupuesto. Esta es la frecuencia predeterminada.
Para restablecer la frecuencia predeterminada:
use FacebookAds\Object\AdSet;
use FacebookAds\Object\Fields\AdSetFields;
$adset = new AdSet(<AD_SET_ID>);
$adset->{AdSetFields::PACING_TYPE} = array('standard');
$adset->update();
from facebookads.adobjects.adset import AdSet
adset = AdSet(fbid=<AD_SET_ID>, parent_id='act_<AD_ACCOUNT_ID>')
adset.update({
AdSet.Field.pacing_type: ['standard'],
})
adset.remote_update()
new AdSet(<AD_SET_ID>, context).update()
.setPacingType("[\"standard\"]")
.execute();
curl \
-F 'pacing_type=["standard"]' \
-F 'access_token=<ACCESS_TOKEN>' \
https://graph.facebook.com/v2.11/<AD_SET_ID>
La entrega acelerada elimina todos los ajustes de frecuencia de tu puja. Introducimos tu anuncio en todas las subastas pertinentes en su puja máxima total. Puedes lograr la máxima entrega con un costo y presupuesto especificados. Eso proporciona una entrega irregular a lo largo del día; el presupuesto de tu conjunto de anuncios podría agotarse antes del final del día. Para crear un conjunto de anuncios con entrega acelerada:
use FacebookAds\Object\AdSet;
use FacebookAds\Object\Fields\AdSetFields;
use FacebookAds\Object\Fields\TargetingFields;
use FacebookAds\Object\Values\AdSetBillingEventValues;
use FacebookAds\Object\Targeting;
use FacebookAds\Object\Values\AdSetOptimizationGoalValues;
$adset = new AdSet(null, 'act_<AD_ACCOUNT_ID>');
$adset->setData(array(
AdSetFields::NAME => 'Ad Set without pacing',
AdSetFields::OPTIMIZATION_GOAL => AdSetOptimizationGoalValues::REACH,
AdSetFields::BILLING_EVENT => AdSetBillingEventValues::IMPRESSIONS,
AdSetFields::PACING_TYPE => array('no_pacing'),
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'),
),
)),
));
$adset->create();
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: 'Ad Set without pacing',
AdSet.Field.optimization_goal: AdSet.OptimizationGoal.reach,
AdSet.Field.billing_event: AdSet.BillingEvent.impressions,
AdSet.Field.pacing_type: ['no_pacing'],
AdSet.Field.bid_amount: 2,
AdSet.Field.daily_budget: 1000,
AdSet.Field.campaign_id: <CAMPAIGN_ID>,
AdSet.Field.targeting: {
Targeting.Field.geo_locations: {
'countries': ['US'],
},
},
})
adset.remote_create()
AdSet adSet = new AdAccount(act_<AD_ACCOUNT_ID>, context).createAdSet()
.setName("Ad Set without pacing")
.setOptimizationGoal(AdSet.EnumOptimizationGoal.VALUE_REACH)
.setBillingEvent(AdSet.EnumBillingEvent.VALUE_IMPRESSIONS)
.setPacingType("[\"no_pacing\"]")
.setBidAmount(2L)
.setDailyBudget(1000L)
.setCampaignId(<CAMPAIGN_ID>)
.setTargeting(
new Targeting()
.setFieldGeoLocations(
new TargetingGeoLocation()
.setFieldCountries(Arrays.asList("US"))
)
)
.execute();
String ad_set_id = adSet.getId();
curl \
-F 'name=Ad Set without pacing' \
-F 'optimization_goal=REACH' \
-F 'billing_event=IMPRESSIONS' \
-F 'pacing_type=["no_pacing"]' \
-F 'bid_amount=2' \
-F 'daily_budget=1000' \
-F 'campaign_id=<CAMPAIGN_ID>' \
-F 'targeting={"geo_locations":{"countries":["US"]}}' \
-F 'access_token=<ACCESS_TOKEN>' \
https://graph.facebook.com/v2.11/act_<AD_ACCOUNT_ID>/adsets
Puedes inhabilitar la frecuencia para estas situaciones:
No debes usar esta opción en los siguientes casos:
Consulta Opciones de frecuencia de los conjuntos de anuncios, Referencia
También puedes configurar pacing_type en day_parting
y, así, obtener un mejor control de la programación de anuncios (consulta "Ad Scheduling"
).
Especifica días de la semana y horas del día en los que tu conjunto de anuncios funcione en adset_schedule
. Tu programación se aplica a todos los grupos de anuncios del conjunto de anuncios. Consulta Programación de anuncios, Blog. adset_schedule
es una matriz de objetos JSON. Cada objeto representa una programación para un día. Por ejemplo:
use FacebookAds\Object\AdSet;
use FacebookAds\Object\Fields\AdSetFields;
use FacebookAds\Object\Fields\TargetingFields;
use FacebookAds\Object\Values\AdSetBillingEventValues;
use FacebookAds\Object\Targeting;
use FacebookAds\Object\Values\AdSetOptimizationGoalValues;
$adset = new AdSet(null, 'act_<AD_ACCOUNT_ID>');
$adset->setData(array(
AdSetFields::NAME => 'Ad Set with scheduling',
AdSetFields::OPTIMIZATION_GOAL => AdSetOptimizationGoalValues::REACH,
AdSetFields::BILLING_EVENT => AdSetBillingEventValues::IMPRESSIONS,
AdSetFields::PACING_TYPE => array('day_parting'),
AdSetFields::LIFETIME_BUDGET => 100000,
AdSetFields::END_TIME
=> (new \DateTime("+1 week"))->format(\DateTime::ISO8601),
AdSetFields::ADSET_SCHEDULE => array(
array(
'start_minute' => 540,
'end_minute' => 720,
'days' => array(1, 2, 3, 4, 5),
),
),
AdSetFields::BID_AMOUNT => 2,
AdSetFields::CAMPAIGN_ID => <CAMPAIGN_ID>,
AdSetFields::TARGETING => (new Targeting())->setData(array(
TargetingFields::GEO_LOCATIONS => array(
'countries' => array('US'),
),
)),
));
$adset->create();
import time
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: 'Ad Set without pacing',
AdSet.Field.optimization_goal: AdSet.OptimizationGoal.reach,
AdSet.Field.billing_event: AdSet.BillingEvent.impressions,
AdSet.Field.pacing_type: ['day_parting'],
AdSet.Field.lifetime_budget: 100000,
AdSet.Field.end_time: int(time.time() + 7 * 24 * 3600),
AdSet.Field.adset_schedule: [
{
'start_minute': 540,
'end_minute': 720,
'days': [1, 2, 3, 4, 5],
},
],
AdSet.Field.bid_amount: 2,
AdSet.Field.campaign_id: <CAMPAIGN_ID>,
AdSet.Field.targeting: {
Targeting.Field.geo_locations: {
'countries': ['US'],
},
},
})
adset.remote_create()
AdSet adSet = new AdAccount(act_<AD_ACCOUNT_ID>, context).createAdSet()
.setName("Ad Set with scheduling")
.setOptimizationGoal(AdSet.EnumOptimizationGoal.VALUE_REACH)
.setBillingEvent(AdSet.EnumBillingEvent.VALUE_IMPRESSIONS)
.setPacingType("[\"day_parting\"]")
.setLifetimeBudget(100000L)
.setEndTime(end_time)
.setAdsetSchedule("[{\"start_minute\":\"540\",\"end_minute\":\"720\",\"days\":[\"1\",\"2\",\"3\",\"4\",\"5\"]}]")
.setBidAmount(2L)
.setCampaignId(<CAMPAIGN_ID>)
.setTargeting(
new Targeting()
.setFieldGeoLocations(
new TargetingGeoLocation()
.setFieldCountries(Arrays.asList("US"))
)
)
.execute();
String ad_set_id = adSet.getId();
curl \
-F 'name=Ad Set with scheduling' \
-F 'optimization_goal=REACH' \
-F 'billing_event=IMPRESSIONS' \
-F 'pacing_type=["day_parting"]' \
-F 'lifetime_budget=100000' \
-F 'end_time=2018-02-06T04:45:17+0000' \
-F 'adset_schedule=[
{
"start_minute": 540,
"end_minute": 720,
"days": [
1,
2,
3,
4,
5
]
}
]' \
-F 'bid_amount=2' \
-F 'campaign_id=<CAMPAIGN_ID>' \
-F 'targeting={"geo_locations":{"countries":["US"]}}' \
-F 'access_token=<ACCESS_TOKEN>' \
https://graph.facebook.com/v2.11/act_<AD_ACCOUNT_ID>/adsets
Para actualizar la programación de anuncios:
use FacebookAds\Object\AdSet;
use FacebookAds\Object\Fields\AdSetFields;
$adset = new AdSet(<AD_SET_ID>);
$adset->setData(array(
AdSetFields::DAILY_BUDGET => null,
AdSetFields::LIFETIME_BUDGET => 100000,
AdSetFields::END_TIME
=> (new \DateTime("+1 week"))->format(\DateTime::ISO8601),
AdSetFields::PACING_TYPE => array('day_parting'),
AdSetFields::ADSET_SCHEDULE => array(
array(
'start_minute' => 720,
'end_minute' => 840,
'days' => array(1, 2, 3, 4, 5),
),
),
));
$adset->update();
import time
from facebookads.adobjects.adset import AdSet
adset = AdSet(fbid=<AD_SET_ID>, parent_id='act_<AD_ACCOUNT_ID>')
adset.update({
AdSet.Field.daily_budget: None,
AdSet.Field.lifetime_budget: 100000,
AdSet.Field.end_time: int(time.time() + 7 * 24 * 3600),
AdSet.Field.pacing_type: ['day_parting'],
AdSet.Field.adset_schedule: [
{
'start_minute': 540,
'end_minute': 720,
'days': [1, 2, 3, 4, 5],
},
],
})
adset.remote_update()
curl \
-F 'lifetime_budget=100000' \
-F 'end_time=2016-07-21T20:42:08+0000' \
-F 'pacing_type=["day_parting"]' \
-F 'adset_schedule=[
{
"start_minute": 720,
"end_minute": 840,
"days": [
1,
2,
3,
4,
5
]
}
]' \
-F 'access_token=<ACCESS_TOKEN>' \
https://graph.facebook.com/v2.7/<AD_SET_ID>
Para desactivar la programación de anuncios:
use FacebookAds\Object\AdSet;
use FacebookAds\Object\Fields\AdSetFields;
$adset = new AdSet(<AD_SET_ID>);
$adset->setData(array(
AdSetFields::PACING_TYPE => array('standard'),
AdSetFields::ADSET_SCHEDULE => array(),
));
$adset->update();
from facebookads.adobjects.adset import AdSet
adset = AdSet(fbid=<AD_SET_ID>, parent_id='act_<AD_ACCOUNT_ID>')
adset.update({
AdSet.Field.pacing_type: ['standard'],
AdSet.Field.adset_schedule: [],
})
adset.remote_update()
new AdSet(<AD_SET_ID>, context).update()
.setPacingType("[\"standard\"]")
.setAdsetSchedule("[]")
.execute();
curl \
-F 'pacing_type=["standard"]' \
-F 'adset_schedule=[]' \
-F 'access_token=<ACCESS_TOKEN>' \
https://graph.facebook.com/v2.11/<AD_SET_ID>
Para obtener información sobre programación de anuncios:
curl -X GET \
-d 'fields="adset_schedule"' \
-d 'access_token=<ACCESS_TOKEN>' \
https://graph.facebook.com/v21.0/<AD_SET_ID>/
Cada matriz debe contar con lo siguiente:
Nombre del campo | Descripción |
---|---|
Tipo: entero | Minuto del día basado en 0. Momento en que la programación se inicia. |
Tipo: entero | Minuto del día basado en 0. Momento en que la programación termina. |
Tipo: matriz de enteros | Días de actividad de la programación. Valores válidos: 0 a 6, donde "0" representa el domingo, "1" el lunes y "6" el sábado. |
Opcional | Si el valor es "user", representa la zona horaria del usuario. Si el valor es "advertizer", representa la zona horaria de la cuenta. |
start_minute
y end_minute
deben estar bien configurados y debe haber al menos una hora de diferencia entre ellos. Para alcance y frecuencia, las partes del día deben ser de al menos 4 horas. Por ejemplo:
[{'start_minute':540,'end_minute':720,'days':[1,2,3,4,5]},{'start_minute':180, 'end_minute':360,'days':[0,6]}]
Se aplican las siguientes restricciones:
For under-delivery, your bid price might be too low or your audience too narrow. Your bid should be in the suggested bid range so your ads win auctions and get placement. With competitive target audiences, you may need to bid above the suggested bid range. Or your targeting is too narrow.
If we over-deliver your ad, you might have a very large audience that quickly exhausts budget. If you believe that is not the case, contact us at Facebook Advertising Help.
If you're using campaign budget optimization, budget pacing is at the campaign level. Otherwise, budget pacing is done at the ad set level.
When you change budget, our systems have to learn the new optimal bid which takes time. During this time, your bids are not optimal and we can't maximize ROI. Therefore you should not change bid and budget frequently.
If you have to change these parameters, limit yourself to 2-3 times a day and only the early part of the day. This impacts pacing less than changing it often or later in a day.
Facebook optimizes pacing within a day, so this is not a problem.
Pacing may change. Since you switch from view-based billing to click-based billing, we re-adjust pacing.
Max bid is bid_amount
of an ad set you specify regardless of its optimization goal.
With ad scheduling, you schedule hours in a day and days in a week when your ads display to a target audience. You can have your ads display when they are most relevant to an audience. Pacing takes this schedule into account to calculate your effective, optimal bid. See ad scheduling.
From April 9th, 2014, we change the way budgets are spent on partial days at the beginning and end of ad set schedules. For ad sets with daily budgets, we adjust the first and last day spend based on the number of hours we have to deliver ads on those days. For example, if your ad set starts at 6PM, we try to deliver only 25% of daily budget between 6 PM and midnight.