Shopping-Kampagnen

Mit Shopping-Kampagnen können Sie besser für Ihre Produkte werben: Nutzer sehen ausführliche Produktinformationen, noch bevor sie auf eine Anzeige klicken. Anzeigen in Shopping-Kampagnen enthalten ein Foto des Produkts sowie Titel, Preis, Name des Geschäfts usw.

In diesem Leitfaden wird beschrieben, wie Shopping-Kampagnen mit der AdWords API eingerichtet und verwaltet werden.

Merchant Center- und AdWords-Konto verknüpfen

Bevor Sie eine Shopping-Kampagne erstellen können, müssen Sie Ihr AdWords-Konto mit Ihrem Google Merchant Center-Konto verknüpfen. Dies erfolgt in zwei Schritten:

  1. Senden Sie eine Einladung von Ihrem Merchant Center-Konto an Ihr AdWords-Konto.
  2. Nehmen Sie die Einladung in Ihrem AdWords-Konto an.

Einladung von Ihrem Merchant Center-Konto senden

Sie können die Einladung über die Merchant Center-Benutzeroberfläche senden oder mit der Content API for Shopping die adwordsLinks Ihres Kontos aktualisieren.

Einladungen im AdWords-Konto verwalten

Seit Version 201609 ist es möglich, Verknüpfungen zwischen dem AdWords-Konto und anderen Diensten, einschließlich des Merchant Centers, mit getServiceLinks und mutateServiceLinks von CustomerService abzurufen, zu akzeptieren und abzulehnen.

Um alle Verknüpfungen mit Ihrem Konto abzurufen, müssen Sie lediglich getServiceLinks mit dem Prädikat serviceType = MERCHANT_CENTER wie folgt aufrufen:

Java

// Get the CustomerService.
CustomerServiceInterface customerService =
    adWordsServices.get(session, CustomerServiceInterface.class);

// Create a selector that filters by service type.
Selector selector =
    new SelectorBuilder()
        .fields("ServiceType")
        .equals("ServiceType", ServiceType.MERCHANT_CENTER.getValue())
        .build();

// Get the service links.
ServiceLink[] serviceLinks = customerService.getServiceLinks(selector);

// Display the results.
if (serviceLinks != null) {
  for (ServiceLink serviceLink : serviceLinks) {
    System.out.printf(
        "Found service link with service link ID %d, type %s, name '%s', and status %s.%n",
        serviceLink.getServiceLinkId(),
        serviceLink.getServiceType(),
        serviceLink.getName(),
        serviceLink.getLinkStatus());
  }
} else {
  System.out.println("No service links found.");
}

Um eine Einladung anzunehmen, rufen Sie mutateServiceLinks auf und übergeben einen SET-Vorgang, durch den der linkStatus von PENDING in ACTIVE geändert wird. Sie müssen dabei den serviceType und den serviceLinkId im Operanden festlegen.

Java

// Get the CustomerService.
CustomerServiceInterface customerService =
    adWordsServices.get(session, CustomerServiceInterface.class);

// Create the operation to set the status to ACTIVE.
ServiceLinkOperation op = new ServiceLinkOperation();
op.setOperator(Operator.SET);
ServiceLink serviceLink = new ServiceLink();
serviceLink.setServiceLinkId(serviceLinkId);
serviceLink.setServiceType(ServiceType.MERCHANT_CENTER);
serviceLink.setLinkStatus(ServiceLinkLinkStatus.ACTIVE);
op.setOperand(serviceLink);

// Update the service link.
ServiceLink[] mutatedServiceLinks =
    customerService.mutateServiceLinks(new ServiceLinkOperation[] {op});

// Display the results.
for (ServiceLink mutatedServiceLink : mutatedServiceLinks) {
  System.out.printf(
      "Service link with service link ID %d, type '%s' updated to status: %s.%n",
      mutatedServiceLink.getServiceLinkId(),
      mutatedServiceLink.getServiceType(),
      mutatedServiceLink.getLinkStatus());
}

Um eine Einladung abzulehnen, rufen Sie mutateServiceLinks auf und übergeben einen REMOVE-Vorgang mit einem Operanden, in dem serviceType und serviceLinkId festgelegt sind.

Java

// Get the CustomerService.
CustomerServiceInterface customerService =
    adWordsServices.get(session, CustomerServiceInterface.class);

// Create the operation to remove the service link.
ServiceLinkOperation op = new ServiceLinkOperation();
op.setOperator(Operator.REMOVE);
ServiceLink serviceLink = new ServiceLink();
serviceLink.setServiceLinkId(serviceLinkId);
serviceLink.setServiceType(ServiceType.MERCHANT_CENTER);
op.setOperand(serviceLink);

