Der ultimative Suchanfragen-Report für E-Commerce – AdWords Scripts

Scripts_Header

TL;DR: Dieser Artikel beschreibt, wie ein bereitgestelltes AdWords Script bei der Strukturierung von Suchanfragen-Daten in Spreadsheets helfen kann, und zwar regelmäßig und vollautomatisiert.

***

Die regelmäßige Auswertung von Suchanfragen – im englischsprachigen Raum auch „Query mining” genannt – bleibt einer der wichtigsten Stellhebel im laufenden Operativbetrieb eines SEA Managers. Es gilt, die folgenden Ziele unter einen Hut zu bringen:

› Identifikation von neuen und konvertierenden Suchanfragen
› Aktualisierung von Negative Keywords auf der richtigen Ebene bei Vermeidung von Duplikation und Sicherung von Aktualität
› Wenn nötig, Neustrukturierung von Adgroups durch neue Keywords

Eine große Herausforderung in der Auswertung ist die Vielfalt von Suchanfragenquellen und deren strukturelle Unterschiedlichkeit:

Suchanfragenquellen Scripts norisk

Um den Rahmen des Artikels nicht zu sprengen, konzentrieren wir uns im Weiteren auf die strukturierte Identifikation von gutenSuchanfragen und lassen die strukturierte Verwaltung von Negative Keywords außen vor. Zu unpassenden Suchanfragen zeigen wir demnächst im Blog eine Lösung über Negative Libraries mittels Feeds.* Quelle: norisk Kunden Benchmark

Wie oben angedeutet, entstehen konvertierende Suchanfragen aus vier unterschiedlichen Quellen. Sollten diese nicht aus allen Bereichen als Keyword in den Textkampagnen angelegt werden und, wenn ja: Wie kann man diese verknüpfte Datenabfrage automatisieren?

Suchanfragenreports über AdWords Scripts

Diese Frage hat das vorgestellte AdWords Script zum Ziel, welches vier verschiedene Reportkonfigurationen abfragt und mittels Kategorisierung die Potentiale in einem Spreadsheet zusammenführt. Das Skript bedient sich der beiden AdwordsQueryLanguage-Reports SearchQueryPerformance und PaidOrganicQueryReport, welche im Skript hinsichtlich der Spalten beliebig erweitert werden können. Das komplette Skript findet sich weiter unten, das im Folgenden besprochene Demo-Spreadsheet steht zur Kopie bereit.

0. Tab: Das „nullte” Tab – die Übersicht der vier Einzelreports

Wir starten die Zählung bei Null, weil wir in Arrays denken :-), es sei uns verziehen. Das Dashboard zeigt alle vier Bereiche im Summenüberblick. Es bietet Einblick darin, in welchen Bereichen Potentiale und Probleme liegen. Die einzelnen Tabellen werden in den Unterpunkten erläutert.

1. Tab: Shopping und DSA-Suchanfragen nach Typ

Suchanfragen können in Shopping-Kampagnen mit jedem Knoten des Produkt-Partitions Baumes gematched werden. Hier werden DSA und Shopping DSA subsumiert. Die Zielsetzung dieses Reports liegt weniger in der direkten Keywordbuchung in Textkampagnen, sondern in der Validierung der Shoppingstruktur und dem Aufzeigen von möglichen Problemkonstellationen durch suboptimales Suchanfragenmatching. Die Kategorisierung der Suchanfragen erfolgt in vier Bereiche:

› “id – PartMatch”: Für ein identifiziertes Produkt-ID-Ziel wird die Suchanfrage mit dem Titel abgeglichen, d. h. ob die Suchanfrage im Titel auftaucht. Der Abgleich ist sehr stupide mittels einer find()-Formel, hier ist kein intelligentes Natural Language Processing im Spiel. Für bessere Lösungenvorschlägen gerne einen Kommentar hinterlassen.
› “id – NoMatch”: Dieser Wert wird als Fallback des obigen Vergleichs angegeben, d. h. Suchanfrage taucht nicht Titel auf.
› “categ”: Sowohl DSA als auch Shopping product_type oder Kategorie-Matches können in diesen Typ fallen
› “brand”: Im gezeigten Beispieldatensatz sind dies DSA_Shopping Produktziele mit einem Brand-Match
› “other”: Unter diesem Wert werden alle weiteren Suchanfragen als Fallback subsumiert

Erkennung von Problemen und Potentialen in der Shoppingstruktur

Wo kann man nun Potentiale und Probleme erkennen? Welche Relationen von Typen sind ungesund und sollten verlagert werden? Zu diesen Fragen lassen sich folgende “Je-desto” Regeln als Orientierung formulieren:

› Je höher der “id – PartMatch” Anteil, desto besser passen die Produkttitel zu den Suchanfragen. Andreas Reiffen hat zum Thema Titeloptimierung einen guten Searchengineland-Artikel geschrieben.

