Audiences de produits dynamiques

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 :

Étape 1 : Configurer des signaux utilisateur pour les évènements

Pour collecter des signaux utilisateur, utilisez les App Events (pour votre app 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.

App Events pour mobile

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

Rechercher

FBSDKAppEventNameSearched

EVENT_NAME_SEARCHED

Afficher le contenu

FBSDKAppEventNameViewedContent

EVENT_NAME_VIEWED_CONTENT

Ajouter au panier

FBSDKAppEventNameAddedToCart

EVENT_NAME_ADDED_TO_CART

Acheter

// Envoyer via logPurchase
[FBSDKAppEvents logPurchase:(double) currency:(NSString *) parameters:(NSDictionary *)];

EVENT_NAME_PURCHASED

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.

Exemples

Évènement d’ajout au panier sur iOS :

[FBSDKAppEvents 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 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.

Utilisation d’un Partenaire de mesure mobile

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+ :

NomDescription

fb_mobile_search

Une personne recherche des produits

fb_mobile_content_view

Un compte d’Espace Comptes consulte un produit

fb_mobile_add_to_cart

Une personne ajoute un article au panier

fb_mobile_purchase

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 :

NomDescription

fb_content_id

chaîne

Le paramètre fb_content_id ou fb_content est obligatoire.
Identifiant(s) de produit ou de groupe de produits du détaillant. Doit être une chaîne contenant une matrice d’ID encodée en JSON. Si possible, utiliser des ID de produit pour un ciblage plus précis.

fb_content

chaîne

Le paramètre fb_content_id ou fb_content est obligatoire.
Liste d’objets JSON contenant le numéro d’article international (EAN), le cas échéant, ou tout autre identifiant de produit ou de contenu, ainsi que les quantités et les prix des produits.


Les champs id et quantity sont obligatoires.
Exemple :
"[{\"id\": \"1234\", \"quantity\": 2}, {\"id\": \"5678\", \"quantity\": 1}]"

fb_content_type

chaîne

Facultatif.
Soit product, soit product_group, et doit être synchronisé avec le type d’ID utilisé dans fb_content_id.


En l’absence de fb_content_type, Meta établit une correspondance entre l’évènement et chaque élément avec un ID identique, quel que soit son type.


Pour en savoir plus, consultez : Choisir le bon content_type.

_valueToSum

chaîne

Facultatif.
Valeur totale des produits.

fb_currency

chaîne

Facultatif.
Devise du produit ou montant de l’achat.

Remarque : nous vous conseillons d’envoyer les paramètres _valueToSum et fb_currency lorsqu’un achat est effectué.

Utilisation du Pixel Meta pour les sites web

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 :

NomDescription

content_ids

chaîne ou chaîne[]

Le paramètre fb_content_ids ou fb_contents est obligatoire.
ID des produits ou des groupes de produits du retailer. Si possible, utiliser des ID de produit pour un ciblage plus précis.

contents

objet[]

Le paramètre content_ids ou contents est obligatoire.
Liste d'objets JSON contenant les ID des produits ou des groupes de produits du retailer ainsi que des informations supplémentaires sur les produits.


Les champs id et quantity sont obligatoires.
Exemple :. [{"id": "1234", "quantity": 2}, {"id": "5678", "quantity": 1}]

content_type

chaîne

Facultatif.
Soit product, soit product_group, et doit être synchronisé avec le type d’ID utilisé dans content_ids.


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.


Pour en savoir plus, consultez : Choisir le bon content_type.

product_catalog_id

chaîne

Facultatif.
Catalogue de produits à utiliser. Si ce champ est renseigné, seul ce catalogue sera associé aux déclenchements du pixel. Si ce champ n'est pas renseigné, le ou les catalogues associés à votre pixel seront utilisés.
Pour en savoir plus, voir Associer les signaux utilisateur au catalogue produits.

Exemples

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 &amp; 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 -->

Choisir le bon paramètre 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.

Étape 2 : Associer les signaux utilisateur au catalogue produits

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.

Paramètres

NomDescription

external_event_sources

Obligatoire.
Ensemble d'ID d'applications et de pixels à associer, sous forme de paramètres de chaîne de requête codés en UTF-8

Étape 3 : Créer des audiences produits

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/v19.0/act_AD_ACCOUNT_ID/product_audiences

Paramètres

NomDescription

name

chaîne

Obligatoire.
Nom de l’audience.

description

chaîne

Facultatif.
Description de l’audience.

product_set_id

chaîne numérique

Obligatoire. Ensemble de produits devant cibler cette audience.

inclusions

Objet JSON

Obligatoire.
Ensemble d’évènements à cibler. Au moins une inclusion est requise. Chacune doit contenir exactement un évènement.

inclusions.retention_seconds

entier

Obligatoire.
Durée (en secondes) de rétention d’un compte d’Espace Comptes dans l’audience.

inclusions.rule

objet[]

Obligatoire.
Règle d’audience personnalisée de site web référençant un attribut event.

exclusions

objet JSON

Facultatif.
Évènements pour lesquels un compte d’Espace Comptes doit être exclu du ciblage.
Un compte d’Espace Comptes déclenchant l’un de ces évènements est exclu du ciblage si l’évènement concerne un produit du même groupe (produits qui ont le même item_group_id in dans le flux de produits).
Par exemple, une audience produits est définie pour inclure ViewContent et exclure les évènements d’achat. Un compte d’Espace Comptes consulte les produits A et B, et achète le produit B. Si le produit A et le produit B appartiennent au même groupe de produits, alors ce compte d’Espace Comptes est exclu de l’audience, car A et B sont simplement des variantes d’un même produit. Si les produits A et B ne font pas partie du même groupe de produits, le compte d’Espace Comptes restera dans l’audience car il a toujours un évènement ViewContent pour le produit A.

exclusions.retention_seconds

entier

Obligatoire, si l'exclusion est spécifiée.
Durée (en secondes) de conservation de l'exclusion.

exclusions.rule

objet[]

Obligatoire, si l'exclusion est spécifiée.
Règle d'audience personnalisée du site web référençant un event.

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.

Exemples

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/v19.0/act_<AD_ACCOUNT_ID>/product_audiences
'use strict'; const bizSdk = require('facebook-nodejs-business-sdk'); const AdAccount = bizSdk.AdAccount; const CustomAudience = bizSdk.CustomAudience; const access_token = '<ACCESS_TOKEN>'; const app_secret = '<APP_SECRET>'; const app_id = '<APP_ID>'; const id = '<AD_ACCOUNT_ID>'; const api = bizSdk.FacebookAdsApi.init(access_token); const showDebugingInfo = true; // Setting this to true shows more debugging info. if (showDebugingInfo) { api.setDebug(true); } const logApiCallResult = (apiCallName, data) => { console.log(apiCallName); if (showDebugingInfo) { console.log('Data:' + JSON.stringify(data)); } }; let fields, params; fields = [ ]; params = { 'name' : 'Test Product Audience', 'product_set_id' : '<productSetID>', 'inclusions' : [{'retention_seconds':86400,'rule':{'event':{'eq':'AddToCart'}}},{'retention_seconds':72000,'rule':{'event':{'eq':'ViewContent'}}}], 'exclusions' : [{'retention_seconds':172800,'rule':{'event':{'eq':'Purchase'}}}], }; const product_audiences = (new AdAccount(id)).createProductAudience( fields, params ); logApiCallResult('product_audiences api call complete.', product_audiences);
require __DIR__ . '/vendor/autoload.php'; use FacebookAds\Object\AdAccount; use FacebookAds\Object\CustomAudience; use FacebookAds\Api; use FacebookAds\Logger\CurlLogger; $access_token = '<ACCESS_TOKEN>'; $app_secret = '<APP_SECRET>'; $app_id = '<APP_ID>'; $id = '<AD_ACCOUNT_ID>'; $api = Api::init($app_id, $app_secret, $access_token); $api->setLogger(new CurlLogger()); $fields = array( ); $params = array( 'name' => 'Test Product Audience', 'product_set_id' => '<productSetID>', 'inclusions' => array(array('retention_seconds' => 86400,'rule' => array('event' => array('eq' => 'AddToCart'))),array('retention_seconds' => 72000,'rule' => array('event' => array('eq' => 'ViewContent')))), 'exclusions' => array(array('retention_seconds' => 172800,'rule' => array('event' => array('eq' => 'Purchase')))), ); echo json_encode((new AdAccount($id))->createProductAudience( $fields, $params )->exportAllData(), JSON_PRETTY_PRINT);
from facebook_business.adobjects.adaccount import AdAccount from facebook_business.adobjects.customaudience import CustomAudience from facebook_business.api import FacebookAdsApi access_token = '<ACCESS_TOKEN>' app_secret = '<APP_SECRET>' app_id = '<APP_ID>' id = '<AD_ACCOUNT_ID>' FacebookAdsApi.init(access_token=access_token) fields = [ ] params = { 'name': 'Test Product Audience', 'product_set_id': '<productSetID>', 'inclusions': [{'retention_seconds':86400,'rule':{'event':{'eq':'AddToCart'}}},{'retention_seconds':72000,'rule':{'event':{'eq':'ViewContent'}}}], 'exclusions': [{'retention_seconds':172800,'rule':{'event':{'eq':'Purchase'}}}], } print AdAccount(id).create_product_audience( fields=fields, params=params, )
import com.facebook.ads.sdk.*; import java.io.File; import java.util.Arrays; public class SAMPLE_CODE_EXAMPLE { public static void main (String args[]) throws APIException { String access_token = \"<ACCESS_TOKEN>\"; String app_secret = \"<APP_SECRET>\"; String app_id = \"<APP_ID>\"; String id = \"<AD_ACCOUNT_ID>\"; APIContext context = new APIContext(access_token).enableDebug(true); new AdAccount(id, context).createProductAudience() .setName(\"Test Product Audience\") .setProductSetId(\"<productSetID>\") .setInclusions(\"[{\\"retention_seconds\\":86400,\\"rule\\":{\\"event\\":{\\"eq\\":\\"AddToCart\\"}}},{\\"retention_seconds\\":72000,\\"rule\\":{\\"event\\":{\\"eq\\":\\"ViewContent\\"}}}]\") .setExclusions(\"[{\\"retention_seconds\\":172800,\\"rule\\":{\\"event\\":{\\"eq\\":\\"Purchase\\"}}}]\") .execute(); } }
require 'facebook_ads' access_token = '<ACCESS_TOKEN>' app_secret = '<APP_SECRET>' app_id = '<APP_ID>' id = '<AD_ACCOUNT_ID>' FacebookAds.configure do |config| config.access_token = access_token config.app_secret = app_secret end ad_account = FacebookAds::AdAccount.get(id) product_audiences = ad_account.product_audiences.create({ name: 'Test Product Audience', product_set_id: '<productSetID>', inclusions: [{'retention_seconds':86400,'rule':{'event':{'eq':'AddToCart'}}},{'retention_seconds':72000,'rule':{'event':{'eq':'ViewContent'}}}], exclusions: [{'retention_seconds':172800,'rule':{'event':{'eq':'Purchase'}}}], })

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/v19.0/act_<AD_ACCOUNT_ID>/product_audiences
'use strict'; const bizSdk = require('facebook-nodejs-business-sdk'); const AdAccount = bizSdk.AdAccount; const CustomAudience = bizSdk.CustomAudience; const access_token = '<ACCESS_TOKEN>'; const app_secret = '<APP_SECRET>'; const app_id = '<APP_ID>'; const id = '<AD_ACCOUNT_ID>'; const api = bizSdk.FacebookAdsApi.init(access_token); const showDebugingInfo = true; // Setting this to true shows more debugging info. if (showDebugingInfo) { api.setDebug(true); } const logApiCallResult = (apiCallName, data) => { console.log(apiCallName); if (showDebugingInfo) { console.log('Data:' + JSON.stringify(data)); } }; let fields, params; fields = [ ]; params = { 'name' : 'Test Iphone Product Audience', 'product_set_id' : '<productSetID>', 'inclusions' : [{'retention_seconds':86400,'rule':{'and':[{'event':{'eq':'AddToCart'}},{'userAgent':{'i_contains':'iPhone'}}]}}], 'exclusions' : [{'retention_seconds':172800,'rule':{'event':{'eq':'Purchase'}}}], }; const product_audiences = (new AdAccount(id)).createProductAudience( fields, params ); logApiCallResult('product_audiences api call complete.', product_audiences);
require __DIR__ . '/vendor/autoload.php'; use FacebookAds\Object\AdAccount; use FacebookAds\Object\CustomAudience; use FacebookAds\Api; use FacebookAds\Logger\CurlLogger; $access_token = '<ACCESS_TOKEN>'; $app_secret = '<APP_SECRET>'; $app_id = '<APP_ID>'; $id = '<AD_ACCOUNT_ID>'; $api = Api::init($app_id, $app_secret, $access_token); $api->setLogger(new CurlLogger()); $fields = array( ); $params = array( 'name' => 'Test Iphone Product Audience', 'product_set_id' => '<productSetID>', 'inclusions' => array(array('retention_seconds' => 86400,'rule' => array('and' => array(array('event' => array('eq' => 'AddToCart')),array('userAgent' => array('i_contains' => 'iPhone')))))), 'exclusions' => array(array('retention_seconds' => 172800,'rule' => array('event' => array('eq' => 'Purchase')))), ); echo json_encode((new AdAccount($id))->createProductAudience( $fields, $params )->exportAllData(), JSON_PRETTY_PRINT);
from facebook_business.adobjects.adaccount import AdAccount from facebook_business.adobjects.customaudience import CustomAudience from facebook_business.api import FacebookAdsApi access_token = '<ACCESS_TOKEN>' app_secret = '<APP_SECRET>' app_id = '<APP_ID>' id = '<AD_ACCOUNT_ID>' FacebookAdsApi.init(access_token=access_token) fields = [ ] params = { 'name': 'Test Iphone Product Audience', 'product_set_id': '<productSetID>', 'inclusions': [{'retention_seconds':86400,'rule':{'and':[{'event':{'eq':'AddToCart'}},{'userAgent':{'i_contains':'iPhone'}}]}}], 'exclusions': [{'retention_seconds':172800,'rule':{'event':{'eq':'Purchase'}}}], } print AdAccount(id).create_product_audience( fields=fields, params=params, )
import com.facebook.ads.sdk.*; import java.io.File; import java.util.Arrays; public class SAMPLE_CODE_EXAMPLE { public static void main (String args[]) throws APIException { String access_token = \"<ACCESS_TOKEN>\"; String app_secret = \"<APP_SECRET>\"; String app_id = \"<APP_ID>\"; String id = \"<AD_ACCOUNT_ID>\"; APIContext context = new APIContext(access_token).enableDebug(true); new AdAccount(id, context).createProductAudience() .setName(\"Test Iphone Product Audience\") .setProductSetId(\"<productSetID>\") .setInclusions(\"[{\\"retention_seconds\\":86400,\\"rule\\":{\\"and\\":[{\\"event\\":{\\"eq\\":\\"AddToCart\\"}},{\\"userAgent\\":{\\"i_contains\\":\\"iPhone\\"}}]}}]\") .setExclusions(\"[{\\"retention_seconds\\":172800,\\"rule\\":{\\"event\\":{\\"eq\\":\\"Purchase\\"}}}]\") .execute(); } }
require 'facebook_ads' access_token = '<ACCESS_TOKEN>' app_secret = '<APP_SECRET>' app_id = '<APP_ID>' id = '<AD_ACCOUNT_ID>' FacebookAds.configure do |config| config.access_token = access_token config.app_secret = app_secret end ad_account = FacebookAds::AdAccount.get(id) product_audiences = ad_account.product_audiences.create({ name: 'Test Iphone Product Audience', product_set_id: '<productSetID>', inclusions: [{'retention_seconds':86400,'rule':{'and':[{'event':{'eq':'AddToCart'}},{'userAgent':{'i_contains':'iPhone'}}]}}], exclusions: [{'retention_seconds':172800,'rule':{'event':{'eq':'Purchase'}}}], })

Récupérer les audiences produits

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.

Exemples

Récupérer une audience personnalisée :

curl -X GET \ -d 'fields="data_source,subtype"' \ -d 'access_token=<ACCESS_TOKEN>' \ https://graph.facebook.com/v19.0/act_<AD_ACCOUNT_ID>/customaudiences
'use strict'; const bizSdk = require('facebook-nodejs-business-sdk'); const AdAccount = bizSdk.AdAccount; const CustomAudience = bizSdk.CustomAudience; const access_token = '<ACCESS_TOKEN>'; const app_secret = '<APP_SECRET>'; const app_id = '<APP_ID>'; const id = '<AD_ACCOUNT_ID>'; const api = bizSdk.FacebookAdsApi.init(access_token); const showDebugingInfo = true; // Setting this to true shows more debugging info. if (showDebugingInfo) { api.setDebug(true); } const logApiCallResult = (apiCallName, data) => { console.log(apiCallName); if (showDebugingInfo) { console.log('Data:' + JSON.stringify(data)); } }; let fields, params; fields = [ 'data_source', 'subtype', ]; params = { }; const customaudiencess = (new AdAccount(id)).getCustomAudiences( fields, params ); logApiCallResult('customaudiencess api call complete.', customaudiencess);
require __DIR__ . '/vendor/autoload.php'; use FacebookAds\Object\AdAccount; use FacebookAds\Object\CustomAudience; use FacebookAds\Api; use FacebookAds\Logger\CurlLogger; $access_token = '<ACCESS_TOKEN>'; $app_secret = '<APP_SECRET>'; $app_id = '<APP_ID>'; $id = '<AD_ACCOUNT_ID>'; $api = Api::init($app_id, $app_secret, $access_token); $api->setLogger(new CurlLogger()); $fields = array( 'data_source', 'subtype', ); $params = array( ); echo json_encode((new AdAccount($id))->getCustomAudiences( $fields, $params )->getResponse()->getContent(), JSON_PRETTY_PRINT);
from facebook_business.adobjects.adaccount import AdAccount from facebook_business.adobjects.customaudience import CustomAudience from facebook_business.api import FacebookAdsApi access_token = '<ACCESS_TOKEN>' app_secret = '<APP_SECRET>' app_id = '<APP_ID>' id = '<AD_ACCOUNT_ID>' FacebookAdsApi.init(access_token=access_token) fields = [ 'data_source', 'subtype', ] params = { } print AdAccount(id).get_custom_audiences( fields=fields, params=params, )
import com.facebook.ads.sdk.*; import java.io.File; import java.util.Arrays; public class SAMPLE_CODE_EXAMPLE { public static void main (String args[]) throws APIException { String access_token = \"<ACCESS_TOKEN>\"; String app_secret = \"<APP_SECRET>\"; String app_id = \"<APP_ID>\"; String id = \"<AD_ACCOUNT_ID>\"; APIContext context = new APIContext(access_token).enableDebug(true); new AdAccount(id, context).getCustomAudiences() .requestField(\"data_source\") .requestField(\"subtype\") .execute(); } }
require 'facebook_ads' access_token = '<ACCESS_TOKEN>' app_secret = '<APP_SECRET>' app_id = '<APP_ID>' id = '<AD_ACCOUNT_ID>' FacebookAds.configure do |config| config.access_token = access_token config.app_secret = app_secret end ad_account = FacebookAds::AdAccount.get(id) customaudiencess = ad_account.customaudiences({ fields: { 'data_source''subtype' }, })

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>