Facebook organiza los anuncios en una estructura de tres niveles: campaña, conjunto de anuncios y anuncio. En la API, los desarrolladores tienen acceso a un cuarto nivel que se denomina contenido.
Estos objetos contienen tu objetivo publicitario y uno o más conjuntos de anuncios. De esta manera, es posible optimizar y medir los resultados de los objetivos publicitarios.
Los conjuntos de anuncios tienen uno o más anuncios. Definirás el presupuesto y el horario de los conjuntos de anuncios. Crea un conjunto de anuncios para los públicos objetivo con tu puja. Los anuncios en el conjunto segmentan el mismo público con la misma puja. De esta manera, podrás controlar el dinero que gastas en cada público, determinar cuándo los públicos verán tus anuncios y proporcionar métricas de los públicos.
Proporciona el contenido del anuncio. Crear varios anuncios en cada conjunto de anuncios para optimizar la entrega de anuncios en función de imágenes, enlaces, videos, textos o ubicaciones diferentes.
Contiene solo los elementos visuales del anuncio, y no los puedes cambiar una vez que se crearon. Las cuentas de anuncios tienen una biblioteca de contenido que permite almacenar dicho contenido para volver a usarlo en los anuncios.
Objetivo | Calendario | Presupuesto | Pujas | Segmentación | Contenido | |
---|---|---|---|---|---|---|
Campaña | ✓ | |||||
Conjunto de anuncios | ✓ | ✓ | ✓ | ✓ | ||
Anuncio | ✓ |
Asignación entre los nombres públicos del objeto y los puntos de conexión de la API:
Nombre público | Punto de conexión de la API |
---|---|
Campaña | /campaigns |
Conjunto de anuncios | /conjuntos de anuncios |
Anuncio | /anuncios |
Contenido | /contenido del anuncio |
Una campaña es la estructura de nivel máximo organizacional de una cuenta publicitaria y deberá representar a un único anunciante, por ejemplo, para impulsar interacción con publicación de la página. Establecer el objetivo de la campaña impone la validación de los anuncios que se agregaron a esa campaña para asegurarse de que también tengan el objetivo correcto.
En el administrador de anuncios, mostramos todas las campañas activas y pausadas dentro de una cuenta de anuncios.
Para leer las campañas asociadas con una cuenta específica, es necesario que realices una solicitud a la conexión de la cuenta publicitaria que se utiliza. Por defecto, solo se devuelven campañas cuyo estado es ACTIVE
o PAUSED
, por lo que, de ser necesario, debes especificar estados adicionales:
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
Además, mostramos algunas estadísticas de alto nivel, como impresiones, clics e importe gastado. Puedes recuperar estas estadísticas realizando una llamada al siguiente punto de conexión; de manera opcional, puedes especificar la fecha y hora de inicio y/o finalización:
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
Los objetivos son acciones que deseas que las personas realicen cuando ven tu anuncio. Debes especificar el objetivo elegido cuando creas la campaña.
Establecer el objetivo de manera explícita tiene los siguientes beneficios:
El llamado a la API mínimo necesario para crear una campaña es el siguiente:
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
Los conjuntos de anuncios son grupos de anuncios que se utilizan para configurar el presupuesto y el período en que deben publicarse los anuncios. Todos los anuncios que forman parte de un conjunto de anuncios deben tener una segmentación, un presupuesto, una facturación, un objetivo de optimización y una duración iguales.
curl -X POST \
-F 'name="My First AdSet"' \
-F 'lifetime_budget=20000' \
-F 'start_time="2024-11-28T06:56:06-0800"' \
-F 'end_time="2024-12-05T06:56:06-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
Puedes listar todos los conjuntos de anuncios dentro de una campaña si realizas una solicitud a la siguiente ruta, donde debes especificar los campos y estados que deseas:
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 objeto de anuncio contiene toda la información necesaria para mostrar un anuncio en Facebook, incluso el contenido.
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
Consulta nuestra guía para obtener una vista previa del anuncio.
Finalmente, si deseas listas todos los anuncios de un conjunto de anuncios, puedes realizar una solicitud a la siguiente ruta, donde debes especificar los campos que deseas recuperar:
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
Puede suceder que el número total de anuncios sea mayor que el número que deseas mostrar en una única página. En este caso, deberás configurar el campo limit
como el número de artículos que deseas recuperar y, luego, paginar los artículos restantes.
La paginación se realiza utilizando las cursores que se devuelven como parte de la respuesta:
"paging": { "previous" : "https://graph.facebook.com/...", "next": "https://graph.facebook.com/...", "cursors": { "before": "NjAxNjc3NTU1ODMyNw==", "after": "NjAxMTc0NTU2MjcyNw==" }
Si es necesario recuperar páginas adicionales, la respuesta incluye los campos previous
y next
, y se pueden llamar a estas URL para recuperar esas páginas de datos. Más información sobre paginación basada en el cursor.