› Je geringer der “id – PartMatch” Anteil, desto dringender ist die Anlage von produktindividuellen Zielen, inklusive sinnvoller Gebotssteuerung. Mehr zum Thema Shopping Automatisierung hier demnächst im Blog.

› Je geringer der ROAS von “id – Part/NoMatch”, desto eher kann fehlendes Negativkeyword Fencing ein Problem sein. Mehr Details zur optimalen Shoppingstruktur hier in Kürze hier. Logischerweise können hier auch andere Faktoren wie ConversionRate, Gebote und Produktpreis Einfluss haben.

› Je höher der Brand-Anteil im Verhältnis zum Kategorie-Anteil, desto markenaffiner sind die Suchen der Zielgruppe, produktspezifische Suchen ausgeklammert. Dies setzt eine überschneidungsfreie Shoppingstruktur voraus, siehe Artikel im vorigen Punkt.

Die Ansicht im Dashboard dient der Aggregation, die Listenansicht dient als Ausgangspunkt für konkrete Optimierungsmaßnahmen bezüglich Produkttitel, Shoppingstruktur, neuer Keywords und Negatives. Die drei gelb markierten Spalten werden zusätzlich ergänzt, um die Klassifikation vorzunehmen. Unserer Meinung nach sind für Negativeoperationen – abgesehen vom erwähnten Negative Fencing pro Shoppingkampagne – keine Vollautomatismen sinnvoll, da Sprache semantisch zu komplex ist. Eine umfassende Lösung müsste auf Natural Language Processing mit Machine Learning aufsetzen.

2. Shopping Suchanfragen, noch nicht als Keyword vorhanden

Häufig werden in Shopping nicht nur produktspezifische Suchanfragen mit guten Conversions identifiziert, sondern auch generischere Keywordkombinationen mit den Elementen Brand+Category+Gender (“Salomon Handschuhe Herren”), Brand+Category oder Category+Gender etc. Eine Mindestconversionanzahl dieser Kombinationen in Shopping von 2 oder mehr legt nahe, diese Kombinationen auch in Textkampagnen einzubuchen. Der Betrachtungszeitraum ist nach Volumen festzulegen und kann in der Skriptkonfiguration verändert werden.

Wenn es um die Übertragung von Shopping-Insights auf Textkampagnen geht, ein Vorbehalt vorweg: Vom Anlegen produkt- oder modellbasierter Textkampagnen ohne Prozessautomatismen ist bei einem Online-Händler mit Drittmarkenfokus und Sortiment über 1000 Produkten abzuraten, da sich zu viele Variablen in kurzer Zeit ändern können. Hier lohnt sich ein Versuch mit feedbasierte Kampagnen mit Business Data, Ad Customizers und AdWords Scripts, welche wir hier in Kürze und auf der SEA Camp Jena 2017 vorstellen werden.

Zu den Spreadsheetdaten im Detail: Im Dashboard sieht man eine Zweiteilung nach „Als Keyword vorhanden?” in True und False, mit entsprechenden Leistungswerten.

Alle Suchanfragen mit dem Wert “hasKeyword=False” sind demnach noch nicht gebuchte Keywords. Wie verfährt man weiter, wenn neue und gute Keywords erkannt werden? Zum Hinzufügen wäre eine Einbuchungsregel wie Conversions >=2 und CPO <= x € denkbar. Die Zuordnung in AdGroups kann über Sortierung der neuen Keywords mit bestehenden Keywords erfolgen, um die direkten Adgroupnachbarn zu sehen und eine mögliche Verortung zu bestimmen. Zu guter Letzt hervorgehoben sind die Suchanfragen mit Kosten von jeweils mindestens 30€, jedoch ohne Umsatz, um das Ausmaß an „Kostenfresser”-Suchanfragen grob zu quantifizieren.

3. SEA und SEO Keywords im Vergleich

Die SEA-SEO Reportzahlen beruhen auf dem PaidOrganicQueryReport, welcher eine Kontoverknüpfung zwischen AdWords und der Google Search Console voraussetzt. Falls diese nicht eingerichtet ist, enthält der Report nur die Kopfzeile.

Die im Dashboard gewählte Darstellung ist eine Aggregation in eine SEA-SEO-Click-Ratio in drei Teile: Kleiner 1, zwischen 1-3 und größer 3. Hat ein Keyword 4 SEA Klicks und einen SEO Klick erhalten, die Ratio 4. Darüber hinaus sind deren Umsatzanteile und ROAS relevant.

QueryReport_PaidOrganic

Im direkten Vergleich ergeben sich neben den generischen “Kann-ich-mir-in-SEA-nicht-leisten” Keywords auch regelmäßig versteckte Potentiale:

