Les publicités de catalogue Advantage+ vous permettent de diffuser des publicités en fonction des intentions d’achat de la personne concernée, tous appareils confondus. Vous pouvez recueillir des signaux d’intention à partir d’apps mobiles et de sites Web, puis exploiter ces données pour créer une audience et cibler des prospects.
Sommaire du document :
Pour collecter des signaux utilisateur·ice, utilisez les App Events (pour votre application mobile) ou un Pixel Meta pour votre site Web.
Si vous avez une application et que vous ne diffusez des publicités que sur ordinateur, vous devez néanmoins installer le SDK Facebook. Cela permet de capturer des signaux et d’élargir votre audience cible.
Vous devez ajouter les évènements suivants à votre application via le SDK Facebook pour iOS et Android :
Évènement | Évènement iOS | Évènement Android |
---|---|---|
Recherche |
|
|
Vue du contenu |
|
|
Ajout au panier |
|
|
Achat | // Envoyer via logPurchase |
|
Tous ces évènements doivent inclure un paramètre content_id
(ou un ensemble de paramètres JSON content_id
).
Contrairement au Pixel Meta, les évènements d’application n’utilisent aucun paramètre product_catalog_id
. Par conséquent, vous devez associer votre catalogue et votre application au point de terminaison external_event_sources
décrit ci-dessous.
Évènement d’ajout au panier sur iOS :
[[FBSDKAppEvents shared] logEvent:FBSDKAppEventNameAddedToCart valueToSum:54.23 parameters:@{ FBSDKAppEventParameterNameCurrency : @"USD", FBSDKAppEventParameterNameContentType : @"product", FBSDKAppEventParameterNameContentID : @"123456789" } ];
Exemple d’achat sur iOS avec deux articles différents achetés et dont la quantité est disponible :
[[FBSDKAppEvents shared] logPurchase:21.97 currency:@"USD" parameters:@{ FBSDKAppEventParameterNameContent : @"[{\"id\":\"1234\",\"quantity\":2},{\"id\":\"5678\",\"quantity\":1}]", FBSDKAppEventParameterNameContentType : @"product" } ];
Évènement d’achat sur Android avec deux articles achetés et dont la quantité est disponible :
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 );
Évènement d’achat sur Android avec deux articles achetés :
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 );
Notez que les paramètres CONTENT_ID
ou CONTENT
peuvent être utilisés avec les publicités de catalogue Advantage+ pour enregistrer les identifiants de produits. Le paramètre CONTENT
vous permettra de fournir des informations supplémentaires sur les produits.
Pour utiliser les publicités de catalogue Advantage+ avec un partenaire de mesure mobile (MMP), vous devez déclencher des évènements obligatoires distincts lorsqu’une personne utilise votre application. Les points d’interaction clés à suivre sont les suivants : lorsqu’une personne recherche des produits, consulte un produit, ajoute un produit au panier et achète des produits. Vous devez sélectionner les évènements MMP qui correspondent aux évènements standard suivants pour les publicités de catalogue Advantage+ :
Nom | Description |
---|---|
| Une personne recherche des produits |
| Un compte d’Espace Comptes consulte un produit |
| Une personne ajoute un article au panier |
| Un compte d’Espace Comptes achète un ou plusieurs articles |
Vous devez également définir deux paramètres supplémentaires pour que chacun des évènements soit correctement enregistré en tant qu’évènement de publicités de catalogue Advantage+. Ces paramètres représentent l’ID de l’article consulté, ajouté au panier ou acheté, et indiquent s’il s’agit d’un ID de produit ou d’un ID de groupe de produits. Les paramètres supplémentaires disponibles sont les suivants :
Nom | Description |
---|---|
chaîne | Le paramètre |
chaîne | Le paramètre Les champs |
chaîne | Facultatif. En l’absence de Pour en savoir plus, consultez : Choisir le bon |
chaîne | Facultatif. |
chaîne | Facultatif. |
Remarque : nous vous conseillons d’envoyer les paramètres _valueToSum
et fb_currency
lorsqu’un achat est effectué.
Les évènements suivants doivent être ajoutés à votre site Web, le cas échéant :
Search
ViewCategory
ViewContent
AddToCart
Purchase
Ces évènements doivent être transmis avec les paramètres de données suivants :
Nom | Description |
---|---|
chaîne ou chaîne[] | Le paramètre |
objet[] | Le paramètre Les champs |
chaîne | Facultatif. En l’absence de Pour en savoir plus, consultez : Choisir le bon |
chaîne | Facultatif. |
Vous trouverez un exemple d’évènement standard Search
ci-dessous. Nous vous recommandons d’indiquer entre 5 et 10 articles issus de vos meilleurs résultats de recherche dans le champ content_ids
.
<!-- 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 -->
Vous trouverez un exemple d’évènement ViewCategory
ci-dessous. Nous vous recommandons de fournir 5 à 10 articles issus de vos meilleurs résultats dans le champ content_ids
. Notez que ViewCategory
n’est pas un évènement standard. Par conséquent, la fonction trackCustom
est utilisée.
<!-- 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 -->
Vous trouverez un exemple d’évènement standard ViewContent
ci-dessous. Pour plus de détails sur la configuration du pixel, voir Pixel 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 -->
La configuration de l’évènement standard AddToCart
dépend de la manière dont votre plateforme d’e-commerce gère l’ajout d’articles au panier. S’il est effectué de manière dynamique, l’évènement doit être placé dans un gestionnaire d’évènements onclick
afin qu’il se déclenche lors du clic sur le bouton. Si une page distincte est chargée, l’évènement de pixel peut être déclenché normalement.
<!-- 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 l’évènement doit être déclenché par un clic sur le bouton et si aucune page distincte ne se charge :
<!-- 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>
Exemple d’évènement standard Purchase
avec deux articles dont la quantité est disponible :
<!-- 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 -->
Exemple d’évènement standard Purchase
avec deux articles :
<!-- 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
Remarque :fb_content_type
est le type de contenu pour mobile.
Si la page concerne un SKU spécifique (taille, couleur, etc.), utilisez product
en guise de content_type
et transmettez les ID de produits (colonne id
du fil de produits) dans content_ids
. Tous les évènements AddToCart
et Purchase
doivent utiliser content_type=product
, car les internautes achètent des produits spécifiques. Les internautes n’achètent pas des chemises informes d’une couleur et d’une taille indéterminées, mais des articles dans des coloris et des tailles spécifiques.
Si la page concerne un groupe de produits connexes dont les caractéristiques (taille, couleur, etc.) peuvent varier, mais qui appartiennent au même groupe de produits, utilisez product_group
, et transmettez les ID de groupes de produits (colonne item_group_id
du fil de produits) dans content_ids
. Exemple courant : une page ViewContent
sur laquelle l’utilisateur·ice n’a pas encore sélectionné la taille. N’utilisez pasproduct_group
avec AddToCart
ou Purchase
.
Il est important que le content_type
corresponde au type d’ID inclus dans le paramètre content_ids
ou contents
.
En transmettant des ID de produits spécifiques (content_type=product
), vous permettez à Meta de recommander à l’utilisateur·ice des produits plus pertinents, car le système connaît la variante spécifique (taille, couleur, etc.) qui l’intéresse. Nous afficherons toujours des produits (et non des groupes de produits), même si vous nous transmettez content_type=product_group
.
En l’absence de content_type
, Meta établit une correspondance entre l’évènement et chaque élément avec un ID identique, quel que soit son type. Il est recommandé d’envoyer content_type
, car cela vous permet de choisir l’ID à associer à l’évènement.
Vous devez associer vos sources d’évènements à chacun de vos catalogues produits afin que Facebook puisse récupérer ces données et afficher le bon produit dans une publicité. Pour ce faire, accédez à la page Catalogue de Business Manager et cliquez sur le bouton Associer la source de l’évènement. Assurez-vous de sélectionner l’application et le pixel qui recevront les évènements des publicités de catalogue Advantage+.
Sinon, vous pouvez effectuer un appel d’API POST
avec une liste de sources d’évènements externes en tant que paramètres de chaîne de requêtes codés 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
Remarque : vous devez disposer des autorisations adéquates sur le catalogue, le pixel, l’application et l’entreprise.
Nom | Description |
---|---|
| Obligatoire. |
L’étape suivante consiste à créer des audiences produits basées sur l’activité de votre site Web et de vos applications mobiles. Vous pouvez utiliser les évènements de votre choix et cibler vos publicités à l’aide de vos audiences produits.
Pour les évènements d’application standard, l’audience est agrégée sous les noms des évènements du pixel publicitaire :
Search
ViewContent
AddToCart
Purchase
Utilisez ces noms d’évènements dans vos règles d’audience, même si celles-ci incluent des utilisateurs et utilisatrices d’Android ou d’iOS.
Créez une audience produits en effectuant un appel API POST
vers le point de terminaison /act_{ad-account-id}/product_audiences
.
https://graph.facebook.com/v21.0
/act_AD_ACCOUNT_ID/product_audiences
Nom | Description |
---|---|
chaîne | Obligatoire. |
chaîne | Facultatif. |
chaîne numérique | Obligatoire. Ensemble de produits devant cibler cette audience. |
Objet JSON | Obligatoire. |
entier | Obligatoire. |
objet[] | Obligatoire. |
objet JSON | Facultatif. |
entier | Obligatoire, si l’exclusion est spécifiée. |
objet[] | Obligatoire, si l’exclusion est spécifiée. |
Chaque règle doit inclure un attribut event
avec l’opérateur eq
soit en tant que règle de niveau supérieur, soit en tant que partie d’une règle and
de niveau supérieur.
Si le même event
est utilisé dans les inclusions et les exclusions, tous les paramètres supplémentaires doivent être strictement identiques.
Pour créer une audience ciblant les personnes qui ont consulté des produits ou les ont ajoutés au panier, mais n’ont pas finalisé l’achat :
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 vous souhaitez cibler les personnes qui ont consulté un produit en ligne sur un iPhone, mais ne l’ont acheté sur aucun appareil, créez l’audience suivante.
Cela présuppose d’inclure un paramètre userAgent
dans votre Pixel 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
Une fois votre audience produits créée, vous pouvez la récupérer via l’API Custom Audiences. Vous pouvez obtenir les paramètres originaux utilisés pour créer l’audience avec le paramètre data_source
.
Une audience produits est un type spécifique d’audience personnalisée générée dynamiquement à partir d’évènements produits. Le point de terminaison act_{ad-account-id}/product_audiences
est un point de terminaison POST
spécialement utilisé pour créer ce type d’audience.
Récupérer une audience personnalisée :
curl -X GET \
-d 'fields="data_source,subtype"' \
-d 'access_token=<ACCESS_TOKEN>' \
https://graph.facebook.com/v21.0/act_<AD_ACCOUNT_ID>/customaudiences
Pour récupérer une audience produits spécifique :
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>