Détermine la façon dont votre budget publicitaire est dépensé au fil du temps. Elle permet une concurrence uniforme pour tous les annonceurs, chaque jour, dans les enchères publicitaires Facebook et alloue automatiquement les budgets à différentes publicités. La fréquence fonctionne de la même manière pour les publicités créées à l’aide de l’API qu’avec les outils Facebook, consultez la page d’aide sur la diffusion et la fréquence des publicités.
Vous pouvez définir trois options de fréquence dans pacing_type
lorsque vous créez ou mettez à jour un ensemble de publicités. Avec la fréquence standard, nous intégrons votre publicité dans toutes les enchères pertinentes et ajustons votre offre durant la journée pour permettre une diffusion homogène et optimale par rapport à votre objectif et votre budget. Il s’agit de la fréquence par défaut.
Pour restaurer la fréquence par défaut :
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 diffusion accélérée élimine tous les ajustements de fréquence de votre enchère. Nous intégrons votre publicité, à son offre maximale, dans toutes les enchères admissibles. Vous pouvez obtenir une diffusion optimale avec un coût et un budget précis. Ceci entraîne une diffusion non homogène tout au long de la journée et le budget de votre ensemble de publicités peut s’épuiser avant la fin de la journée. Pour créer un ensemble de publicités à l’aide de la diffusion accélérée :
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
Vous pouvez désactiver la fréquence pour les scénarios ci-dessous :
Vous ne devez pas utiliser cette option lorsque :
Consultez la page Options de fréquence des ensembles de publicités : documentation de référence.
Vous pouvez également définir le type de fréquence sur day_parting
pour contrôler plus finement la planification des publicités. (Référez-vous à la section "Ad Scheduling"
.)
Indiquez les jours de la semaine et les heures de la journée auxquels votre ensemble de publicités est diffusé dans adset_schedule
. Votre calendrier s’applique à tous les groupes publicitaires de l’ensemble de publicités. Consultez le blog sur la planification des publicités. adset_schedule
est un ensemble d’objets JSON. Chaque objet représente le calendrier d’une journée. Par exemple :
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
Pour mettre à jour la planification des publicités :
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>
Pour désactiver la planification des publicités :
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>
Pour obtenir des informations sur la planification des publicités :
curl -X GET \
-d 'fields="adset_schedule"' \
-d 'access_token=<ACCESS_TOKEN>' \
https://graph.facebook.com/v21.0/<AD_SET_ID>/
Chaque ensemble doit comporter :
Nom du champ | Description |
---|---|
type : nombre entier | Minute de la journée à partir de 0. Lorsque le calendrier débute. |
type : nombre entier | Minute de la journée à partir de 0. Lorsque le calendrier prend fin. |
type : ensemble de nombres entiers | Jours actifs du calendrier. Valeurs valides : de 0 à 6, où 0 correspond à dimanche, 1 à lundi et 6 à samedi. |
Facultatif | Si la valeur est « utilisateur », il s’agit du fuseau horaire de celui ou celle qui consulte l’annonce. Si la valeur est « annonceur », il s’agit du fuseau horaire du compte. |
start_minute
et end_minute
doivent être à l’heure juste et espacés d’au moins une heure. Pour la couverture et la répétition, les parties de journée doivent être d’au moins quatre heures. Par exemple :
[{'start_minute':540,'end_minute':720,'days':[1,2,3,4,5]},{'start_minute':180, 'end_minute':360,'days':[0,6]}]
Tenez compte des restrictions suivantes :
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.