Dynamische Zielgruppen – Erstellen von Zielgruppen

Mit Dynamic Ads kannst du Personen Werbung zeigen, die auf ihrer geräteübergreifenden Kaufabsicht basiert. Du kannst Anzeichen für Absicht von mobilen Apps und Webseiten sammeln und diese Daten dazu verwenden, um eine Zielgruppe zu erstellen. So kannst du direkt auf potenzielle Kunden abzielen.

Ab 20. September 2018 wird subtype ab v3.0 der Marketing API für Zielgruppen für Webseiten, Apps, Custom Audiences für Interaktionen und Zielgruppen aus Offline-Conversion-Daten nicht mehr unterstützt. Die einzige Ausnahme besteht darin, dass subtype für Custom Audiences für Interaktionen für Video weiterhin unterstützt wird.

Im Folgenden wir die Vorgehensweise zur Erstellung einer Zielgruppe beschrieben:

Schritt 1: Benutzersignale für Events einrichten

Verwende App Events (für deine mobile App) oder Facebook-Pixel (für deine Webseite), um Benutzersignale zu erfassen:

Bei mobilen AppsBei Webseiten

Wenn du über eine App verfügst und Anzeigen nur auf Desktops ausführst, solltest du Facebook-SDK installieren. Somit kannst du Signale erfassen und deine Zielgruppe erweitern.

Verwende App Events bei mobilen Apps

Du musst die folgenden Events über Facebook-SDK für iOS und Android zu deiner App hinzufügen:

Veranstaltungen iOS Event Android Event

Suchen

FBSDKAppEventNameSearched

EVENT_NAME_SEARCHED

Content anzeigen

FBSDKAppEventNameViewedContent

EVENT_NAME_VIEWED_CONTENT

In den Einkaufswagen

FBSDKAppEventNameAddedToCart

EVENT_NAME_ADDED_TO_CART

Kauf

// Über logPurchase senden

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

EVENT_NAME_PURCHASED

Alle diese Events sollten einen Content-Typ und eine Content-ID (oder ein JSON-Array von Content-IDs) enthalten.

Anders als Facebook-Pixel verfügt App Events nicht über einen Parameter product_catalog_id. Deshalb musst du zwischen deinem Katalog und der App eine Verbindung herstellen, indem du den unten beschriebenen external_event_sources-Endpunkt verwendest.

Hier ein Beispiel für das Event „In den Einkaufswagen“ für iOS:

[FBSDKAppEvents logEvent:FBSDKAppEventNameAddedToCart
  valueToSum:54.23
  parameters:@{
    FBSDKAppEventParameterNameCurrency    : @"USD",
    FBSDKAppEventParameterNameContentType : @"product",
    FBSDKAppEventParameterNameContentID   : @"123456789"
  }
];

Ein Beispiel für das Event „Purchase“ für iOS mit zwei gekauften Artikeln unter Angabe von Menge:

[FBSDKAppEvents logPurchase:21.97
  currency:@"USD" 
  parameters:@{
    FBSDKAppEventParameterNameContent   : @"[{\"id\":\"1234\",\"quantity\":2},{\"id\":\"5678\",\"quantity\":1}]",
    FBSDKAppEventParameterNameContentType : @"product"
  }
];

Ein Beispiel für das Event „Purchase“ für Android mit zwei gekauften Artikeln unter Angabe von Menge:

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
);

Ein Beispiel für das Event „Purchase“ für Android mit zwei gekauften Artikeln:

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
);

Zur Meldung von Produkt-IDs kannst du entweder CONTENT_ID oder CONTENT mit Dynamic Ads verwenden. Der Parameter CONTENT ermöglicht die Eingabe zusätzlicher Informationen über die Produkte.

Verwendung eines Mobile Measurement Partner

Wenn du Dynamic Ads mit einem Mobile Measurement Partner (MMP) verwenden möchtest, solltest du die erforderlichen getrennten Events auslösen, wenn jemand deine App benutzt. Die wichtigsten Punkte der Interaktion, die du verfolgen solltest, sind Folgende: Wenn jemand nach Produkten sucht, ein Produkt anzeigt, Artikel zum Einkaufswagen hinzufügt und Artikel kauft. Du solltest die Events deines MMP auswählen, die mit den folgenden standardmäßigen Dynamic Ad Events übereinstimmen:

Event-Name Beschreibung

fb_mobile_search

Jemand sucht nach Produkten.

fb_mobile_content_view

Wenn eine Person ein Produkt anzeigt.

