Los anuncios de catálogo de Advantage+ permiten mostrar a los usuarios anuncios según su intención de compra en todos los dispositivos. Puedes obtener señales de intención de los usuarios de aplicaciones para móviles y sitios web y, a continuación, usar los datos para crear una audiencia con el fin de segmentar clientes potenciales.
En este documento se explican los pasos siguientes:
Para obtener señales del usuario, usa los eventos de la aplicación para la aplicación para móviles o el píxel de Meta para el sitio web.
Si tienes una aplicación y solo publicas anuncios para ordenadores, debes instalar el SDK de Facebook igualmente. De esta forma, es más fácil recoger señales y ampliar la audiencia objetivo.
Debes añadir los eventos siguientes a la aplicación mediante el SDK de Facebook para iOS y Android:
Evento | Evento de iOS | Evento de Android |
---|---|---|
Búsqueda |
|
|
Ver contenido |
|
|
Añadir al carrito |
|
|
Compra | // Se envía mediante logPurchase |
|
Todos estos eventos deberían incluir un content_id
(o una matriz JSON de content_id
).
A diferencia del píxel de Meta, los eventos de la aplicación no tienen ningún parámetro product_catalog_id
. Por este motivo, debes realizar una asociación entre el catálogo y la aplicación con el extremo external_event_sources
que se describe a continuación.
Evento de artículo añadido al carrito en iOS:
[[FBSDKAppEvents shared] logEvent:FBSDKAppEventNameAddedToCart valueToSum:54.23 parameters:@{ FBSDKAppEventParameterNameCurrency : @"USD", FBSDKAppEventParameterNameContentType : @"product", FBSDKAppEventParameterNameContentID : @"123456789" } ];
Evento de compra en iOS con dos artículos diferentes comprados con la cantidad:
[[FBSDKAppEvents shared] logPurchase:21.97 currency:@"USD" parameters:@{ FBSDKAppEventParameterNameContent : @"[{\"id\":\"1234\",\"quantity\":2},{\"id\":\"5678\",\"quantity\":1}]", FBSDKAppEventParameterNameContentType : @"product" } ];
Evento de compra en Android con dos artículos comprados con la cantidad:
Bundle parameters = new Bundle(); parameters.putString(AppEventsConstants.EVENT_PARAM_CURRENCY, "USD"); parameters.putString(AppEventsConstants.EVENT_PARAM_CONTENT_TYPE, "product"); parameters.putString(AppEventsConstants.EVENT_PARAM_CONTENT, "[{\"id\":\"1234\",\"quantity\":2},{\"id\":\"5678\",\"quantity\":1}]"); logger.logEvent( AppEventsConstants.EVENT_NAME_PURCHASED, 21.97, parameters );
Evento de compra en Android con dos artículos comprados:
Bundle parameters = new Bundle(); parameters.putString(AppEventsConstants.EVENT_PARAM_CURRENCY, "USD"); parameters.putString(AppEventsConstants.EVENT_PARAM_CONTENT_TYPE, "product"); parameters.putString(AppEventsConstants.EVENT_PARAM_CONTENT_ID, "[\"1234\",\"5678\"]"); logger.logEvent( AppEventsConstants.EVENT_NAME_PURCHASED, 21.97, parameters );
Ten en cuenta que se puede usar CONTENT_ID
o CONTENT
con los anuncios de catálogo de Advantage+ para informar sobre identificadores de producto. Con el parámetro CONTENT
podrás proporcionar más información acerca de los productos.
Para usar anuncios de catálogo de Advantage+ con un socio de evaluación de la actividad en móviles (MMP), debes activar los distintos eventos obligatorios cuando alguien use la aplicación. Los puntos de interacción clave de los que debes hacer un seguimiento son el momento en que alguien busca productos, visualiza un producto, añade algo al carrito y compra artículos. Debes seleccionar los eventos en el MMP correspondiente a los siguientes eventos de anuncios de catálogo de Advantage+ estándar:
Nombre | Descripción |
---|---|
| Alguien busca productos. |
| Una cuenta del Centro de cuentas ve un producto. |
| Alguien añade un artículo al carrito. |
| Una cuenta del Centro de cuentas compra uno o varios artículos. |
También necesitas dos parámetros adicionales para que cada uno de los eventos se registre correctamente como un evento de anuncios de catálogo de Advantage+ válido. Estos dos parámetros representan el identificador del artículo que se ha visualizado, añadido al carrito o comprado, y si el identificador corresponde a un producto o a un grupo de productos. Los parámetros adicionales disponibles son:
Nombre | Descripción |
---|---|
Cadena |
|
Cadena |
|
Cadena | Opcional. Si no se proporciona ningún valor para Consulta “Elección del |
Cadena | Opcional. |
Cadena | Opcional. |
Nota: Se recomienda enviar los parámetros _valueToSum
y fb_currency
cuando se realice una compra.
En caso de que sea posible, debes añadir los eventos siguientes al sitio web:
Search
ViewCategory
ViewContent
AddToCart
Purchase
Estos eventos deben enviarse con los siguientes parámetros de datos:
Nombre | Descripción |
---|---|
cadena o cadena[] |
|
Objeto[] |
Los campos |
Cadena | Opcional. Si no se proporciona ningún valor para Consulta “Elección del |
Cadena | Opcional. |
A continuación, se muestra un evento Search
estándar. Se recomienda proporcionar entre cinco y diez artículos en content_ids
de los resultados principales de la búsqueda.
<!-- Facebook Pixel Code --> <script> !function(f,b,e,v,n,t,s){if(f.fbq)return;n=f.fbq=function(){n.callMethod? n.callMethod.apply(n,arguments):n.queue.push(arguments)};if(!f._fbq)f._fbq=n; n.push=n;n.loaded=!0;n.version='2.0';n.queue=[];t=b.createElement(e);t.async=!0; t.src=v;s=b.getElementsByTagName(e)[0];s.parentNode.insertBefore(t,s)}(window, document,'script','https://connect.facebook.net/en_US/fbevents.js'); // Insert Your Facebook Pixel ID below. fbq('init', '<FB_PIXEL_ID>'); fbq('track', 'PageView'); fbq('track', 'Search', { search_string: 'leather sandals', content_ids: ['1234', '2424', '1318', '6832'], // top 5-10 search results content_type: 'product' }); </script> <!-- End Facebook Pixel Code -->
A continuación, se muestra un evento ViewCategory
. Se recomienda proporcionar entre cinco y diez artículos en content_ids
de los resultados principales. Ten en cuenta que ViewCategory
no es un evento estándar y que, por este motivo, se usa la función trackCustom
.
<!-- Facebook Pixel Code --> <script> !function(f,b,e,v,n,t,s){if(f.fbq)return;n=f.fbq=function(){n.callMethod? n.callMethod.apply(n,arguments):n.queue.push(arguments)};if(!f._fbq)f._fbq=n; n.push=n;n.loaded=!0;n.version='2.0';n.queue=[];t=b.createElement(e);t.async=!0; t.src=v;s=b.getElementsByTagName(e)[0];s.parentNode.insertBefore(t,s)}(window, document,'script','https://connect.facebook.net/en_US/fbevents.js'); // Insert Your Facebook Pixel ID below. fbq('init', '<FB_PIXEL_ID>'); fbq('track', 'PageView'); fbq('trackCustom', 'ViewCategory', { content_name: 'Really Fast Running Shoes', content_category: 'Apparel & Accessories > Shoes', content_ids: ['1234', '2424', '1318', '6832'], // top 5-10 results content_type: 'product' }); </script> <!-- End Facebook Pixel Code -->
A continuación, se muestra un evento ViewContent
estándar. Para obtener más información sobre la configuración del píxel, consulta Píxel de Meta.
<!-- Facebook Pixel Code --> <script> !function(f,b,e,v,n,t,s){if(f.fbq)return;n=f.fbq=function(){n.callMethod? n.callMethod.apply(n,arguments):n.queue.push(arguments)};if(!f._fbq)f._fbq=n; n.push=n;n.loaded=!0;n.version='2.0';n.queue=[];t=b.createElement(e);t.async=!0; t.src=v;s=b.getElementsByTagName(e)[0];s.parentNode.insertBefore(t,s)}(window, document,'script','https://connect.facebook.net/en_US/fbevents.js'); // Insert Your Facebook Pixel ID below. fbq('init', '<FB_PIXEL_ID>'); fbq('track', 'PageView'); fbq('track', 'ViewContent', { content_ids: ['1234'], content_type: 'product', value: 0.50, currency: 'USD' }); </script> <!-- End Facebook Pixel Code -->
Un evento AddToCart
estándar depende de cómo gestione tu plataforma de comercio electrónico la adición de un artículo al carrito. Si se lleva a cabo de forma dinámica, debería colocarse en un controlador de evento onclick
para que se active cuando se haga clic en el botón. Si se carga una página diferente, el evento del píxel se puede activar de manera normal.
<!-- Facebook Pixel Code --> <script> !function(f,b,e,v,n,t,s){if(f.fbq)return;n=f.fbq=function(){n.callMethod? n.callMethod.apply(n,arguments):n.queue.push(arguments)};if(!f._fbq)f._fbq=n; n.push=n;n.loaded=!0;n.version='2.0';n.queue=[];t=b.createElement(e);t.async=!0; t.src=v;s=b.getElementsByTagName(e)[0];s.parentNode.insertBefore(t,s)}(window, document,'script','https://connect.facebook.net/en_US/fbevents.js'); // Insert Your Facebook Pixel ID below. fbq('init', '<FB_PIXEL_ID>'); fbq('track', 'PageView'); // If you have a separate add to cart page that is loaded. fbq('track', 'AddToCart', { content_ids: ['1234', '1853', '9386'], content_type: 'product', value: 3.50, currency: 'USD' }); </script> <!-- End Facebook Pixel Code -->
Si el evento debe activarse con el clic de un botón y no se carga ninguna página diferente:
<!-- The below method uses jQuery, but that is not required --> <button id="addToCartButton">Add To Cart</button> <!-- Add event to the button's click handler --> <script type="text/javascript"> $( '#addToCartButton' ).click(function() { fbq('track', 'AddToCart', { content_ids: ['1234'], content_type: 'product', value: 2.99, currency: 'USD' }); }); </script>
Un evento Purchase
estándar con dos artículos con la cantidad:
<!-- Facebook Pixel Code --> <script> !function(f,b,e,v,n,t,s){if(f.fbq)return;n=f.fbq=function(){n.callMethod? n.callMethod.apply(n,arguments):n.queue.push(arguments)};if(!f._fbq)f._fbq=n; n.push=n;n.loaded=!0;n.version='2.0';n.queue=[];t=b.createElement(e);t.async=!0; t.src=v;s=b.getElementsByTagName(e)[0];s.parentNode.insertBefore(t,s)}(window, document,'script','https://connect.facebook.net/en_US/fbevents.js'); // Insert Your Facebook Pixel ID below. fbq('init', '<FB_PIXEL_ID>'); fbq('track', 'PageView'); fbq('track', 'Purchase', { contents: [ {'id': '1234', 'quantity': 2}, {'id': '4642', 'quantity': 1} ], content_type: 'product', value: 21.97, currency: 'USD' }); </script> <!-- End Facebook Pixel Code -->
Un evento Purchase
estándar con dos artículos:
<!-- Facebook Pixel Code --> <script> !function(f,b,e,v,n,t,s){if(f.fbq)return;n=f.fbq=function(){n.callMethod? n.callMethod.apply(n,arguments):n.queue.push(arguments)};if(!f._fbq)f._fbq=n; n.push=n;n.loaded=!0;n.version='2.0';n.queue=[];t=b.createElement(e);t.async=!0; t.src=v;s=b.getElementsByTagName(e)[0];s.parentNode.insertBefore(t,s)}(window, document,'script','https://connect.facebook.net/en_US/fbevents.js'); // Insert Your Facebook Pixel ID below. fbq('init', '<FB_PIXEL_ID>'); fbq('track', 'PageView'); fbq('track', 'Purchase', { content_ids: ['1234', '4642'], content_type: 'product', value: 21.97, currency: 'USD' }); </script> <!-- End Facebook Pixel Code -->
content_type
correctoNota:fb_content_type
es el tipo de contenido para móviles.
Si la página trata sobre un SKU específico (talla específica, color específico, etc.), usa product
para content_type
y pasa los identificadores de productos (es decir, la columna id
de la lista de productos) en content_ids
. Todos los eventos AddToCart
y Purchase
deben usar content_type=product
porque los usuarios compran productos específicos. Los usuarios no compran una camisa amorfa en una talla y un color indeterminados, sino que adquieren una camisa específica en una talla y un color concretos.
Si la página trata sobre un grupo de productos relacionados que varían según la talla, el color, etc., pero pertenecen al mismo grupo de productos, usa product_group
y pasa los identificadores del grupo de productos (es decir, la columna item_group_id
de la lista de productos) en content_ids
. Un caso de uso habitual es una página ViewContent
en la que el usuario todavía no ha elegido la talla. No usesproduct_group
con AddToCart
ni Purchase
.
Es importante que content_type
coincida con el tipo de identificadores incluidos en el parámetro content_ids
o contents
.
Si pasas los identificadores de productos específicos (content_type=product
), Meta podrá recomendar más productos relevantes, porque sabrá en qué variante concreta (talla, color, etc.) mostró interés el usuario. Siempre mostraremos productos (no grupos de productos), incluso aunque sea content_type=product_group
.
Si no se proporciona ningún valor para content_type
, Meta hará coincidir el evento con todos los artículos que tengan el mismo identificador, independientemente del tipo. Se recomienda enviar content_type
, ya que te dará más control sobre qué identificador específico quieres que coincida con el evento.
Debes asociar los orígenes del evento a cada uno de tus catálogos de productos para que Facebook pueda obtener estos datos y mostrar el producto correcto en un anuncio. Para ello, visita la página del catálogo de Business Manager y haz clic en el botón Asociar origen del evento. Asegúrate de seleccionar la aplicación y el píxel que recibirán los eventos de anuncios de catálogo de Advantage+.
Otra opción es realizar una llamada POST
a la API con una lista de los orígenes de evento externos como parámetros de una cadena de consulta codificada en UTF-8:
use FacebookAds\Object\ProductCatalog;
$product_catalog = new ProductCatalog(<PRODUCT_CATALOG_ID>);
$product_catalog->createExternalEventSource(array(), array(
'external_event_sources' => array(
<PIXEL_ID>,
<APP_ID>,
),
));
from facebookads.adobjects.productcatalog import ProductCatalog
product_catalog = ProductCatalog(<PRODUCT_CATALOG_ID>)
product_catalog.add_external_event_sources([
<PIXEL_ID>,
<APP_ID>,
])
curl \
-F 'external_event_sources=["<PIXEL_ID>","<APP_ID>"]' \
-F 'access_token=<ACCESS_TOKEN>' \
https://graph.facebook.com/v2.11/<PRODUCT_CATALOG_ID>/external_event_sources
Nota: Debes contar con permisos para el catálogo, el píxel y la aplicación, así como para la empresa.
Nombre | Descripción |
---|---|
| Obligatorio. |
El siguiente paso es crear audiencias de productos en función de la actividad de las aplicaciones para móviles y el sitio web. Puedes seleccionar los eventos que quieres usar y segmentar los anuncios mediante las audiencias de productos.
Para los eventos de la aplicación estándar, la audiencia se agregará bajo los nombres de evento del píxel de anuncios:
Search
ViewContent
AddToCart
Purchase
Usa estos nombres de evento en las reglas de la audiencia, aunque incluya usuarios de Android e iOS.
Para crear una audiencia de productos, realiza una llamada POST
a la API al extremo /act_{ad-account-id}/product_audiences
.
https://graph.facebook.com/v21.0
/act_AD_ACCOUNT_ID/product_audiences
Nombre | Descripción |
---|---|
Cadena | Obligatorio. |
Cadena | Opcional. |
cadena numérica | Obligatorio. Conjunto de productos al que se va a dirigir esta audiencia. |
Objeto JSON | Obligatorio. |
Entero | Obligatorio. |
Objeto[] | Obligatorio. |
objeto JSON | Opcional. |
Entero | Obligatorio si se especifica la exclusión. |
Objeto[] | Obligatorio si se especifica la exclusión. |
Cada regla debe incluir event
con el operador eq
, ya sea como una regla de nivel superior o como parte de una regla and
de nivel superior.
Si se usa el mismo event
en las inclusiones y las exclusiones, cualquier comprobación adicional de parámetros deberá ser exactamente la misma.
Para crear una audiencia dirigida a personas que han visualizado o añadido productos a un carrito, pero que no los han comprado:
curl -X POST \
-F 'name="Test Product Audience"' \
-F 'product_set_id="<PRODUCT_SET_ID>"' \
-F 'inclusions=[
{
"retention_seconds": 86400,
"rule": {
"event": {
"eq": "AddToCart"
}
}
},
{
"retention_seconds": 72000,
"rule": {
"event": {
"eq": "ViewContent"
}
}
}
]' \
-F 'exclusions=[
{
"retention_seconds": 172800,
"rule": {
"event": {
"eq": "Purchase"
}
}
}
]' \
-F 'access_token=<ACCESS_TOKEN>' \
https://graph.facebook.com/v21.0/act_<AD_ACCOUNT_ID>/product_audiences
Si quieres dirigirte a personas que han visualizado un producto en la web con un iPhone, pero no lo han comprado en ningún dispositivo, crea la audiencia que se indica a continuación.
Esto supone que incluyes el parámetro userAgent
en el píxel de Meta.
curl -X POST \
-F 'name="Test Iphone Product Audience"' \
-F 'product_set_id="<PRODUCT_SET_ID>"' \
-F 'inclusions=[
{
"retention_seconds": 86400,
"rule": {
"and": [
{
"event": {
"eq": "AddToCart"
}
},
{
"userAgent": {
"i_contains": "iPhone"
}
}
]
}
}
]' \
-F 'exclusions=[
{
"retention_seconds": 172800,
"rule": {
"event": {
"eq": "Purchase"
}
}
}
]' \
-F 'access_token=<ACCESS_TOKEN>' \
https://graph.facebook.com/v21.0/act_<AD_ACCOUNT_ID>/product_audiences
Cuando crees una audiencia de un producto, puedes recuperarla con la API de audiencias personalizadas. Puedes obtener los parámetros originales utilizados para la creación de la audiencia con el parámetro data_source
.
Una audiencia de un producto es un tipo específico de audiencia personalizada que se genera de forma dinámica a partir de los eventos de productos. El extremo act_{ad-account-id}/product_audiences
es un extremo POST
especial para crear estas audiencias.
Para recuperar una audiencia personalizada:
curl -X GET \
-d 'fields="data_source,subtype"' \
-d 'access_token=<ACCESS_TOKEN>' \
https://graph.facebook.com/v21.0/act_<AD_ACCOUNT_ID>/customaudiences
Para recuperar una audiencia de un producto específico:
use FacebookAds\Object\ProductAudience;
$product_audience = new ProductAudience(<PRODUCT_AUDIENCE_ID>);
$product_audience->read();
from facebookads.objects import ProductAudience
product_audience = ProductAudience(<PRODUCT_AUDIENCE_ID>)
product_audience.remote_read()
CustomAudience customAudience2 = new CustomAudience(<PRODUCT_AUDIENCE_ID>, context).get()
.execute();
curl -G \
-d 'access_token=<ACCESS_TOKEN>' \
https://graph.facebook.com/v2.11/<PRODUCT_AUDIENCE_ID>