En este documento se describen los distintos anuncios diseñados para generar instalaciones e interacciones de aplicaciones para ordenadores y móviles.
Debes utilizar este anuncio para dirigir a las personas a tu aplicación para ordenadores o móviles con la finalidad de descarga o interacción mediante contenidos de foto, vídeo, secuencia o demostración interactiva.
Teóricamente, esto permite los anuncios siguientes:
Foto | Vídeo | Secuencia | Anuncio con demostración interactiva | |
---|---|---|---|---|
Anuncio de descarga para móviles | ✓ | ✓ | ✓ | ✓ |
Anuncio de interacción para móviles | ✓ | ✓ | ✓ | |
Anuncio de descarga para ordenadores | ✓ | ✓ | ✓ | |
Anuncio de interacción para ordenadores | ✓ | ✓ | ✓ | |
Anuncio sobre una aplicación para ordenadores de productos virtuales | ✓ | ✓ | ✓ |
Los anuncios sobre aplicaciones para ordenadores de productos virtuales son un subconjunto de la interacción para ordenadores. Puedes utilizar ofertas de productos virtuales para volver a interactuar con jugadores y lograr que vuelvan a tu aplicación. Por ejemplo, una aplicación puede ofrecer un descuento para un artículo o un conjunto en la divisa en la aplicación en la sección de noticias para recuperar antiguos clientes. Haz clic aquí para consultar las instrucciones sobre cómo configurar tu aplicación para que acepte pagos.
A modo de referencia, este es el aspecto de la imagen de descarga para móviles:
Este es el aspecto de un anuncio sobre una aplicación para ordenadores de productos virtuales con imagen:
Al crear el anuncio, ten en cuenta los requisitos siguientes:
user_os
de la especificación de segmentación de móviles. La ubicación debe tener un campo device_platforms
con el valor ['mobile
'] y se recomienda encarecidamente el uso de los otros campos de la especificación para llegar a dispositivos móviles en Facebook. De manera opcional, puedes especificar publisher_platforms
si solo quieres llegar a determinadas plataformas.device_platforms
debe ser desktop
. Tienes la opción de especificar facebook_positions
si no quieres la sección de noticias y la columna de la derecha de Facebook para ordenadores.GET_OFFER
para los productos virtuales, se debe aplicar un descuento al precio. Consulta el artículo sobre productos virtuales para obtener más información.Las siguientes llamadas a la acción adicionales están disponibles para los anuncios sobre aplicaciones en el campo call_to_action
de una publicación o el objeto object_story_spec
del contenido de un anuncio. También puedes especificar el enlace profundo a la aplicación para móviles en el campo app_link
o el objeto del producto virtual de la aplicación para ordenadores en el campo product_link
.
Clave | Valor | ¿Obligatorio? |
---|---|---|
type | Tipos de llamadas a la acción, independientemente de si son para descarga o interacción: | Sí |
value | Diccionario JSON de: | Sí
|
value.link | Hace referencia a la URL de la aplicación Canvas del App Store, Google Play Store o Facebook; por ejemplo, https://itunes.apple.com/us/app/facebook/id284882215. | Sí |
value.app_link | Para definir el destino del enlace profundo solo para las aplicaciones para móviles; por ejemplo, | Sí, solo para anuncios de descarga o interacción para móviles |
value.product_link | Para definir la URL que señala el objeto del producto virtual de Open Graph del producto. Haz clic aquí para consultar los detalles de configuración. | Sí, solo para productos virtuales para ordenadores |
value.link_title | Permite personalizar el nombre del enlace, que aparece debajo de la imagen del anuncio. | No |
Para crear un anuncio sobre una aplicación para ordenadores o para móviles con una foto, primero crea una publicación de la página con enlace con una foto mediante el campo object_story_spec: {'link_data': ...}
del contenido del anuncio.
Ejemplo:
curl -X POST \
-F 'name="Sample Creative"' \
-F 'object_story_spec={
"page_id": "<PAGE_ID>",
"link_data": {
"call_to_action": {
"type": "INSTALL_MOBILE_APP",
"value": {
"link": "<APP_STORE_URL>"
}
},
"image_hash": "<IMAGE_HASH>",
"link": "<APP_STORE_URL>",
"message": "Try it out"
}
}' \
-F 'access_token=<ACCESS_TOKEN>' \
https://graph.facebook.com/v19.0
/act_<AD_ACCOUNT_ID>/adcreatives
Como alternativa, puedes crear la publicación de la página mediante el extremo de noticias y utilizar el identificador de la publicación en el contenido. Para obtener más ejemplos, consulta la sección de ejemplos a continuación.
Para crear un anuncio sobre la descarga de aplicaciones para móviles o un anuncio de interacción mediante el formato de anuncio por secuencia, sigue las instrucciones de los documentos de anuncios por secuencia excepto para el campo child_attachments
' link
, donde debes especificar un enlace a la tienda de aplicaciones.
Ten en cuenta que debes especificar el mismo enlace a la tienda de aplicaciones en cada child_attachment
. No tienes que volver a especificar el enlace en call_to_action:{'value':{'link':... }}}
.
curl -X POST \
-F 'name="Carousel app ad"' \
-F 'object_story_spec={
"page_id": "<PAGE_ID>",
"link_data": {
"message": "My message",
"link": "http://www.example.com/appstoreurl",
"caption": "WWW.ITUNES.COM",
"name": "The link name",
"description": "The link description",
"child_attachments": [
{
"link": "http://www.example.com/appstoreurl",
"image_hash": "<IMAGE_HASH>",
"call_to_action": {
"type": "USE_MOBILE_APP",
"value": {
"app_link": "<DEEP_LINK>"
}
}
},
{
"link": "http://www.example.com/appstoreurl",
"image_hash": "<IMAGE_HASH>",
"call_to_action": {
"type": "USE_MOBILE_APP",
"value": {
"app_link": "<DEEP_LINK>"
}
}
},
{
"link": "http://www.example.com/appstoreurl",
"image_hash": "<IMAGE_HASH>",
"call_to_action": {
"type": "USE_MOBILE_APP",
"value": {
"app_link": "<DEEP_LINK>"
}
}
},
{
"link": "http://www.example.com/appstoreurl",
"image_hash": "<IMAGE_HASH>",
"call_to_action": {
"type": "USE_MOBILE_APP",
"value": {
"app_link": "<DEEP_LINK>"
}
}
}
],
"multi_share_optimized": true
}
}' \
-F 'access_token=<ACCESS_TOKEN>' \
https://graph.facebook.com/v19.0
/act_<AD_ACCOUNT_ID>/adcreatives
Para crear un anuncio sobre una aplicación con un vídeo, primero sube un vídeo a la biblioteca de vídeos de la cuenta publicitaria. Luego, utiliza el identificador del vídeo en el campo object_story_spec: {'video_data':...}
del contenido del anuncio.
Ejemplo:
use FacebookAds\Object\AdCreative;
use FacebookAds\Object\AdCreativeVideoData;
use FacebookAds\Object\Fields\AdCreativeVideoDataFields;
use FacebookAds\Object\AdCreativeObjectStorySpec;
use FacebookAds\Object\Fields\AdCreativeObjectStorySpecFields;
use FacebookAds\Object\Fields\AdCreativeFields;
$video_data = new AdCreativeVideoData();
$video_data->setData(array(
AdCreativeVideoDataFields::IMAGE_URL => '<THUMBNAIL_URL>',
AdCreativeVideoDataFields::VIDEO_ID => <VIDEO_ID>,
AdCreativeVideoDataFields::CALL_TO_ACTION => array(
'type' => 'INSTALL_MOBILE_APP',
'value' => array(
'link' => '<APP_STORE_URL>',
),
),
));
$object_story_spec = new AdCreativeObjectStorySpec();
$object_story_spec->setData(array(
AdCreativeObjectStorySpecFields::PAGE_ID => <PAGE_ID>,
AdCreativeObjectStorySpecFields::VIDEO_DATA => $video_data,
));
$creative = new AdCreative(null, 'act_<AD_ACCOUNT_ID>');
$creative->setData(array(
AdCreativeFields::NAME => 'Sample Creative',
AdCreativeFields::OBJECT_STORY_SPEC => $object_story_spec,
));
$creative->create();
from facebookads.adobjects.adcreative import AdCreative
from facebookads.adobjects.adcreativeobjectstoryspec \
import AdCreativeObjectStorySpec
from facebookads.adobjects.adcreativevideodata \
import AdCreativeVideoData
video_data = AdCreativeVideoData()
video_data[AdCreativeVideoData.Field.description] = 'try it out'
video_data[AdCreativeVideoData.Field.video_id] = <VIDEO_ID>
video_data[AdCreativeVideoData.Field.image_url] = '<THUMBNAIL_URL>'
video_data[AdCreativeVideoData.Field.call_to_action] = {
'type': 'INSTALL_MOBILE_APP',
'value': {
'link': '<APP_STORE_URL>',
'link_title': 'Facebook',
},
}
object_story_spec = AdCreativeObjectStorySpec()
object_story_spec[AdCreativeObjectStorySpec.Field.page_id] = <PAGE_ID>
object_story_spec[AdCreativeObjectStorySpec.Field.video_data] = video_data
creative = AdCreative(parent_id='act_<AD_ACCOUNT_ID>')
creative[AdCreative.Field.name] = 'Sample Creative'
creative[AdCreative.Field.object_story_spec] = object_story_spec
creative.remote_create()
AdCreative adCreative = new AdAccount(act_<AD_ACCOUNT_ID>, context).createAdCreative()
.setName("Sample Creative")
.setObjectStorySpec(
new AdCreativeObjectStorySpec()
.setFieldPageId(<PAGE_ID>)
.setFieldVideoData(
new AdCreativeVideoData()
.setFieldCallToAction(
new AdCreativeLinkDataCallToAction()
.setFieldType(AdCreativeLinkDataCallToAction.EnumType.VALUE_INSTALL_MOBILE_APP)
.setFieldValue(
new AdCreativeLinkDataCallToActionValue()
.setFieldLink(<APP_STORE_URL>)
)
)
.setFieldLinkDescription("try it out")
.setFieldImageUrl(<THUMBNAIL_URL>)
.setFieldVideoId(<VIDEO_ID>)
)
)
.execute();
String ad_creative_id = adCreative.getId();
curl \
-F 'name=Sample Creative' \
-F 'object_story_spec={
"page_id": "<PAGE_ID>",
"video_data": {
"call_to_action": {"type":"INSTALL_MOBILE_APP","value":{"link":"<APP_STORE_URL>"}},
"image_url": "<THUMBNAIL_URL>",
"video_id": "<VIDEO_ID>"
}
}' \
-F 'access_token=<ACCESS_TOKEN>' \
https://graph.facebook.com/v2.11/act_<AD_ACCOUNT_ID>/adcreatives
Como alternativa, puedes crear la publicación de la página mediante el extremo de vídeo y utilizar el identificador del vídeo en el contenido. Para obtener más ejemplos, consulta la sección de ejemplos a continuación.
Para recuperar los detalles sobre la publicación de la página, consulta los documentos de publicación de la página con enlace o los documentos de publicación de la página con vídeo.
Puedes enumerar todas las publicaciones de la página desde el perímetro /promotable_posts
de la página.
curl https://graph.facebook.com/{API_VERSION}/{PAGE_ID}/promotable_posts
Para recuperar los detalles sobre el contenido de tu anuncio, consulta la documentación del contenido del anuncio.
Consulta la documentación principal de anuncios sobre aplicaciones.
ADVERTISE
en la página."call_to_action={'type':'LEARN_MORE', 'value':{'link':'https://itunes.apple.com/us/app/facebook/id284882215', 'app_link':'facebook://path/to/page'}}"
Antes de especificar un enlace de aplicación, debes comprobar que se ha extraído mediante la llamada siguiente:
https://graph.facebook.com/{API_VERSION}/?type=og&scrape=true&id={APP_LINK}
Insights solo es aplicable a anuncios con un objeto promocionado que contenga el identificador de la aplicación. Para obtener un identificador de la aplicación, registra la aplicación en Facebook.
Meta proporcionará estadísticas diarias agregadas sobre los datos demográficos de las personas que han descargado tu aplicación. Para recuperarlas, debes usar un identificador de acceso a la aplicación y consultar
https://graph.facebook.com/{API_VERSION}/{APP_ID}/insights/application_mobile_app_installs?&access_token={ACCESS_TOKEN}
También puedes desglosar las estadísticas especificando un parámetro de URL adicional, breakdown
, que sea igual a uno de los siguientes valores. Actualmente, no se pueden combinar desgloses.
Nombre | Descripción |
---|---|
| Desglosa tus estadísticas por la edad y el sexo del público. |
| Desglosa tus estadísticas por el país del público. |
| Desglosa tus estadísticas por la configuración regional del público. |
Ejemplos:
https://graph.facebook.com/{API_VERSION}/{APP_ID}/insights/application_mobile_app_installs?breakdown=gender_age&access_token={ACCESS_TOKEN} https://graph.facebook.com/{API_VERSION}/{APP_ID}/insights/application_mobile_app_installs?breakdown=country&access_token={ACCESS_TOKEN} https://graph.facebook.com/{API_VERSION}/{APP_ID}/insights/application_mobile_app_installs?breakdown=locale&access_token={ACCESS_TOKEN}
Paso 1. Crea la publicación de la página con una imagen. Ten en cuenta que debes utilizar PAGE_ACCESS_TOKEN
y la sesión de API de la página para crear la publicación de la página.
use FacebookAds\Api;
use FacebookAds\Http\RequestInterface;
$params = array(
'message' => 'Sign up today',
'picture' => '<IMAGE_URL>',
'link' => '<LINK>',
'published' => 1,
'call_to_action' => array(
'type' => 'SIGN_UP',
'value' => array(
'link' => '<LINK>',
),
),
);
$data = Api::instance()->call(
'/'.<PAGE_ID>.'/feed',
RequestInterface::METHOD_POST,
$params)->getContent();
from facebookads import FacebookAdsApi
params = {
'massage': 'Sign up today.',
'picture': '<IMAGE_URL>',
'link': '<LINK>',
'published': 1,
'call_to_action': {
'type': 'SIGN_UP',
'value': {
'link': '<LINK>',
},
},
}
data = FacebookAdsApi.get_default_api().\
call('POST', (<PAGE_ID>, 'feed'), params=params)
curl \
-F 'message=Sign up today' \
-F 'picture=<IMAGE_URL>' \
-F 'link=<LINK>' \
-F 'published=1' \
-F 'call_to_action={"type":"SIGN_UP","value":{"link":"<LINK>"}}' \
-F 'access_token=<ACCESS_TOKEN>' \
https://graph.facebook.com/v2.11/<PAGE_ID>/feed
Paso 2. Crea el contenido del anuncio ({STORY_ID}
tiene el formato de '{PAGE_ID}_{POST_ID}'
)
Paso 3. Utiliza el contenido en un anuncio.
Paso 1. Crea la publicación de la página con la imagen. Ten en cuenta que debes utilizar PAGE_ACCESS_TOKEN
y la sesión de API de la página para crear la publicación de la página.
Paso 2. Crea el contenido del anuncio.
Paso 3. Establece la puja en el conjunto de anuncios, la optimización para clics y el pago por impresiones.
use FacebookAds\Object\AdSet;
use FacebookAds\Object\Fields\AdSetFields;
use FacebookAds\Object\Values\AdSetBillingEventValues;
use FacebookAds\Object\Values\AdSetOptimizationGoalValues;
use FacebookAds\Object\Fields\TargetingFields;
use FacebookAds\Object\Targeting;
$adset = new AdSet(null, 'act_<AD_ACCOUNT_ID>');
$adset->setData(array(
AdSetFields::NAME => 'LifetimeBudgetSet',
AdsetFields::LIFETIME_BUDGET => 100000,
AdSetFields::BID_AMOUNT => 500,
AdSetFields::BILLING_EVENT => AdSetBillingEventValues::IMPRESSIONS,
AdSetFields::OPTIMIZATION_GOAL => AdSetOptimizationGoalValues::LINK_CLICKS,
AdSetFields::PROMOTED_OBJECT => array(
'application_id' => <APP_ID>,
'object_store_url' => '<APP_STORE_URL>',
),
AdSetFields::TARGETING => (new Targeting())->setData(array(
TargetingFields::GEO_LOCATIONS => array(
'countries' => array('US'),
),
TargetingFields::USER_OS => array(
'IOS',
),
TargetingFields::PUBLISHER_PLATFORMS => array(
'facebook',
'audience_network',
),
TargetingFields::FACEBOOK_POSITIONS => array('feed'),
)),
AdSetFields::CAMPAIGN_ID => <CAMPAIGN_ID>,
AdSetFields::END_TIME =>
(new \DateTime("+1 week"))->format(\DateTime::ISO8601),
));
$adset->create(array(
AdSet::STATUS_PARAM_NAME => AdSet::STATUS_PAUSED,
));
import time
from facebookads.adobjects.adset import AdSet
adset = AdSet(parent_id='act_<AD_ACCOUNT_ID>')
adset.update({
AdSet.Field.name: 'LifetimeBudgetSet',
AdSet.Field.campaign_id: <CAMPAIGN_ID>,
AdSet.Field.lifetime_budget: 10000,
AdSet.Field.start_time: int(time.time()),
AdSet.Field.end_time: int(time.time() + 100000),
AdSet.Field.optimization_goal: AdSet.OptimizationGoal.link_clicks,
AdSet.Field.billing_event: AdSet.BillingEvent.impressions,
AdSet.Field.bid_amount: 500,
AdSet.Field.promoted_object: {
'application_id': <APP_ID>,
'object_store_url': '<APP_STORE_URL>',
},
AdSet.Field.targeting: {
'geo_locations': {
'countries': ['US'],
},
'user_os': ['iOS'],
Targeting.Field.publisher_platforms: ['facebook', 'audience_network'],
Targeting.Field.facebook_positions: ['feed'],
},
})
adset.remote_create(params={
'status': AdSet.Status.paused,
})
curl \
-F 'name=LifetimeBudgetSet' \
-F 'lifetime_budget=100000' \
-F 'bid_amount=500' \
-F 'billing_event=IMPRESSIONS' \
-F 'optimization_goal=LINK_CLICKS' \
-F 'promoted_object={"application_id":"<APP_ID>","object_store_url":"<APP_STORE_URL>"}' \
-F 'targeting={
"facebook_positions": ["feed"],
"geo_locations": {"countries":["US"]},
"publisher_platforms": ["facebook","audience_network"],
"user_os": ["IOS"]
}' \
-F 'campaign_id=<CAMPAIGN_ID>' \
-F 'end_time=2018-02-06T04:45:30+0000' \
-F 'status=PAUSED' \
-F 'access_token=<ACCESS_TOKEN>' \
https://graph.facebook.com/v2.11/act_<AD_ACCOUNT_ID>/adsets
Paso 4. Utiliza el contenido en un anuncio.
use FacebookAds\Object\Ad;
use FacebookAds\Object\Fields\AdFields;
$data = array(
AdFields::NAME => 'My Ad',
AdFields::ADSET_ID => <AD_SET_ID>,
AdFields::CREATIVE => array(
'creative_id' => <CREATIVE_ID>,
),
);
$ad = new Ad(null, 'act_<AD_ACCOUNT_ID>');
$ad->setData($data);
$ad->create(array(
'redownload' => 1,
));
from facebookads.adobjects.ad import Ad
ad = Ad(parent_id='act_<AD_ACCOUNT_ID>')
ad[Ad.Field.name] = 'My Ad'
ad[Ad.Field.adset_id] = <AD_SET_ID>
ad[Ad.Field.creative] = {'creative_id': <CREATIVE_ID>}
ad[Ad.Field.redownload] = True
ad.remote_create(params={
'status': Ad.Status.paused,
})
Ad ad = new AdAccount(act_<AD_ACCOUNT_ID>, context).createAd()
.setName("My Ad")
.setAdsetId(<AD_SET_ID>)
.setCreative(
new AdCreative()
.setFieldId(<CREATIVE_ID>)
)
.setRedownload(true)
.execute();
String ad_id = ad.getId();
curl \
-F 'name=My Ad' \
-F 'adset_id=<AD_SET_ID>' \
-F 'creative={"creative_id":"<CREATIVE_ID>"}' \
-F 'redownload=1' \
-F 'access_token=<ACCESS_TOKEN>' \
https://graph.facebook.com/v2.11/act_<AD_ACCOUNT_ID>/ads
Paso 1. Crea la publicación de la página con la imagen. Ten en cuenta que debes utilizar PAGE_ACCESS_TOKEN
y la sesión de API de la página para crear la publicación de la página.
use FacebookAds\Api;
use FacebookAds\Http\RequestInterface;
$params = array(
'message' => 'Check out this App today. Available on iTunes.',
'published' => 1,
'link' => '<APP_STORE_URL>',
'picture' => '<IMAGE_URL>',
'call_to_action' => array(
'type' => 'LEARN_MORE',
'value' => array(
'link' => '<APP_STORE_URL>',
'app_link' => '<APP_DEEP_LINK>',
),
),
);
$data = Api::instance()->call(
'/'.<PAGE_ID>.'/feed',
RequestInterface::METHOD_POST,
$params)->getContent();
from facebookads import FacebookAdsApi
params = {
'massage': 'Check out this App today. Available on iTunes.',
'picture': '<IMAGE_URL>',
'link': '<APP_STORE_URL>',
'published': 1,
'call_to_action': {
'type': 'LEARN_MORE',
'value': {
'link': '<APP_STORE_URL>',
'app_link': '<APP_DEEP_LINK>',
},
},
}
path = "/{}/feed".format(<PAGE_ID>)
data = FacebookAdsApi.get_default_api().call('POST', (path,), params=params)
curl \
-F 'message=Check out this App today. Available on iTunes.' \
-F 'published=1' \
-F 'link=<APP_STORE_URL>' \
-F 'picture=<IMAGE_URL>' \
-F 'call_to_action={
"type": "LEARN_MORE",
"value": {"link":"<APP_STORE_URL>","app_link":"<APP_DEEP_LINK>"}
}' \
-F 'access_token=<ACCESS_TOKEN>' \
https://graph.facebook.com/v2.11/<PAGE_ID>/feed
Paso 2. Crea el contenido del anuncio.
Paso 3. Establece la puja en el conjunto de anuncios, con la optimización para los eventos de la aplicación y el pago por impresiones.
Ten en cuenta que también debes establecer el parámetro promoted_object
del conjunto de anuncios para incluir un parámetro custom_event_type
como destino de la optimización. Consulta los documentos sobre conjuntos de anuncios para obtener más información.
curl -X POST \
-F 'name="A CPA Ad Set optimized for App Events"' \
-F 'campaign_id="<AD_CAMPAIGN_ID>"' \
-F 'daily_budget=300' \
-F 'start_time="2024-05-11T05:35:30-0700"' \
-F 'end_time="2024-05-18T05:35:30-0700"' \
-F 'billing_event="IMPRESSIONS"' \
-F 'optimization_goal="OFFSITE_CONVERSIONS"' \
-F 'bid_amount=100' \
-F 'status="PAUSED"' \
-F 'promoted_object={
"application_id": "<APP_ID>",
"object_store_url": "<APP_STORE_URL>",
"custom_event_type": "PURCHASE"
}' \
-F 'targeting={
"facebook_positions": [
"feed"
],
"geo_locations": {
"countries": [
"US"
]
},
"user_os": [
"iOS"
]
}' \
-F 'access_token=<ACCESS_TOKEN>' \
https://graph.facebook.com/v19.0/act_<AD_ACCOUNT_ID>/adsets
Paso 4. Utiliza el contenido en un anuncio.
use FacebookAds\Object\Ad;
use FacebookAds\Object\Fields\AdFields;
$data = array(
AdFields::NAME => 'My Ad',
AdFields::ADSET_ID => <AD_SET_ID>,
AdFields::CREATIVE => array(
'creative_id' => <CREATIVE_ID>,
),
);
$ad = new Ad(null, 'act_<AD_ACCOUNT_ID>');
$ad->setData($data);
$ad->create(array(
'redownload' => 1,
));
from facebookads.adobjects.ad import Ad
ad = Ad(parent_id='act_<AD_ACCOUNT_ID>')
ad[Ad.Field.name] = 'My Ad'
ad[Ad.Field.adset_id] = <AD_SET_ID>
ad[Ad.Field.creative] = {'creative_id': <CREATIVE_ID>}
ad[Ad.Field.redownload] = True
ad.remote_create(params={
'status': Ad.Status.paused,
})
Ad ad = new AdAccount(act_<AD_ACCOUNT_ID>, context).createAd()
.setName("My Ad")
.setAdsetId(<AD_SET_ID>)
.setCreative(
new AdCreative()
.setFieldId(<CREATIVE_ID>)
)
.setRedownload(true)
.execute();
String ad_id = ad.getId();
curl \
-F 'name=My Ad' \
-F 'adset_id=<AD_SET_ID>' \
-F 'creative={"creative_id":"<CREATIVE_ID>"}' \
-F 'redownload=1' \
-F 'access_token=<ACCESS_TOKEN>' \
https://graph.facebook.com/v2.11/act_<AD_ACCOUNT_ID>/ads
Ten en cuenta que debes utilizar PAGE_ACCESS_TOKEN
y la sesión de API de la página para crear la publicación de la página. Para una publicación con vídeo, el dominio es "video-graph.facebook.com"
en lugar de "graph.facebook.com"
.
use FacebookAds\Api;
use FacebookAds\Http\RequestInterface;
use FacebookAds\Object\Values\AdCreativeCallToActionTypeValues;
$params = array(
'name' => 'My Video',
'message' => 'Check out this app!',
'thumbnail' => '<THUMBNAIL_PATH>',
'published' => 0,
'call_to_action' => array(
'type' => AdCreativeCallToActionTypeValues::INSTALL_MOBILE_APP,
'value' => array(
'link' => '<APP_STORE_URL>',
),
),
);
$request = Api::instance()->prepareRequest(
'/'.<PAGE_ID>.'/videos',
RequestInterface::METHOD_POST,
$params);
$request->setLastLevelDomain('graph-video');
$request->getFileParams()->offsetSet('source', '<VIDEO_PATH>');
$response = Api::instance()->executeRequest($request);
$data = $response->getContent();
from facebookads import FacebookAdsApi
params = {
'name': 'My Video',
'massage': 'Check out this app!',
'thumbnail': '<THUMBNAIL_URL>',
'published': 0,
'call_to_action': {
'type': 'INSTALL_MOBILE_APP',
'value': {
'link': '<APP_STORE_URL>',
},
},
}
url = 'https://graph-video.facebook.com/' + FacebookAdsApi.API_VERSION
path = "/{}/videos".format(<PAGE_ID>)
files = {'source': open('<VIDEO_PATH>', 'rb')}
data = FacebookAdsApi.get_default_api().call(
'POST',
url + path,
params=params,
files=files
)
curl \
-F 'name=My Video' \
-F 'message=Check out this app!' \
-F 'thumbnail=<APP_STORE_URL>' \
-F 'published=0' \
-F 'call_to_action={"type":"INSTALL_MOBILE_APP","value":{"link":"<APP_STORE_URL>"}}' \
-F 'source=@<VIDEO_PATH>' \
-F 'access_token=<ACCESS_TOKEN>' \
https://graph-video.facebook.com/v2.11/<PAGE_ID>/videos
use FacebookAds\Api;
use FacebookAds\Http\RequestInterface;
use FacebookAds\Object\Values\AdCreativeCallToActionTypeValues;
$params = array(
'name' => 'My Video',
'message' => 'Check out this app!',
'thumbnail' => '<THUMBNAIL_PATH>',
'published' => 0,
'call_to_action' => array(
'type' => AdCreativeCallToActionTypeValues::LEARN_MORE,
'value' => array(
'link' => '<APP_STORE_URL>',
'app_link' => '<APP_DEEP_LINK>',
),
),
);
$request = Api::instance()->prepareRequest(
'/'.<PAGE_ID>.'/videos',
RequestInterface::METHOD_POST,
$params);
$request->setLastLevelDomain('graph-video');
$request->getFileParams()->offsetSet('source', '<VIDEO_PATH>');
$response = Api::instance()->executeRequest($request);
$data = $response->getContent();
from facebookads import FacebookAdsApi
params = {
'name': 'My Video',
'massage': 'Check out this app!',
'thumbnail': '<THUMBNAIL_URL>',
'published': 0,
'call_to_action': {
'type': 'LEARN_MORE',
'value': {
'link': '<APP_STORE_URL>',
'app_link': '<APP_DEEP_LINK>',
},
},
}
url = 'https://graph-video.facebook.com/' + FacebookAdsApi.API_VERSION
path = "/{}/videos".format(<PAGE_ID>)
files = {'source': open('<VIDEO_PATH>', 'rb')}
data = FacebookAdsApi.get_default_api().call(
'POST',
url + path,
params=params,
files=files
)
curl \
-F 'name=My Video' \
-F 'message=Check out this app!' \
-F 'thumbnail=<APP_STORE_URL>' \
-F 'published=0' \
-F 'call_to_action={
"type": "LEARN_MORE",
"value": {"link":"<APP_STORE_URL>","app_link":"<APP_DEEP_LINK>"}
}' \
-F 'source=@<VIDEO_PATH>' \
-F 'access_token=<ACCESS_TOKEN>' \
https://graph-video.facebook.com/v2.11/<PAGE_ID>/videos
use FacebookAds\Api;
use FacebookAds\Http\RequestInterface;
use FacebookAds\Object\Values\AdCreativeCallToActionTypeValues;
$params = array(
'name' => 'My Video',
'message' => 'Check out this app!',
'thumbnail' => '<THUMBNAIL_PATH>',
'published' => 0,
'call_to_action' => array(
'type' => AdCreativeCallToActionTypeValues::PLAY_GAME,
'value' => array(
'link' => '<URL>',
),
),
);
$request = Api::instance()->prepareRequest(
'/'.<PAGE_ID>.'/videos',
RequestInterface::METHOD_POST,
$params);
$request->setLastLevelDomain('graph-video');
$request->getFileParams()->offsetSet('source', '<VIDEO_PATH>');
$response = Api::instance()->executeRequest($request);
$data = $response->getContent();
from facebookads import FacebookAdsApi
params = {
'name': 'My Video',
'massage': 'Check out this app!',
'thumbnail': '<THUMBNAIL_URL>',
'published': 0,
'call_to_action': {
'type': 'PLAY_GAME',
'value': {
'link': '<URL>',
},
},
}
url = 'https://graph-video.facebook.com/' + FacebookAdsApi.API_VERSION
path = "/{}/videos".format(<PAGE_ID>)
files = {'source': open('<VIDEO_PATH>', 'rb')}
data = FacebookAdsApi.get_default_api().call(
'POST',
'<URL>' + path,
params=params,
files=files
)
curl \
-F 'name=My Video' \
-F 'message=Check out this app!' \
-F 'thumbnail=<THUMBNAIL_PATH>' \
-F 'published=0' \
-F 'call_to_action={"type":"PLAY_GAME","value":{"link":"<THUMBNAIL_PATH>"}}' \
-F 'source=@<VIDEO_PATH>' \
-F 'access_token=<ACCESS_TOKEN>' \
https://graph-video.facebook.com/v2.11/<PAGE_ID>/videos
use FacebookAds\Api;
use FacebookAds\Http\RequestInterface;
use FacebookAds\Object\Values\AdCreativeCallToActionTypeValues;
$params = array(
'message' => 'Buy coins now!',
'picture' => '<IMAGE_URL>',
'link' => '<LINK>',
'published' => 1,
'call_to_action' => array(
'type' => AdCreativeCallToActionTypeValues::BUY_NOW,
'value' => array(
'link' => '<LINK>',
'product_link' => '<PRODUCT_LINK>',
),
),
);
$data = Api::instance()->call(
'/'.<PAGE_ID>.'/feed',
RequestInterface::METHOD_POST,
$params)->getContent();
from facebookads import FacebookAdsApi
params = {
'massage': 'Buy coins now!',
'picture': '<IMAGE_URL>',
'link': '<LINK>',
'published': 1,
'call_to_action': {
'type': 'BUY_NOW',
'value': {
'link': '<LINK>',
'product_link': '<PRODUCT_LINK>',
},
},
}
data = FacebookAdsApi.get_default_api().\
call('POST', (<PAGE_ID>, 'feed'), params=params)
curl \
-F 'message=Buy coins now!' \
-F 'picture=<IMAGE_URL>' \
-F 'link=<LINK>' \
-F 'published=1' \
-F 'call_to_action={"type":"BUY_NOW","value":{"link":"<LINK>","product_link":"<PRODUCT_LINK>"}}' \
-F 'access_token=<ACCESS_TOKEN>' \
https://graph.facebook.com/v2.11/<PAGE_ID>/feed
use FacebookAds\Api;
use FacebookAds\Http\RequestInterface;
use FacebookAds\Object\Values\AdCreativeCallToActionTypeValues;
$params = array(
'name' => 'My Video',
'message' => 'Buy coins now!',
'thumbnail' => '<THUMBNAIL_PATH>',
'published' => 0,
'call_to_action' => array(
'type' => AdCreativeCallToActionTypeValues::BUY_NOW,
'value' => array(
'link' => '<APP_URL>',
'product_link' => '<PRODUCT_LINK>',
),
),
);
$request = Api::instance()->prepareRequest(
'/'.<PAGE_ID>.'/videos',
RequestInterface::METHOD_POST,
$params);
$request->setLastLevelDomain('graph-video');
$request->getFileParams()->offsetSet('source', '<VIDEO_PATH>');
$response = Api::instance()->executeRequest($request);
$data = $response->getContent();
from facebookads import FacebookAdsApi
params = {
'name': 'My Video',
'massage': 'Buy coins now!',
'thumbnail': '<THUMBNAIL_URL>',
'published': 0,
'call_to_action': {
'type': 'BUY_NOW',
'value': {
'link': '<APP_STORE_URL>',
'product_link': '<PRODUCT_LINK>',
},
},
}
files = {'source': open('<VIDEO_PATH>', 'rb')}
data = FacebookAdsApi.get_default_api().call(
'POST', (<PAGE_ID>, 'videos'),
params=params,
files=files
)
curl \
-F 'name=My Video' \
-F 'message=Buy coins now!' \
-F 'thumbnail=<THUMBNAIL_PATH>' \
-F 'published=0' \
-F 'call_to_action={
"type": "BUY_NOW",
"value": {"link":"<THUMBNAIL_PATH>","product_link":"<THUMBNAIL_PATH>"}
}' \
-F 'source=@<VIDEO_PATH>' \
-F 'access_token=<ACCESS_TOKEN>' \
https://graph-video.facebook.com/v2.11/<PAGE_ID>/videos
Los anuncios de catálogo de Advantage+ pueden dirigir a los usuarios a descargar tu aplicación para móviles. Esto te permite volver a dirigirte a los usuarios con anuncios de descarga para móviles en función de su comportamiento.
Paso 1. Crea una campaña para tu catálogo de productos.
Paso 2. Crea un conjunto de anuncios para un conjunto de productos específico del catálogo de productos anterior.
use FacebookAds\Object\AdSet;
use FacebookAds\Object\Fields\AdSetFields;
use FacebookAds\Object\Fields\TargetingFields;
use FacebookAds\Object\Values\AdSetBillingEventValues;
use FacebookAds\Object\Values\AdSetOptimizationGoalValues;
$adset = new AdSet(null, 'act_<AD_ACCOUNT_ID>');
$adset->setData(array(
AdSetFields::NAME => 'Mobile App Installs Ad Set with Dynamic Product Ads',
AdSetFields::BID_AMOUNT => 3000,
AdSetFields::BILLING_EVENT => AdSetBillingEventValues::IMPRESSIONS,
AdSetFields::OPTIMIZATION_GOAL => AdSetOptimizationGoalValues::APP_INSTALLS,
AdSetFields::DAILY_BUDGET => 15000,
AdSetFields::CAMPAIGN_ID => <CAMPAIGN_ID>,
AdSetFields::TARGETING => array(
TargetingFields::GEO_LOCATIONS => array(
'countries' => array('US'),
),
TargetingFields::PUBLISHER_PLATFORMS => array(
'facebook',
'audience_network',
),
TargetingFields::DEVICE_PLATFORMS => array('mobile'),
TargetingFields::USER_OS => array(
'IOS',
),
TargetingFields::DYNAMIC_AUDIENCE_IDS => array(<PRODUCT_AUDIENCE_ID>),
),
AdSetFields::PROMOTED_OBJECT => array(
'product_set_id' => <PRODUCT_SET_ID>,
'application_id' => <APP_ID>,
'object_store_url' => '<APP_STORE_URL>',
),
));
$adset->create(array(
AdSet::STATUS_PARAM_NAME => AdSet::STATUS_PAUSED,
));
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: 'Mobile App Installs Ad Set with Dynamic Product Ads',
AdSet.Field.promoted_object: {
'product_set_id': product_set_id,
'application_id': <APP_ID>,
'object_store_url': '<APP_STORE_URL>',
},
AdSet.Field.campaign_id: <CAMPAIGN_ID>,
AdSet.Field.daily_budget: 15000,
AdSet.Field.optimization_goal: AdSet.OptimizationGoal.app_installs,
AdSet.Field.billing_event: AdSet.BillingEvent.impressions,
AdSet.Field.bid_amount: 3000,
AdSet.Field.targeting: {
Targeting.Field.geo_locations: {
'countries': ['US'],
},
Targeting.Field.publisher_platforms: ['facebook', 'audience_network'],
Targeting.Field.device_platforms: ['mobile'],
Targeting.Field.user_os: [
'IOS',
],
Targeting.Field.dynamic_audience_ids: [
<PRODUCT_AUDIENCE_ID>,
],
},
})
adset.remote_create(params={
'status': AdSet.Status.paused,
})
curl \
-F 'name=Mobile App Installs Ad Set with Dynamic Product Ads' \
-F 'bid_amount=3000' \
-F 'billing_event=IMPRESSIONS' \
-F 'optimization_goal=APP_INSTALLS' \
-F 'daily_budget=15000' \
-F 'campaign_id=<CAMPAIGN_ID>' \
-F 'targeting={
"geo_locations": {"countries":["US"]},
"publisher_platforms": ["facebook","audience_network"],
"device_platforms": ["mobile"],
"user_os": ["IOS"],
"dynamic_audience_ids": ["<PRODUCT_AUDIENCE_ID>"]
}' \
-F 'promoted_object={
"product_set_id": "<PRODUCT_SET_ID>",
"application_id": "<APP_ID>",
"object_store_url": "<APP_STORE_URL>"
}' \
-F 'status=PAUSED' \
-F 'access_token=<ACCESS_TOKEN>' \
https://graph.facebook.com/v2.8/act_<AD_ACCOUNT_ID>/adsets
Paso 3. Crea el contenido del anuncio de catálogo de Advantage+ mediante una plantilla.
curl -X POST \
-F 'name="Advantage+ catalog ads template creative sample"' \
-F 'object_story_spec={
"page_id": "<PAGE_ID>",
"template_data": {
"call_to_action": {
"type": "INSTALL_MOBILE_APP",
"value": {
"link": "http://www.example.com/appstoreurl"
}
},
"message": "Test {{product.name | titleize}}",
"link": "http://www.example.com/appstoreurl",
"name": "Headline {{product.price}}",
"description": "Description {{product.description}}"
}
}' \
-F 'product_set_id="<PRODUCT_SET_ID>"' \
-F 'access_token=<ACCESS_TOKEN>' \
https://graph.facebook.com/v19.0
/act_<AD_ACCOUNT_ID>/adcreatives
Paso 4. Utiliza el contenido del anuncio anterior en el anuncio.
use FacebookAds\Object\Ad;
use FacebookAds\Object\Fields\AdFields;
$data = array(
AdFields::NAME => 'My Ad',
AdFields::ADSET_ID => <AD_SET_ID>,
AdFields::CREATIVE => array(
'creative_id' => <CREATIVE_ID>,
),
);
$ad = new Ad(null, 'act_<AD_ACCOUNT_ID>');
$ad->setData($data);
$ad->create(array(
'redownload' => 1,
));
from facebookads.adobjects.ad import Ad
ad = Ad(parent_id='act_<AD_ACCOUNT_ID>')
ad[Ad.Field.name] = 'My Ad'
ad[Ad.Field.adset_id] = <AD_SET_ID>
ad[Ad.Field.creative] = {'creative_id': <CREATIVE_ID>}
ad[Ad.Field.redownload] = True
ad.remote_create(params={
'status': Ad.Status.paused,
})
Ad ad = new AdAccount(act_<AD_ACCOUNT_ID>, context).createAd()
.setName("My Ad")
.setAdsetId(<AD_SET_ID>)
.setCreative(
new AdCreative()
.setFieldId(<CREATIVE_ID>)
)
.setRedownload(true)
.execute();
String ad_id = ad.getId();
curl \
-F 'name=My Ad' \
-F 'adset_id=<AD_SET_ID>' \
-F 'creative={"creative_id":"<CREATIVE_ID>"}' \
-F 'redownload=1' \
-F 'access_token=<ACCESS_TOKEN>' \
https://graph.facebook.com/v2.11/act_<AD_ACCOUNT_ID>/ads
curl \ -X POST \ -F "name=<name>" \ -F "source=<>" \ -F "access_token=<access_token>" \ "https://graph.facebook.com/<API_VERSION>/act_<account_id>/adplayables"
name
: nombre que distingue el recurso publicitario de otros anuncios con demostración interactiva de la cuenta publicitaria; por ejemplo, {ad_name}
-> {playable_asset_name}
.source
: ruta absoluta del archivo en el equipo local.access_token
: se puede generar desde el explorador de la API Graph.Puedes añadir dos etiquetas de metadatos a tu archivo HTML 5 con demostración interactiva. De este modo, Meta puede atribuir el elemento interactivo de los anuncios a tu aplicación.
... <head> ... <meta name="ref-application-id" content="<YOUR_APP_ID>"> <meta name="ref-asset-id" content="<YOUR_ASSET_ID>"> ... </head> ...
curl \ -F 'name=Sample Creative' \ -F 'object_story_spec={ "page_id": "<PAGE_ID>", "video_data": { "call_to_action": {"type":"INSTALL_MOBILE_APP","value":{"application":<APP_ID>,"link":"<APP_STORE_URL>"}}, "image_url": "<THUMBNAIL_URL>", "link_description": "try it out", "video_id": "<VIDEO_ID>" } }' \ -F 'playable_asset_id=<PLAYABLE_ASSET_ID>' \ -F 'access_token=<ACCESS_TOKEN>' \ https://graph.facebook.com/<API_VERSION>/act_<AD_ACCOUNT_ID>/adcreatives
curl \ -F 'name=My Ad' \ -F 'status=ACTIVE' \ -F 'adset_id=<AD_SET_ID>' \ -F 'creative={"creative_id":"<CREATIVE_ID>"}' \ -F 'access_token=<ACCESS_TOKEN>' \ https://graph.facebook.com/<API_VERSION>/act_<AD_ACCOUNT_ID>/ads
Consulta el artículo sobre optimización de eventos de la aplicación para anuncios sobre aplicaciones.
Consulta el artículo sobre optimización del valor para anuncios sobre aplicaciones.