// Remove the service link.
ServiceLink[] mutatedServiceLinks =
    customerService.mutateServiceLinks(new ServiceLinkOperation[] {op});

// Display the results.
for (ServiceLink mutatedServiceLink : mutatedServiceLinks) {
  System.out.printf(
      "Service link with service link ID %d and type '%s' was removed.%n",
      mutatedServiceLink.getServiceLinkId(), mutatedServiceLink.getServiceType());
}

Shopping-Kampagne erstellen

Hinweis: In diesem Leitfaden verwenden wir zur einfacheren Erklärung den CampaignService und den AdGroupCriterionService. Mit dem BatchJobService können Sie aber dieselben Vorgänge ausführen. Weitere Informationen finden Sie im Leitfaden zur Batch-Verarbeitung.

Beim Erstellen einer Shopping-Kampagne legen Sie die Budgets, Gebote und Einstellungen fest. Beim einfachsten Typ einer Shopping-Kampagne wird ein Gebot für alle Produkte verwendet.

Zum Einrichten einer Shopping-Kampagne sind zwei besondere Schritte erforderlich:

  1. advertisingChannelType der Kampagne auf SHOPPING festlegen

  2. ShoppingSetting erstellen und der Kampagne hinzufügen

Beide Schritte sind in folgendem Code umgesetzt:

Campaign campaign = new Campaign();
campaign.setAdvertisingChannelType(AdvertisingChannelType.SHOPPING);
// Recommendation: Set the campaign to PAUSED when creating it to stop
// the ads from immediately serving. Set to ENABLED once you've added
// targeting and the ads are ready to serve.
campaign.setStatus(CampaignStatus.PAUSED);

ShoppingSetting shoppingSetting = new ShoppingSetting();
shoppingSetting.setMerchantId(MERCHANT_ID);
shoppingSetting.setSalesCountry("GB");
shoppingSetting.setCampaignPriority(0);
shoppingSetting.setEnableLocal(true);
campaign.setSettings(new Setting[] {shoppingSetting});

Wie im Beispiel oben zu sehen ist, hat eine ShoppingSetting die folgenden Properties:

merchantId (erforderlich)
Die Merchant Center-Konto-ID, zu der Ihre Produkte gehören.
salesCountry (erforderlich)
Es werden nur Produkte ausgewählt, für die im Merchant Center ein übereinstimmendes Zielland angegeben wurde. Dies hat keinen Einfluss auf die Anzeigenausrichtung.
campaignPriority (optional, Standardwert: 0)
0, 1 oder 2. Mit diesem Wert wird festgelegt, welche Kampagne Vorrang haben soll, wenn derselbe Merchant Center-Datenfeed für mehr als eine Kampagne verwendet wird. Es wird die Kampagne mit der höheren Priorität ausgewählt. Wenn zwei Kampagnen dieselbe Priorität aufweisen, wird für jede Anzeige diejenige mit dem höchsten Gebot für das jeweilige Produkt ausgewählt.
enableLocal (optional, Standardwert: false)
Wenn dieser Wert true ist, werden in Ihren Shopping-Kampagnen Anzeigen mit lokaler Produktverfügbarkeit aktiviert.

Shopping-Anzeigengruppe und -Anzeigen erstellen

Zur Auslieferung von Anzeigen für Shopping-Kampagnen muss eine AdGroup erstellt werden, die mindestens eine Anzeige enthält.

In Shopping-Kampagnen werden zwei Anzeigengruppentypen unterstützt:

  • SHOPPING_PRODUCT_ADS: Das ist der standardmäßige Anzeigengruppentyp für Shopping-Kampagnen, bei denen normale Produktanzeigen ausgeliefert werden.
  • SHOPPING_SHOWCASE_ADS: Dieser Anzeigengruppentyp kann nur für die Bereitstellung von Showcase-Anzeigen in Shopping-Ergebnissen verwendet werden und wird so erstellt:
    1. Setzen Sie das Feld adGroupType der Anzeigengruppe auf SHOPPING_SHOWCASE_ADS.
    2. Setzen Sie den biddingStrategyType der biddingStrategyConfiguration Ihrer Anzeigengruppe auf MANUAL_CPC oder auf ENHANCED_CPC.

Beim Erstellen des gewünschten Anzeigengruppentyps fügen Sie der Gruppe eine ProductAd oder eine ShowcaseAd hinzu. Damit ist die grundlegende Einrichtung der Kampagne abgeschlossen.

Als Nächstes müssen Sie die Produkte auswählen und Gebote dafür festlegen.

Partitionierung

