Facebook organizza le inserzioni in una struttura a tre livelli: campagna, gruppo di inserzioni e inserzione. Nell'API gli sviluppatori hanno accesso a un quarto livello, la creatività.
Questi oggetti contengono il tuo obiettivo pubblicitario e uno o più gruppi di inserzioni. Questo ti aiuta a ottimizzare e misurare i risultati per ogni obiettivo pubblicitario.
I gruppi di inserzioni hanno una o più inserzioni. Definisci budget e programmazione per ogni gruppo di inserzioni. Crea un gruppo di inserzioni per ogni pubblico di destinazione con la tua offerta; le inserzioni nell'insieme targetizzano lo stesso pubblico con la stessa offerta. Questo ti aiuta a controllare l'importo che spendi per ogni pubblico, a determinare quando il pubblico vedrà le tue inserzioni e a fornire metriche per ogni pubblico.
Contiene la creatività dell'inserzione. Crea più inserzioni in ogni gruppo di inserzioni per ottimizzare la pubblicazione delle inserzioni in base a immagini, link, video, testo o posizionamenti diversi.
Contiene solo gli elementi visivi dell'inserzione e non puoi modificarli una volta creati. Ogni account pubblicitario ha una libreria di creatività per memorizzare le creatività da riutilizzare nelle inserzioni.
Obiettivo | Programma | Budget | Offerte | Targetizzazione | Creatività | |
---|---|---|---|---|---|---|
Campagna | ✓ | |||||
Gruppo di inserzioni | ✓ | ✓ | ✓ | ✓ | ||
Inserzione | ✓ |
Mappatura tra il nome pubblico dell'oggetto e gli endpoint API:
Nome pubblico | Endpoint API |
---|---|
Campagna | /campaigns |
Gruppo di inserzioni | /adsets |
Inserzione | /ads |
Creatività | /adcreatives |
Una campagna è la struttura organizzativa di più alto livello all'interno di un account pubblicitario e dovrebbe rappresentare un singolo obiettivo per un inserzionista, ad esempio promuovere l'interazione con un post della Pagina. Impostare l'obiettivo della campagna impone la convalida di tutte le inserzioni aggiunte a quella campagna per assicurarsi che abbiano anch'esse l'obiettivo corretto.
In Gestione inserzioni, mostriamo tutte le campagne attive e in pausa all'interno di un account pubblicitario.
Per leggere le campagne associate a un account specifico, fai una richiesta al collegamento dell'account pubblicitario che stai usando. Per impostazione predefinita restituiamo solo le campagne il cui stato è ACTIVE
o PAUSED
, quindi devi specificare altri stati se necessario:
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
Mostriamo anche alcuni insight di alto livello, tra cui impression, clic e l'importo speso. Puoi recuperare questi dati chiamando il seguente endpoint, specificando opzionalmente l'ora di inizio e/o di fine:
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
Gli obiettivi sono azioni che vuoi che le persone facciano quando vedono la tua inserzione. Devi specificare l'obiettivo scelto durante la creazione della campagna.
Impostare esplicitamente l'obiettivo ha i seguenti vantaggi:
La chiamata API minima necessaria per creare una campagna è:
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
I gruppi di inserzioni vengono usati per configurare il budget e il periodo durante il quale devono essere pubblicate le inserzioni. Tutte le inserzioni contenute in un gruppo di inserzioni devono avere targetizzazione, budget, fatturazione, obiettivo di ottimizzazione e durata uguali.
curl -X POST \
-F 'name="My First AdSet"' \
-F 'lifetime_budget=20000' \
-F 'start_time="2024-11-28T07:02:35-0800"' \
-F 'end_time="2024-12-05T07:02:35-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
Puoi elencare tutti i gruppi di inserzioni all'interno di una campagna facendo una richiesta al seguente percorso, specificando i campi e gli stati desiderati:
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 oggetto pubblicitario contiene tutte le informazioni necessarie per mostrare un'inserzione su Facebook, compresa la creatività.
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
Per vedere un'anteprima della tua inserzione, consulta la nostra guida.
Infine, se vuoi elencare tutte le inserzioni di un gruppo di inserzioni, puoi fare una richiesta al seguente percorso, specificando i campi che desideri recuperare:
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
Potresti scoprire che il numero totale di inserzioni è superiore al numero che desideri mostrare su una singola pagina. In questo caso, dovresti specificare il campo limit
come numero di elementi che desideri recuperare e poi paginare attraverso gli elementi rimanenti.
La paginazione viene eseguita utilizzando i cursori restituiti come parte della risposta:
"paging": { "previous" : "https://graph.facebook.com/...", "next": "https://graph.facebook.com/...", "cursors": { "before": "NjAxNjc3NTU1ODMyNw==", "after": "NjAxMTc0NTU2MjcyNw==" }
Se ci sono altre pagine da recuperare, la risposta include i campi previous
e next
ed è possibile chiamare questi URL per recuperare queste pagine di dati. Maggiori informazioni sulla paginazione basata sul cursore.