fb_mobile_add_to_cart

Jemand legt einen Artikel in den Einkaufswagen.

fb_mobile_purchase

Eine Person kauft einen oder mehrere Artikel.

Außerdem benötigst du zwei zusätzliche Parameter für jedes der Events, damit das Event erfolgreich als gültiges Dynamic Ad Event registriert wird. Diese beiden Parameter entsprechen der ID des Artikels, der angezeigt, zum Einkaufswagen hinzugefügt oder gekauft wird, und zeigen an, ob die ID zu einem einzelnen Produkt oder zu einer Produktgruppe gehört. Die verfügbaren zusätzlichen Parameter sind die Folgenden:

Feldname Beschreibung Typ Erforderlich

fb_content_id

Die ID des Produkts/der Produktgruppe des Einzelhändlers. Dabei sollte es sich um einen String mit einem im JSON-Format verschlüsselten Array von IDs handeln. Verwende nach Möglichkeit Produkt-IDs für ein genaueres Targeting.

string

Ja. Es ist entweder fb_content_id oder fb_content erforderlich.

fb_content

Eine Liste mit JSON-Objekten, die die internationale Artikelnummer (EAN) oder andere Produkt- oder Inhalts-ID(s) sowie Mengen und Preise der Produkte enthält. id und quantity sind erforderliche Felder, z. B. „[{\"id\": \"1234\", \"quantity\": 2}, {\"id\": \"5678\", \"quantity\": 1}]“.

string

Ja. Es ist entweder fb_content_id oder fb_content erforderlich.

fb_content_type

entweder 'product' oder 'product_group', der mit dem ID-Typ synchronisiert werden muss, der als fb_content_id verwendet wird. Mehr dazu erfährst du unter „Auswählen des richtigen content_type.

string

Ja

_valueToSum

Der Gesamtwert der Produkte

string

Nein

fb_currency

Die Währung des Produkts oder Kaufbetrags

string

Nein

Die Parameter _valueToSum und fb_currency sollten beim Tätigen eines Kaufs gesendet werden.

Verwende für Webseiten Facebook-Pixel

Du musst ggf. folgende Events zu deiner Webseite hinzufügen:

  • Search
  • ViewCategory
  • ViewContent
  • AddToCart
  • Purchase

Diese Events müssen zusammen mit den folgenden Datenparametern gesendet werden:

Feldname Beschreibung Typ Erforderlich

content_ids

Die ID des Produkts/der Produktgruppe des Einzelhändlers. Verwende nach Möglichkeit Produkt-IDs für ein genaueres Targeting.

string oder string[]

Ja. Es ist entweder content_ids oder contents erforderlich.

contents

Eine Liste von JSON-Objekten mit den IDs der Produkte oder Produktgruppen des Händlers sowie mit zusätzlichen Informationen über die Produkte. Erforderliche Felder sind „id“ und „quantity“, z. B. [{"id": "1234", "quantity": 2}, {"id": "5678", "quantity": 1}].

object[]

Ja. Es ist entweder content_ids oder contents erforderlich.

content_type

entweder 'product' oder 'product_group', der mit dem ID-Typ synchronisiert werden muss, der als content_ids verwendet wird. Mehr dazu erfährst du unter „Auswählen des richtigen content_type.

string

Ja

product_catalog_id

Ein zu verwendender Produktkatalog. Wenn ein Katalog bereitgestellt wird, ist dies der einzige Katalog, dem Feueraktionen des Pixels zugewiesen werden. Anderenfalls werden die Kataloge verwendet, die deinem Pixel zugeordnet sind. Mehr dazu erfährst du unter „Benutzersignale zu Produktkatalog zuordnen“.

string

Nein

Weitere Informationen zur Festlegung von Events und Parametern findest du unter „Remarketing von Events“, siehe Tag-API-Dokumentation.

Ein Beispiel eines Standard-Events Search ist unten aufgeführt. Wir empfehlen, dass du in content_ids 5 bis 10 Artikel aus der Liste deiner besten Suchergebnisse bereitstellst.

<!-- 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 -->

Ein Beispiel eines Events ViewCategory ist unten aufgeführt. Wir empfehlen, dass du 5 bis 10 Artikel in content_ids aus der Liste deiner besten Ergebnisse bereitstellst. Beachte, dass ViewCategory kein Standard-Event ist, deshalb wird die Funktion trackCustom eingesetzt.

<!-- 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 -->

Ein Beispiel eines Standard-Events ViewContent ist unten aufgeführt. Weitere Informationen zum Pixel-Setup findest du unter Facebook-Pixel.

<!-- 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 -->

Das Beispiel eines Standard-Events AddToCart richtet sich danach, wie deine E-Commerce-Plattform mit dem Hinzufügen eines Artikels zum Einkaufswagen umgeht. Wenn der Vorgang dynamisch abläuft, sollte das Event in einem Event-Handler onclick platziert werden, damit es beim Klicken auf einen Button ausgelöst wird. Beim Laden einer neuen Seite kann das Pixel-Event wie ein normales Event feuern.

<!-- 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 -->

Wenn das Event beim Klicken auf einen Button feuern soll und es keine neue Seite gibt, die geladen wird:

<!-- 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>

Ein Beispiel eines Standard-Events Purchase mit zwei Artikeln unter Angabe von Menge:

<!-- 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 -->

Ein Beispiel eines Standard-Events Purchase mit zwei Artikeln:

<!-- 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 -->

Auswählen des richtigen content_type (fb_content_type für mobile Anwendungen)

Wenn auf der Seite eine bestimmte SKU aufgeführt ist (bestimmte Größe, Farbe usw.), dann verwende product als content_type und übergebe die Produkt-IDs (id-Spalte im Produkt-Feed) an content_ids. ALLE AddToCart- und Purchase-Events sollten content_type=product verwenden, da Menschen nun einmal kein beliebiges Hemd in irgendeiner Größe und Farbe kaufen, sondern ein bestimmtes Hemd in einer bestimmten Größe und einer bestimmten Farbe.

Wenn auf der Seite eine bestimmte Gruppe ähnlicher Produkte aufgeführt ist, die sich durch die Größe, Farbe usw. unterscheiden, jedoch zu derselben Produktgruppe gehören, dann verwende product_group und übergebe die Produktgruppen-IDs (item_group_id-Spalte im Produkt-Feed) in content_ids. Ein häufiger Anwendungsfall ist eine ViewContent-Seite, auf der der Benutzer noch keine Größe ausgewählt hat. Verwende product_group NICHT zusammen mit AddToCart oder Purchase.

Es ist wichtig, dass content_type mit dem Typ der ID oder der IDs im Parameter content_ids oder contents übereinstimmt.

Die Übergabe der spezifischen Produkt-IDs (content_type=product) ermöglicht Facebook, relevantere Produkte zu empfehlen, da Facebook bekannt ist, für welche speziellen Varianten (Größe, Farbe usw.) sich der Benutzer interessiert. Beachte, dass es keine Auswirkungen auf die Empfehlungslogik hat, welchen content_type du übergibst. Wir zeigen immer Produkte (und keine Produktgruppen) an, auch nicht für content_type=product_group.

Schritt 2: Benutzersignale zu Produktkatalog zuordnen

Referenzdokumentation

Du musst als Nächstes deine Event-Quellen deinen Produktkatalogen zuweisen, damit Facebook diese Daten erfassen und in einer Anzeige das richtige Produkt abbilden kann. Besuche hierzu die Katalogseite des Business Manager und klicke auf den Button Associate Event Source. Wähle die App und das Pixel aus, die die Dynamic Ad Events empfangen werden.

Du kannst auch einen HTTP POST mit einer Liste externer Event-Quellen als UTF-8-codierte Abfrage-String-Parameter erstellen:

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

Du benötigst Berechtigungen für den Katalog, das Pixel und die App sowie für das Unternehmen.

Lege beim Durchführen des API-Aufrufs die folgenden Parameter fest:

Feldname Beschreibung Typ Erforderlich

external_event_sources

App und Pixel-IDs für die Zuweisung als UTF-8-codierte Abfrage-String-Parameter bei der Erstellung eines POST

An array of App and Pixel IDs to add

ja

Schritt 3: Produktzielgruppe erstellen

Referenzdokumentation

Im nächsten Schritt erstellst du Produktzielgruppen basierend auf Aktivitäten in deinen mobilen Apps und auf deiner Webseite. Du kannst angeben, welche Events verwendet werden sollen und Werbeanzeigen mit deinen Produktzielgruppen gezielt schalten.

Bei standardmäßigen App Events wird die Zielgruppe unter den Event-Namen der Pixel mit Werbeanzeigen zusammengefasst:

  • Search
  • ViewContent
  • AddToCart
  • Purchase

Verwende diese Event-Namen in deinen Zielgruppenregeln, auch wenn hierbei Benutzer von Android und iOS eingeschlossen werden.

Erstelle eine Produktzielgruppe, indem du einen HTTP POST-Aufruf an folgende Adresse sendest:

https://graph.facebook.com/<API_VERSION>/act_<AD_ACCOUNT_ID>/product_audiences

Lege die folgenden Parameter fest:

Feldname Beschreibung Typ Erforderlich

name

Der Name der Zielgruppe

string

Ja

description

Eine Beschreibung der Zielgruppe

string

Nein

product_set_id

Die Produktpalette, mit der du dich an diese Zielgruppe richten möchtest

numeric string

Ja

inclusions

Eine Reihe von Events, auf die du abzielen möchtest. Es ist mindestens ein Einschluss erforderlich. Jeder Einschluss sollte aus genau einem Event bestehen.

JSON object

Ja

inclusions.retention_seconds

Die Anzahl der Sekunden, die die Person in der Zielgruppe gehalten werden soll

int

Ja

inclusions.rule

Regel für Webseiten-Custom Audience mit Bezug auf ein event

object[]

Ja

exclusions

Events, bei denen eine Person vom Targeting ausgeschlossen werden soll. Im Falle von Ausschlüssen wird eine Person mit diesen Events vom Targeting ausgeschlossen, wenn das Event für ein beliebiges Produkt in derselben Produktgruppe (d. h. Produkte, die im Produkt-Feed dieselbe item_group_id aufweisen) eingetreten ist. Beispiel: Die Produktzielgruppe wird so eingestellt, dass sie das Event ViewContent einschließt und das Event „Purchase“ ausschließt. Eine Person zeigt Produkt A und B an und kauft Produkt B. Wenn Produkt A und Produkt B zur selben Produktgruppe gehören, wird diese Person aus der Produktzielgruppe ausgeschlossen, da es sich bei A und B um Varianten handelt. Wenn Produkt A und B nicht zur selben Produktgruppe gehören, bleibt die Person weiterhin in der Zielgruppe, da sie noch immer über ein ViewContent-Event für Produkt A verfügt.

JSON object

Nein

exclusions.retention_seconds

Die Anzahl der Sekunden, die der Ausschluss beibehalten wird

int

Ja, wenn ein Ausschluss festgelegt wird

exclusions.rule

Regel für Webseiten-Custom Audience mit Bezug auf ein event

object[]

Ja, wenn ein Ausschluss festgelegt wird

Beachte, dass jede Regel ein event mit einem Operator eq entweder als übergeordnete Regel oder als Teil einer übergeordneten and-Regel enthalten muss.

Beachte, dass bei Verwendung desselben event in Einschlüssen und Ausschlüssen alle zusätzlichen Parameterprüfungen genau gleich sein müssen.

Erstelle beispielsweise für das Targeting von Personen, die Produkte angezeigt oder zum Einkaufwagen hinzugefügt, sie aber nicht gekauft haben, folgende Zielgruppe:

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/v5.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'}}}], })

Wenn du deine Anzeigen an Personen richten möchtest, die ein Produkt im Web über ihr iPhone angezeigt, es jedoch auf keinem Gerät gekauft haben, erstelle die folgende, unten aufgeführte Zielgruppe.

Dies setzt voraus, dass du einen userAgent-Parameter in deinen Facebook-Pixel einfügst:

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/v5.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'}}}], })

Abrufen von Produktzielgruppen

Sobald du eine Produktzielgruppe erstellt hast, kannst du sie über die Custom Audiences API abrufen. Siehe Erstellen von Custom Audiences. Du kannst die ursprünglich für die Erstellung von Zielgruppen verwendeten Parameter über den Parameter data_source abrufen.

Eine Produktzielgruppe ist eine spezielle Art von Custom Audience, die von Produkt-Events dynamisch erstellt wird. Der Endpunkt act_{AD_ACCOUNT_ID}/product_audiences ist ein spezieller POST-Endpunkt zur Erstellung dieser Zielgruppen.

Beispiel für den Abruf einer Custom Audience:

curl -X GET \ -d 'fields="data_source,subtype"' \ -d 'access_token=<ACCESS_TOKEN>' \ https://graph.facebook.com/v5.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' }, })

Beispiel für den Abruf einer speziellen Produkt-Zielgruppe:

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>

Problembehebung

Das unten aufgeführte Video behandelt übliche Probleme beim Einrichten von Pixeln, App Events und Katalogen. Es zeigt dir außerdem Tools, die du zum Debuggen nutzen kannst.