Facebook organise les publicités dans une structure à trois niveaux : campagne, ensemble de publicités et publicité. Dans l’API, les développeur·ses ont accès à un quatrième niveau, celui du contenu publicitaire.
Ces objets contiennent votre objectif publicitaire et un ou plusieurs ensembles de publicités. Ils vous aident à optimiser et à mesurer les résultats de chaque objectif publicitaire.
Les ensembles de publicités contiennent une ou plusieurs publicités. Vous définissez le budget et la planification pour chacun d’eux. Créez un ensemble de publicités pour chaque audience cible avec votre enchère, les publicités de l’ensemble ciblant la même audience avec la même enchère. Cela vous aide à contrôler le montant que vous dépensez pour chaque audience, à déterminer quand l’audience verra vos publicités et à afficher les indicateurs propres à chaque audience.
Contient un contenu publicitaire. Créez plusieurs publicités dans chaque ensemble de publicités pour optimiser leur diffusion en fonction d’images, de liens, de vidéos, de textes ou de placements différents.
Contient uniquement les éléments visuels de la publicité et vous ne pouvez pas les modifier une fois qu’ils ont été créés. Chaque compte publicitaire est associé à une bibliothèque de contenus publicitaires qui stocke les contenus à réutiliser dans les publicités.
Objectif | Calendrier | Budget | Enchères | Ciblage | Contenu publicitaire | |
---|---|---|---|---|---|---|
Campagne | ✓ | |||||
Ensemble de publicités | ✓ | ✓ | ✓ | ✓ | ||
Publicité | ✓ |
Mappage entre le nom public de l’objet et les points de terminaison de l’API :
Nom public | Point de terminaison de l’API |
---|---|
Campagne | /campaigns |
Ensemble de publicités | /adsets |
Publicité | /ads |
Contenu publicitaire | /adcreatives |
Une campagne est le niveau le plus élevé de la structure organisationnelle d’un compte publicitaire. Elle doit avoir un objectif unique pour un annonceur, par exemple, pour générer des interactions avec les publications de la Page. Définir l’objectif de la campagne nécessite de valider les publicités ajoutées à celle-ci afin de s’assurer qu’elles sont également associées au bon objectif.
Dans le Gestionnaire de publicités, toutes les campagnes actives et mises en pause d’un compte publicitaire sont affichées.
Pour accéder aux campagnes associées à un compte spécifique, vous devez envoyer une requête à la connexion du compte publicitaire que vous utilisez. Par défaut, nous ne retournons que les campagnes dont le statut est ACTIVE
ou PAUSED
. Vous devez donc préciser d’autres statuts le cas échéant :
curl -X GET \
-d 'effective_status=[
"ACTIVE",
"PAUSED"
]' \
-d 'fields="name,objective"' \
-d 'access_token=<ACCESS_TOKEN>' \
https://graph.facebook.com/v21.0/act_<AD_ACCOUNT_ID>/campaigns
Nous affichons également des insights détaillés, y compris les impressions, les clics et le montant dépensé. Vous pouvez les récupérer en appelant le point de terminaison suivant (en précisant de manière facultative l’heure de début et/ou de fin) :
use FacebookAds\Object\Campaign;
$campaign = new Campaign(<CAMPAIGN_ID>);
$insights = $campaign->getInsights(array(
AdsInsightsFields::IMPRESSIONS,
AdsInsightsFields::INLINE_LINK_CLICKS,
AdsInsightsFields::SPEND,
), array(
'end_time' => (new \DateTime('now'))->getTimestamp(),
));
from facebookads.adobjects.campaign import Campaign
from facebookads.adobjects.adsinsights import AdsInsights
import time
fields = [
AdsInsights.Field.impressions,
AdsInsights.Field.inline_link_clicks,
AdsInsights.Field.spend,
]
params = {
'end_time': int(time.time()),
}
campaign = Campaign(<CAMPAIGN_ID>)
insights = campaign.get_insights(fields=fields, params=params)
APINodeList<AdsInsights> adsInsightss = new Campaign(<CAMPAIGN_ID>, context).getInsights()
.setParam("end_time", end_time)
.requestField("impressions")
.requestField("inline_link_clicks")
.requestField("spend")
.execute();
curl -G \
-d 'end_time=1517287567' \
-d 'fields=impressions,inline_link_clicks,spend' \
-d 'access_token=<ACCESS_TOKEN>' \
https://graph.facebook.com/v2.11/<CAMPAIGN_ID>/insights
Les objectifs sont les actions que vous voulez que les personnes réalisent quand elles voient votre publicité. Vous devez les spécifier au moment de la création de votre campagne.
Une définition explicite de l’objectif présente les avantages suivants :
L’appel d’API minimum nécessaire pour créer une campagne est le suivant :
curl -X POST \
-F 'name="My First Campaign"' \
-F 'objective="OUTCOME_ENGAGEMENT"' \
-F 'status="PAUSED"' \
-F 'special_ad_categories=[]' \
-F 'access_token=<ACCESS_TOKEN>' \
https://graph.facebook.com/v21.0/act_<AD_ACCOUNT_ID>/campaigns
Les ensembles de publicités sont des groupes de publicités. Ils permettent de configurer le budget et la période de diffusion des publicités. Toutes les publicités contenues dans un ensemble de publicités doivent être associées aux mêmes ciblage, budget, facturation, objectif d’optimisation et durée.
curl -X POST \
-F 'name="My First AdSet"' \
-F 'lifetime_budget=20000' \
-F 'start_time="2024-11-28T07:08:46-0800"' \
-F 'end_time="2024-12-05T07:08:46-0800"' \
-F 'campaign_id="<AD_CAMPAIGN_ID>"' \
-F 'bid_amount=500' \
-F 'billing_event="IMPRESSIONS"' \
-F 'optimization_goal="POST_ENGAGEMENT"' \
-F 'targeting={
"age_min": 20,
"age_max": 24,
"behaviors": [
{
"id": 6002714895372,
"name": "All travelers"
}
],
"genders": [
1
],
"geo_locations": {
"countries": [
"US"
],
"regions": [
{
"key": "4081"
}
],
"cities": [
{
"key": "777934",
"radius": 10,
"distance_unit": "mile"
}
]
},
"interests": [
{
"id": "<INTEREST_ID>",
"name": "<INTEREST_NAME>"
}
],
"life_events": [
{
"id": 6002714398172,
"name": "Newlywed (1 year)"
}
],
"facebook_positions": [
"feed"
],
"publisher_platforms": [
"facebook",
"audience_network"
]
}' \
-F 'status="PAUSED"' \
-F 'access_token=<ACCESS_TOKEN>' \
https://graph.facebook.com/v21.0/act_<AD_ACCOUNT_ID>/adsets
Vous pouvez lister tous les ensembles de publicités d’une campagne en envoyant une requête au chemin suivant, en précisant les champs et les statuts que vous souhaitez :
curl -X GET \
-d 'fields="name,start_time,end_time,daily_budget,lifetime_budget"' \
-d 'access_token=<ACCESS_TOKEN>' \
https://graph.facebook.com/v21.0/<AD_CAMPAIGN_ID>/adsets
Un objet publicitaire contient toutes les informations nécessaires pour afficher une publicité sur Facebook, y compris le contenu publicitaire.
curl -X POST \
-F 'name="My Ad"' \
-F 'adset_id="<AD_SET_ID>"' \
-F 'creative={
"creative_id": "<CREATIVE_ID>"
}' \
-F 'status="PAUSED"' \
-F 'access_token=<ACCESS_TOKEN>' \
https://graph.facebook.com/v21.0/act_<AD_ACCOUNT_ID>/ads
Pour prévisualiser votre publicité, consultez notre guide.
Enfin, si vous souhaitez répertorier toutes les publicités d’un ensemble de publicités, vous pouvez envoyer une requête au chemin suivant, en précisant les champs que vous souhaitez récupérer :
use FacebookAds\Object\AdSet;
use FacebookAds\Object\Values\ArchivableCrudObjectEffectiveStatuses;
use FacebookAds\Object\Fields\AdFields;
$adset = new AdSet(<AD_SET_ID>);
$ads = $adset->getAds(array(
AdFields::NAME,
AdFields::CONFIGURED_STATUS,
AdFields::EFFECTIVE_STATUS,
AdFields::CREATIVE,
), array(
AdFields::EFFECTIVE_STATUS => array(
ArchivableCrudObjectEffectiveStatuses::ACTIVE,
ArchivableCrudObjectEffectiveStatuses::PAUSED,
ArchivableCrudObjectEffectiveStatuses::PENDING_REVIEW,
ArchivableCrudObjectEffectiveStatuses::PREAPPROVED,
),
));
from facebookads.adobjects.adset import AdSet
from facebookads.adobjects.ad import Ad
fields = [
Ad.Field.name,
Ad.Field.configured_status,
Ad.Field.effective_status,
Ad.Field.creative,
]
params = {
Ad.Field.effective_status: [
'ACTIVE',
'PAUSED',
'PENDING_REVIEW',
'PREAPPROVED',
],
}
ad_set = AdSet(<AD_SET_ID>)
ads = ad_set.get_ads(fields=fields, params=params)
APINodeList<Ad> ads = new AdSet(<AD_SET_ID>, context).getAds()
.setEffectiveStatus("[\"ACTIVE\",\"PAUSED\",\"PENDING_REVIEW\",\"PREAPPROVED\"]")
.requestNameField()
.requestConfiguredStatusField()
.requestEffectiveStatusField()
.requestCreativeField()
.execute();
curl -G \
--data-urlencode 'effective_status=[
"ACTIVE",
"PAUSED",
"PENDING_REVIEW",
"PREAPPROVED"
]' \
-d 'fields=name,configured_status,effective_status,creative' \
-d 'access_token=<ACCESS_TOKEN>' \
https://graph.facebook.com/v2.11/<AD_SET_ID>/ads
Si le nombre total de publicités est supérieur au nombre que vous souhaitez afficher sur une seule page, attribuez au champ limit
la valeur correspondant au nombre d’éléments à récupérer, puis paginez les éléments restants.
La pagination s’effectue à l’aide des curseurs retournés dans le cadre de la réponse :
"paging": { "previous" : "https://graph.facebook.com/...", "next": "https://graph.facebook.com/...", "cursors": { "before": "NjAxNjc3NTU1ODMyNw==", "after": "NjAxMTc0NTU2MjcyNw==" }
S’il y a d’autres pages à récupérer, la réponse inclut les champs previous
et next
, et vous pouvez appeler ces URL pour récupérer ces pages de données. En savoir plus sur la pagination basée sur les curseurs.