› Aus SEO-Sicht spannend sind SEA Suchanfragen mit einer hohen SEA-SEO-Ratio, einem SEA Mindestumsatzvolumen und einem hohen Umsatz/Sitzung.
› Aus SEA-Sicht spannend sind Suchanfragen mit einer geringen SEA-SEO-Ratio und einem gleichzeitig guten ROAS, hier ist also noch Luft nach oben.

4. Neue Suchanfragen in Textkampagnen

Dieser Report bezieht sich – anders als Tab 2 – NUR auf Textkampagnen, sucht also nach neuen Suchanfragen ohne entsprechend exakt eingebuchtes Keywords. Ein wertvoller Indikator von konvertierenden Suchanfragen ist die Frage, wie hoch der Umsatzanteil von noch nicht gebuchten Keywords und wie dessen ROAS ist: je höher dieser Umsatzanteil, desto mehr Zeit sollte man der regelmäßigen Einbuchung im Kampagnenmanagement widmen.

Konfiguration des AdWords Scripts

Im bereitgestellten Skript sind insgesamt 13 Variablenkonfigurationen korrekt vorzunehmen, damit das Skript erfolgreich laufen kann. Im Kern sind, neben den selbsterklärenden, die wichtigsten wie folgt:

URL: die vollständige Spreadsheet-URL
TITLEFEED_URL: ein einfacher zweispaltiger csv-Feed mit matchender ID und Titel
Separator: der Spaltentrennter, escaped angegeben z.B. ‘\t’ für TAB

Neben den Inputvariablen werden folgende Voraussetzungen für der korrekten Ausführung gesetzt, damit alle Funktionen korrekt bereitgestellt werden.

Script Eingaben norisk

Hintergrund zur festen Produkt-ID Länge: Im Spreadsheet wird per Formel aus dem String “KeywordTextMatchingQuery” die Endung id=1234 ausgelesen. Bei einer variablen ID-Länge greift der verwendete Längenprüfer nicht korrekt. Vermutlich ist eine elegantere Methode mittels isNumber denkbar, dies wird in einer der nächsten Versionen getestet und berücksichtigt.

Versucht die Volumenfilter entsprechend Eurer Accountgröße sinnvoll zu setzen, damit nicht pro Tab 10.000e von Einträgen stehen. Google Spreadsheets haben leider eine Zellenbegrenzung von zwei Millionen befüllten Zellen über alle Tabs eines Spreadsheets. Zur Wahrung der Übersichtlichkeit sind max 1000 Einträge pro Tab empfohlen, mehr schafft man sowieso nicht manuell in einer Woche.

Vollständiger Skriptcode zum Kopieren

Den vollständige Code zum Einfügen in AdWords findest ihr unter folgendem github-Link:

https://github.com/norisk/AdWords-Scripts/blob/master/2017_QueryReport_v1.1

Der vorbefüllte “function main () {}” Funktionsrumpf kann entfernt werden, da dieser im Code enthalten ist.

Erster Skripttestlauf und Prüfung der Ergebnisse

Die obigen Schritte sind für einen ersten Testlauf ausreichend. Wenn keine Laufzeitfehler geworfen werden, wird das kopierte Demo-Spreadsheet nun mit Euren eigenen Daten befüllt. Ein typischer Skriptdurchlauf dauert dabei zwischen 3 und 20 min, je nach Datenmenge. Der zeitintensivste Schritt ist der Abgleich jeder Suchanfrage gegen den gesamten Keywordbestand unter Tab 2. Jede Abfrage dauert ca 5-10 sek, also habt ein wenig Geduld.

VORBEHALT (!) im Dashboard: keine Extraspalten einfügen!

Durch das Hinzufügen von zusätzlichen Spalten in den Reporttabs müssen die Dashboardformeln nach Abschluss neu geschrieben werden. Daher sind alle Zellreferenzen und Formeln HART im Code gekoppelt und das Dashboard erwartet die Zeile und Spalten exakt so. Eine flexiblere Alternative wäre nur über verschachtelte, relative Zellbezüge umsetzbar, diese Fleißarbeit haben wir übersprungen.

Letzter Schritt: Einrichtung Scheduling

Im Scriptsbereich der AdWords UI kann nach erfolgreichem Testlauf eine regelmäßige Ausführung oder Scheduling eingerichtet werden. Wir empfehlen eine wöchentliche Ausführung mit Bezugszeitraum letzte 30 Tage. Da der Abgleich gegen bereits vorhandene Keywords stets aktualisiert wird, ist eine “Vermischung” von Auswertungs- und Bearbeitungszeitraum nicht weiter problematisch. Mit genügend Daten kann auch auf 7 Tage eingeschränkt werden. Ein einfacher Email-Alert im Script rundet die Sache ab.

Wir hoffen, dass Euch diese Lösung genauso viel Freude bereitet, wie uns!

Happy Optimizing, Christopher