Die Kampagnenstruktur von Facebook umfasst drei Ebenen: Kampagne, Werbeanzeigengruppe und Werbeanzeige. In der API haben Entwickler*innen Zugriff auf eine vierte Ebene, die Anzeigengestaltung.
Diese Objekte enthalten dein Werbeziel und eine oder mehrere Anzeigengruppen. So kannst du die Ergebnisse für jedes Werbeziel einfacher optimieren und messen.
Anzeigengruppen enthalten eine oder mehrere Werbeanzeige(n). Du legst das Budget und den Zeitplan für jede Anzeigengruppe fest. Erstelle eine Anzeigegruppe für jede Zielgruppe mit deinem Gebot; Anzeigen in der Gruppe richten sich an dieselbe Zielgruppe mit demselben Gebot. So kannst du den Betrag, den du für jede Zielgruppe ausgibst, besser steuern, festlegen, wann die jeweilige Zielgruppe deine Werbeanzeigen sieht, und für jede Zielgruppe spezifische Kennzahlen einsehen.
Enthält den Inhalt der Werbeanzeige. Erstelle mehrere Werbeanzeigen pro Anzeigengruppe, um die Auslieferung mit verschiedenen Bildern, Links, Videos, Texten oder Platzierungen zu optimieren.
Enthalten nur die visuellen Elemente der Anzeige und können nach der Erstellung nicht mehr geändert werden. Jedes Werbekonto verfügt über eine Inhaltsbibliothek, in der Werbeanzeigeninhalte für die Wiederverwendung in Werbeanzeigen gespeichert werden.
Ziel | Plan | Budget | Gebote | Targeting | Anzeigengestaltung | |
---|---|---|---|---|---|---|
Kampagne | ✓ | |||||
Anzeigengruppe | ✓ | ✓ | ✓ | ✓ | ||
Werbeanzeige | ✓ |
Zuordnung der öffentlichen Namen von Objekten zu API-Endpunkten:
Öffentlicher Name | API-Endpunkt |
---|---|
Kampagne | /campaigns |
Anzeigengruppe | /adsets |
Werbeanzeige | /ads |
Anzeigengestaltung | /adcreatives |
Eine Kampagne stellt die oberste organisatorische Strukturebene in einem Werbekonto dar und sollte für Werbetreibende ein einzelnes Ziel verfolgen, z. B. die Interaktionen mit Seitenbeiträgen fördern. Indem ein Werbeziel für die Kampagne festgelegt wird, wird eine Überprüfung der Werbeanzeigen erreicht, die der Kampagne hinzugefügt werden.
Im Werbeanzeigenmanager werden alle aktiven und angehaltenen Kampagnen in einem Werbekonto angezeigt.
Um Informationen zu den Kampagnen anzuzeigen, die mit einem spezifischen Konto verknüpft sind, führst du eine Abfrage für die Verbindung des verwendeten Werbekontos aus. Standardmäßig geben wir nur Ergebnisse für Kampagnen mit dem Status ACTIVE
oder PAUSED
zurück. Gegebenenfalls musst du also zusätzliche Statusangaben definieren:
curl -X GET \
-d 'effective_status=[
"ACTIVE",
"PAUSED"
]' \
-d 'fields="name,objective"' \
-d 'access_token=<ACCESS_TOKEN>' \
https://graph.facebook.com/v21.0/act_<AD_ACCOUNT_ID>/campaigns
Es werden außerdem einige allgemeine Statistiken angezeigt, z. B. Impressionen, Klicks und Ausgaben. Du kannst diese Informationen durch die Abfrage des folgenden Endpunkts erhalten. Optional kann die Start- und/oder Endzeit angegeben werden:
use FacebookAds\Object\Campaign;
$campaign = new Campaign(<CAMPAIGN_ID>);
$insights = $campaign->getInsights(array(
AdsInsightsFields::IMPRESSIONS,
AdsInsightsFields::INLINE_LINK_CLICKS,
AdsInsightsFields::SPEND,
), array(
'end_time' => (new \DateTime('now'))->getTimestamp(),
));
from facebookads.adobjects.campaign import Campaign
from facebookads.adobjects.adsinsights import AdsInsights
import time
fields = [
AdsInsights.Field.impressions,
AdsInsights.Field.inline_link_clicks,
AdsInsights.Field.spend,
]
params = {
'end_time': int(time.time()),
}
campaign = Campaign(<CAMPAIGN_ID>)
insights = campaign.get_insights(fields=fields, params=params)
APINodeList<AdsInsights> adsInsightss = new Campaign(<CAMPAIGN_ID>, context).getInsights()
.setParam("end_time", end_time)
.requestField("impressions")
.requestField("inline_link_clicks")
.requestField("spend")
.execute();
curl -G \
-d 'end_time=1517287567' \
-d 'fields=impressions,inline_link_clicks,spend' \
-d 'access_token=<ACCESS_TOKEN>' \
https://graph.facebook.com/v2.11/<CAMPAIGN_ID>/insights
Ziele sind Handlungen, die Benutzer*innen beim Betrachten deiner Anzeige ausführen sollen. Während der Kampagnenerstellung musst du das von dir gewählte Ziel angeben.
Das explizite Festlegen des Ziels bietet folgende Vorteile:
Der mindestens erforderliche API-Aufruf zum Erstellen einer Kampagne ist:
curl -X POST \
-F 'name="My First Campaign"' \
-F 'objective="OUTCOME_ENGAGEMENT"' \
-F 'status="PAUSED"' \
-F 'special_ad_categories=[]' \
-F 'access_token=<ACCESS_TOKEN>' \
https://graph.facebook.com/v21.0/act_<AD_ACCOUNT_ID>/campaigns
Bei Anzeigengruppen handelt es sich um Gruppen von Werbeanzeigen. Sie werden verwendet, um das Budget und die Laufzeit deiner Werbeanzeigen zu konfigurieren. Alle Anzeigen, die innerhalb einer Anzeigenkampagne enthalten sind, sollten dieselben Werte für Targeting, Budget, Abrechnung, Optimierungsziel und Dauer aufweisen.
curl -X POST \
-F 'name="My First AdSet"' \
-F 'lifetime_budget=20000' \
-F 'start_time="2024-11-28T06:45:26-0800"' \
-F 'end_time="2024-12-05T06:45:26-0800"' \
-F 'campaign_id="<AD_CAMPAIGN_ID>"' \
-F 'bid_amount=500' \
-F 'billing_event="IMPRESSIONS"' \
-F 'optimization_goal="POST_ENGAGEMENT"' \
-F 'targeting={
"age_min": 20,
"age_max": 24,
"behaviors": [
{
"id": 6002714895372,
"name": "All travelers"
}
],
"genders": [
1
],
"geo_locations": {
"countries": [
"US"
],
"regions": [
{
"key": "4081"
}
],
"cities": [
{
"key": "777934",
"radius": 10,
"distance_unit": "mile"
}
]
},
"interests": [
{
"id": "<INTEREST_ID>",
"name": "<INTEREST_NAME>"
}
],
"life_events": [
{
"id": 6002714398172,
"name": "Newlywed (1 year)"
}
],
"facebook_positions": [
"feed"
],
"publisher_platforms": [
"facebook",
"audience_network"
]
}' \
-F 'status="PAUSED"' \
-F 'access_token=<ACCESS_TOKEN>' \
https://graph.facebook.com/v21.0/act_<AD_ACCOUNT_ID>/adsets
Du kannst eine Liste alle Anzeigengruppe innerhalb einer Kampagne anzeigen, indem du eine Anforderung an den folgenden Pfad ausführst und die gewünschten Felder und Status angibst:
curl -X GET \
-d 'fields="name,start_time,end_time,daily_budget,lifetime_budget"' \
-d 'access_token=<ACCESS_TOKEN>' \
https://graph.facebook.com/v21.0/<AD_CAMPAIGN_ID>/adsets
Ein Werbeanzeigenobjekt enthält alle notwendigen Informationen, um eine Werbeanzeige auf Facebook anzuzeigen, z. B. den Inhalt der Werbeanzeige.
curl -X POST \
-F 'name="My Ad"' \
-F 'adset_id="<AD_SET_ID>"' \
-F 'creative={
"creative_id": "<CREATIVE_ID>"
}' \
-F 'status="PAUSED"' \
-F 'access_token=<ACCESS_TOKEN>' \
https://graph.facebook.com/v21.0/act_<AD_ACCOUNT_ID>/ads
In unserem Leitfaden erfährst du, wie du eine Vorschau deiner Werbeanzeige anzeigst.
Schließlich kannst du eine Anforderung an den folgenden Pfad durchführen, um eine Liste aller Anzeigen für eine Anzeigengruppe abzurufen. Gib dabei die Felder an, die du abrufen möchtest:
use FacebookAds\Object\AdSet;
use FacebookAds\Object\Values\ArchivableCrudObjectEffectiveStatuses;
use FacebookAds\Object\Fields\AdFields;
$adset = new AdSet(<AD_SET_ID>);
$ads = $adset->getAds(array(
AdFields::NAME,
AdFields::CONFIGURED_STATUS,
AdFields::EFFECTIVE_STATUS,
AdFields::CREATIVE,
), array(
AdFields::EFFECTIVE_STATUS => array(
ArchivableCrudObjectEffectiveStatuses::ACTIVE,
ArchivableCrudObjectEffectiveStatuses::PAUSED,
ArchivableCrudObjectEffectiveStatuses::PENDING_REVIEW,
ArchivableCrudObjectEffectiveStatuses::PREAPPROVED,
),
));
from facebookads.adobjects.adset import AdSet
from facebookads.adobjects.ad import Ad
fields = [
Ad.Field.name,
Ad.Field.configured_status,
Ad.Field.effective_status,
Ad.Field.creative,
]
params = {
Ad.Field.effective_status: [
'ACTIVE',
'PAUSED',
'PENDING_REVIEW',
'PREAPPROVED',
],
}
ad_set = AdSet(<AD_SET_ID>)
ads = ad_set.get_ads(fields=fields, params=params)
APINodeList<Ad> ads = new AdSet(<AD_SET_ID>, context).getAds()
.setEffectiveStatus("[\"ACTIVE\",\"PAUSED\",\"PENDING_REVIEW\",\"PREAPPROVED\"]")
.requestNameField()
.requestConfiguredStatusField()
.requestEffectiveStatusField()
.requestCreativeField()
.execute();
curl -G \
--data-urlencode 'effective_status=[
"ACTIVE",
"PAUSED",
"PENDING_REVIEW",
"PREAPPROVED"
]' \
-d 'fields=name,configured_status,effective_status,creative' \
-d 'access_token=<ACCESS_TOKEN>' \
https://graph.facebook.com/v2.11/<AD_SET_ID>/ads
Du wirst eventuell feststellen, dass die Gesamtzahl der Werbeanzeigen größer ist als die Anzahl, die du auf einer einzelnen Seite anzeigen möchtest. In diesem Fall kannst du im Feld limit
die Anzahl der Elemente angeben, die du abrufen möchtest, und dann eine Paginierung für die verbleibenden Elemente definieren.
Die Paginierung wird anhand der Cursor ausgeführt, die im Rahmen der Abfrage zurückgegeben werden:
"paging": { "previous" : "https://graph.facebook.com/...", "next": "https://graph.facebook.com/...", "cursors": { "before": "NjAxNjc3NTU1ODMyNw==", "after": "NjAxMTc0NTU2MjcyNw==" }
Falls zusätzliche Seiten abgerufen werden müssen, enthält die Antwort die Felder previous
und next
; mithilfe dieser URLs können diese Datenseiten abgerufen werden. Weitere Informationen findest du unter Cursor-basierte Paginierung.