Optimale Ergebnisse erzielen Sie mit Shopping-Kampagnen, wenn Sie Ihr Produktinventar in mehrere Dimensionen unterteilen und mit separaten Produktgruppen arbeiten. Im folgenden Diagramm wurden die Produkte grob in Elektronikartikel (Electronics), Spielzeug (Toys) und "Alles andere" (Everything else) unterteilt. Für Elektronikartikel wurde eine weitere Aufgliederung nach Marken vorgenommen, während "Alles andere" nach Gebrauchtware (Used) oder Neuware unterteilt wurde.

Diese Struktur wird als Baumansicht erstellt. Jede Ebene der Baumansicht stellt eine Partition dar.

Jeder Knoten in der Baumansicht ist entweder eine Unterstruktur oder eine Einheit. Eine Unterstruktur beschreibt eine neue Ebene in der Baumansicht. Einheiten stellen die Blätter der Baumansicht dar. Jede Unterstruktur muss vollständig partitioniert sein, d. h., sie muss den Einheitentyp für Other enthalten. Im Beispiel sind der Stamm sowie die Knoten Category: Electronics und Category: (Other) Unterstrukturen.

Knoten sind Objekte der Klasse ProductPartition. Diese wiederum ist eine Unterklasse von Criterion. ProductPartition-Objekte werden entweder über BiddableAdGroupCriterion oder über NegativeAdGroupCriterion mit AdGroup verknüpft.

Die Kombination der Typen ProductPartition und AdGroupCriterion führt zu folgenden Ergebnissen:

ProductPartition-Typ AdGroupCriterion-Typ Ergebnis
UNIT BiddableAdGroupCriterion Ein Gebot für Artikel, die mit diesem Blatt der Baumstruktur übereinstimmen
UNIT NegativeAdGroupCriterion Diese Kombination zeigt, dass Sie nicht für dieses spezielle Blatt in der Anzeigengruppe bieten möchten. Für andere Anzeigengruppen und Kampagnen geringerer Priorität können jedoch Gebote abgegeben werden.

Bei anderen Kombinationen wird ein Fehler ausgegeben.

ProductPartition-Objekte haben außerdem einen caseValue, in dem verschiedene Unterklassen des Typs ProductDimension angegeben werden können. Eine ProductDimension steht für die Werte im Zusammenhang mit Ihren Produkten, wie etwa Marke, Kategorie oder Zustand. Eine vollständige Beschreibung der verfügbaren Typen für ProductDimension finden Sie in der Referenzdokumentation.

Jeder direkte Unterknoten einer Unterstruktur muss in caseValue denselben ProductDimension-Untertyp aufweisen. Der Stammknoten ist der einzige Knoten ohne einen caseValue.

ProductPartition root = new ProductPartition();
root.setPartitionType(ProductPartitionType.SUBDIVISION);
root.setId(-1);

ProductPartition node1 = new ProductPartition();
node1.setPartitionType(ProductPartitionType.UNIT);
node1.setCaseValue(new ProductBrand(null, "Brand A"));
node1.setParentCriterionId(root.getId());

Zusätzlich muss jede Unterstruktur einen "leeren" caseValue mit dem richtigen Typ enthalten, der "alle anderen Werte" darstellt.

ProductPartition node2 = new ProductPartition();
node2.setPartitionType(ProductPartitionType.UNIT);
node2.setCaseValue(new ProductBrand());
node2.setParentCriterionId(root.getId());

Temporäre IDs

Kriterien werden erst IDs zugewiesen, wenn die mutate-Anfrage, mit der sie erstellt werden, vom Server verarbeitet wurde. Eine ProductPartition ist jedoch ungültig, bis sie vollständig ist. Daher müssen Sie beim Erstellen einer Unterstruktur immer mindestens ein untergeordnetes Element im selben Vorgang erstellen.

Um die parentCriterionId für die Unterknoten festlegen zu können, verwenden Sie temporäre Kriterium-IDs. Diese sind lokal (aber nicht global) eindeutige Bezeichner, die nur im Kontext einer einzelnen mutate-Anfrage gelten. Sie können eine beliebige negative Ganzzahl als temporäre ID verwenden. Im Beispielcode oben wurde die ID des ProductPartition-Stammobjekts auf -1 festlegt.

Bei der Verarbeitung der Anfrage wird dann jedem Criterion wie gewohnt eine positive globale ID zugewiesen.

Produktdimensionen

Für Shopping-Kampagnen stehen die folgenden ProductDimension-Typen zur Verfügung:

ProductBiddingCategory, ProductCustomAttribute und ProductType sind in weitere Untertypen aufgeteilt. Wenn einer dieser Typen bei der Definition einer Unterstruktur verwendet wird, muss jeder caseValue-Wert der betreffenden Unterstruktur ebenfalls denselben Untertyp aufweisen.

ProductBiddingCategory und ProductType sind hierarchisch, wobei die Untertypen die Tiefe in der Hierarchie angeben. Die Kategorie Media ist vom Typ BIDDING_CATEGORY_L1. Books hingegen ist vom Typ BIDDING_CATEGORY_L2, mit Media als übergeordnetem Element. Eine Unterteilung nach caseValue ist nicht möglich, es sei denn, es wurde bereits vorher in der Struktur eine Unterteilung nach dem direkt übergeordneten Element vorgenommen.

Beispielsweise können Sie Books nicht als Kategorie für einen Knoten direkt unterhalb des Stamms angeben. Ebenso kann Books nicht direkt unterhalb von Electronics verwendet werden, da Electronics nicht das direkt übergeordnete Element von Books ist.

ProductCustomAttribute ist nicht hierarchisch. Stattdessen sind die Untertypen CUSTOM_ATTRIBUTE_0 bis CUSTOM_ATTRIBUTE_4 den Werten Benutzerdefiniertes Attribut 0 bis Benutzerdefiniertes Attribut 4 im Merchant Center zugeordnet.

Mit den Produktdimensionen ProductChannel und ProductChannelExclusivity können Sie lokale Kanäle, Onlinekanäle oder beide angeben.

Gebotskategorien

Bei den Werten für ProductBiddingCategory handelt es sich um feste IDs. Die vollständige Liste können Sie über die ConstantDataService-Methode getProductBiddingCategoryData abrufen. Sie sollten das Ergebnis dieses Aufrufs unbedingt zwischenspeichern, da der Datensatz sehr groß ist und nur selten geändert wird.

Vorhandene ProductPartition-Baumansichten bearbeiten

Die Baumansicht muss zu jedem Zeitpunkt vollständig sein, d. h. jeder mutate-Vorgang, durch den die Struktur ungültig wird, muss in derselben Anfrage durch einen Vorgang ergänzt werden, der die Vollständigkeit der Struktur wiederherstellt. Um die Gültigkeit zu gewährleisten, müssen alle Unterknoten einer Unterstruktur in caseValue denselben Typ aufweisen und jede Unterstruktur muss einen Knoten "other" enthalten.

Wenn Sie einen Blattknoten weiter unterteilen möchten, müssen Sie die vorhandene Einheit entfernen und durch eine Unterstruktur mit demselben caseValue ersetzen. Anschließend können Sie unter dem neuen Knoten die gewünschten Unterknoten hinzufügen.

Wenn Sie eine Unterstruktur entfernen, werden auch alle Unterknoten rekursiv entfernt.

Nach Produktdimensionen filtern

Sie können ein ProductScope-Kriterium hinzufügen, um die Produkte in einer Kampagne zu filtern. Pro Kampagne ist nur ein ProductScope zulässig. Ein ProductScope ist ein Container für mindestens ein ProductDimension-Objekt, der einem einfachen Filter für einen Aspekt eines Produkts entspricht. Wenn Sie beispielsweise den Untertyp ProductBrand von ProductDimension hinzufügen und seinen Wert auf Nexus festlegen, wird die Kampagne nur auf Produkte angewendet, bei denen im Merchant Center "Nexus" als Marke festgelegt ist.

ProductScope productScope = new ProductScope();
productScope.setDimensions(new ProductDimension[] {new ProductBrand(null, "Nexus")});

Sie können einem ProductScope Sie bis zu sieben ProductDimension-Objekte hinzufügen. Die Produkte müssen dann mit den Angaben in allen vorhandenen ProductDimension-Objekten übereinstimmen, um in die Kampagne aufgenommen zu werden.

Einschränkungen bei Geboten

Die Einschränkungen bei Geboten für Shopping-Anzeigengruppen variieren, je nachdem, ob es sich um SHOPPING_PRODUCT_ADS oder SHOPPING_SHOWCASE_ADS handelt. In der folgenden Tabelle sind die Unterschiede zusammengefasst.

  SHOPPING_PRODUCT_ADS SHOPPING_SHOWCASE_ADS
Gebotsstrategie Nur die folgenden Gebotstypen werden unterstützt:
  • MANUAL_CPC
  • ENHANCED_CPC
  • TARGET_ROAS
  • TARGET_SPEND
Nur die folgenden Gebotstypen werden unterstützt:
  • MANUAL_CPC
  • ENHANCED_CPC
Gebotsstrategie auf Anzeigengruppenebene Optional Erforderlich
Gebote auf Ebene des Produktaufteilungsknotens Erforderlich Nicht zulässig

Berichte

Zusammen mit den Shopping-Kampagnen wurden zwei neue Berichte eingeführt: der Bericht Produktpartition und der Leistungsbericht zu Shopping-Kampagnen.

Weitere Informationen

Feedback geben zu...