Stella M. Meyer
Head of SEA Starkes.marketing
Als mein Kollege Mark auf mich zukam und mich um Unterstützung bat, war ich nicht begeistert. Er hatte eine Anfrage als Speaker bekommen und sollte drei Themenvorschläge abgeben. „Und bei einem“, sagte er mir mit Begeisterung, „brauche ich deine Hilfe. Das Thema ist SEA-Steuerung mit Wetterdaten.“ Na toll, dachte ich, hättest du mich mal vorher gefragt. Bidding auf Wetterdaten ist nun wirklich ein alter Hut und die Use-Cases kann man an einer Hand abzählen.
Da die Vorschläge bereits abgegeben waren, begann ich zu überlegen: Was könnte man mit Wetterdaten noch anstellen. Wäre es nicht super, wenn man die Werbebotschaft der Google Anzeigen je nach Wetterlage ändern könnte?

Long Story short

Ich habe einen Weg gefunden, wie man Google Ads Anzeigen auf Grundlage von Wetterdaten automatisieren kann. Und das war erst der Anfang: Mittlerweile ergänze ich Google Ads dynamisch um Artikelanzahl, beliebteste Marken, Bewertungen, Preise und vieles Mehr.
Wie das geht zeige ich dir in 7 Schritten. 
Alles, was du brauchst, sind ein Google Ads Konto, ein Google Spreadsheet und gute Ideen.

Für alle, die es eilig haben

Schritt 1: XML-Abfrage über Spreadsheet
Schritt 2: Werbebotschaft bestimmen
Schritt 3: Anzeigen ausrichten
Schritt 4: Aktualisierung timen
Schritt 5: Anzeigenanpassungsdaten in Google Ads
Schritt 6: Zeitplan erstellen
Schritt 7: Anzeigen erstellen

 

Für alle anderen: Viel Spaß beim Lesen. Hast du Use Cases für das Thema Anzeigenautomatisierung mit Strukturierten Daten? Lass es mich wissen!

Ein kleiner Ausflug in die Semantik

Nehmen wir an, du brauchst neue Schuhe. An welche Schuhe denkst du, wenn die Sonne scheint? Was ist, wenn es regnet?

Je nach Kontext kann sich die mentale Repräsentation eines Ausdrucks ändern. Bei Sonnenschein denken wir bei dem Wort Schuh eher an Sandalen. Ist es draußen kalt, kommen uns Stiefeletten in den Sinn.

Besonders generische Begriffe werden in unserem Kopf je nach Kontext anders gefüllt. Kontext kann zum Beispiel das Wetter sein, aber auch Saison, Regionalität oder wichtige Ereignisse können eine Rolle spielen, welche mentale Repräsentation sich durchsetzt.

Das Wort Spielzeug erzeugt unterschiedliche Bilder, je nachdem ob es draußen regnet oder die Temperaturen über 30°C klettern.

Urlaub kann im Winter etwas anderes bedeuten als im Sommer.

Mit Versicherung meinen wir nach einer Naturkatastrophe vielleicht etwas anderes, als zu ruhigen Zeiten.

Automatisierte Wetter-Ads

Bleiben wir bei dem Beispiel Schuhe.

Wie könnte eine Werbeanzeige aussehen bei schönstem Wetter, Sonnenschein und 27°C?

Was wäre eine optimale Anzeige bei Regen, Nässe und 7°C?

Welche Schuhe hast du im Kopf bei Nebelschwaden und 16°C?

Das ist nur ein Beispiel, wie du mit Hilfe von Strukturierten Daten deine Anzeige automatisch anpassen kannst.

Was sind Strukturierte Daten?

Die Automatisierung, die wir vorhaben, funktioniert mit Hilfe von Strukturierten Daten. Es gibt zwei Arten von Daten im Internet: Strukturierte und Unstrukturierte. Strukturiert heißt einfach, dass die Daten in einer formalisierten Struktur vorliegen.
Die Struktur, die uns aus dem Alltag am ehesten bekannt ist, ist die Tabelle. Auch schema.org Auszeichnungen, die man aus dem SEO kennt sind Strukturierte Daten. Strukturierte Daten werden von Besuchern und Programmen (zum Beispiel dem Google Bot) einfacher erkannt. Das gute für uns: Sie lassen sich ganz einfach auslesen.

Was ist XML?

XML oder auch Extensible Markup Language ist eine Möglichkeit, Daten zu strukturieren. Die Daten werden mit XML hierarchisch strukturiert und lassen sich so einfach von Menschen und Maschinen lesen.

OpenWeatherMap-Daten kannst du in XML strukturieren. Das sieht dann so aus:

Schau dir folgende URL an, um die Daten live im Browser zu sehen: https://samples.openweathermap.org/data/2.5/weather?q=London,uk&mode=xml&appid=b6907d289e10d714a6e88b30761fae22

Wenn du schon mal HTML gesehen hast, wird dir das irgendwie bekannt vorkommen. Die beiden Auszeichnungssprachen HTML (Hypertext Markup Language) und XML (Extensible Markup Language) sind sich sehr ähnlich, es gibt nur kleine Unterschiede. Tatsächlich ist HTML aus XML entstanden. Wenn du den entsprechenden Pfad der XML-Datei kennst, kannst du jedes beliebige Datum abrufen.

Bleiben wir bei der OpenWeatherMap

Willst du die aktuelle Temperatur in London abrufen, ist der Pfad /current/temperature/@value.
Interessiert dich die Windgeschwindigkeit, rufst du /current/wind/speed/@value auf.
Den entsprechenden Ausdruck Gentle Breeze bekommst du, wenn du /current/wind/speed/@name aufrufst.
Du kannst auch für den Beginn des Pfades mit Sternchen arbeiten. /*/wind/speed/@name funktioniert genauso, wie die lange Variante.

7 Schritte zur Automatisierten Anzeige

Um deine Anzeigen automatisiert anzupassen brauchst du ein Google Ads Konto, ein Google Spreadsheet und tolle Ideen. Wie das geht, zeige ich dir jetzt.
Falls du deine Anzeigen mit Wetterdaten anreichern willst, brauchst du zusätzlich einen API-Key von OpenWeatherMap. Den bekommst du ganz einfach kostenlos, wenn du dich auf der Website anmeldest.

Schritt 1:
XML-Abfrage über Spreadsheet

Über Google Sheets kannst du mit der Formel IMPORTXMLDaten aus XML-Dateien abrufen.
Die Struktur der Formel sieht so aus:

IMPORTXML(URL; XPath_Abfrage)

XPath_Abfrage meint in unserem Fall den Pfad zu den Daten, die wir verwenden wollen. Willst du die Temperatur in Berlin abrufen, sieht die Formel wie folgt aus:

=IMPORTXML(„https://api.openweathermap.org/data/2.5/weather?q=Berlin,de&mode=xml&units=metric&APPID=ac621e6fe6b20cd4134c48029bc8761f“;„/*/temperature/@value“)

Schauen wir uns kurz die URL der OpenWeatherMap an

Mit q= bestimmst du die Stadt, für die du das Wetter abfragen willst.
Mit mode= bestimmst du die Aufbereitung der Daten.
Mit units= stellst du auf das metrische System um.
Bei APPID= trägst du deine eigene OpenWeatherMap AppId ein.

Achte darauf, dass du sowohl die URL, als auch den XML-Pfad in Anführungszeichen setzt

Du kannst in einem Spreadsheet verschiedene Daten abrufen. Achte darauf, wie du die Spalten in deinem Spreadsheet benennst. Die Spaltenüberschriften sollten dieselben sein, wie die Spaltenbenennungen nachher in deiner Anzeigenanpassungsdatei.

Wie wäre es mit folgender Struktur?

Schritt 2:
Werbebotschaft bestimmen

Abhängig vom aktuellen Wetter wollen wir die Werbebotschaft automatisch anpassen. Du könntest zum Beispiel eine weitere Spalte für die Headline 1 einfügen. Mit einer WENN-DANN-Formel bestimmst du deine Werbebotschaft abhängig vom Wetter.
Genauso kannst du weitere Headlines oder Descriptions hinzufügen. Beachte, Anzeigenanpassungsdaten oder auf Englisch Ad-Customizer funktionieren nicht mit Dynamic Search Ads und bisher auch noch nicht mit Responsiven Suchnetzwerk Anzeigen.

Schritt 3:
Anzeigen ausrichten

In meinem Beispiel habe ich individuelle Wetteranzeigen für jede Stadt erstellt. Die Frage ist jetzt: Wie kann ich die Anzeigen einfach und effektiv targeten?
In den Anzeigenanpassungsdaten ist Targeting auf Location unkompliziert möglich. Das heißt, nur wenn der User sich physikalisch an dem Standort befindet, den wir angeben, wird ihm die entsprechende Anzeige gezeigt. Wir brauchen keine eigenen Kampagnen oder komplizierte Konstrukte, sondern nur eine zusätzliche Spalte in unserer Tabelle.

Schritt 4:
Aktualisierung timen

Damit du auch wirklich immer die aktuellen Daten hast, müssen die Formeln regelmäßig neu berechnet werden. Die einfachste Möglichkeit ist es, die Berechnung über die Tabelleneinstellungen zu timen. Gehe dazu beim Spreadsheet auf Datei > Tabelleneinstellungen… und wähle hier unter dem Reiter Berechnungen die Option Bei Änderungen und stündlich.
Wenn du etwas mehr Kontrolle haben möchtest, kannst du die Aktualisierungen über ein Skript timen.

Der Vorteil?

Datum und Uhrzeit der letzten Aktualisierung werden dir direkt im Skript angezeigt.

Um die Aktualisierungen per Skript zu steuern, musst du zuerst an deine URLs in der IMPORTXML-Formel den Parameter update= anhängen.

Falls es noch kein ? in der URL gibt, schreibst du ?update=

Gibt es bereits ein ? in der URL, hängst du den Parameter mit &update= an.

In einer URL darf es keine zwei ? geben.

Den Parameter brauchen wir, damit die URL erneut geladen wird.

Das Skript aktualisiert nämlich mit einem kleinen Trick: Es hängt aktuelles Datum und Uhrzeit an die URL und zwingt so die Formel, zu aktualisieren.

Öffne jetzt den Skripteditor über den Menüpunkt Tools.

Hier kannst du folgendes Skript einfügen:

function RefreshImports() {
 var lock = LockService.getScriptLock();
 if (!lock.tryLock(5000)) return; // Wait up to 5s for previous refresh to end.

 var id = „SPREADSHEET ID HIER EINTRAGEN“;
 var ss = SpreadsheetApp.openById(id);
 var sheet = ss.getSheetByName(„NAME DES TABELLENBLATTS“);
 var dataRange = sheet.getDataRange();
 var formulas = dataRange.getFormulas();
 var content = „“;
 var now = new Date();
 var time = now.getTime();
 var re = /.*[^a-z0-9]import(?:xml|data|feed|html|range)\\\\(.*/gi;
 var re2 = /((\\\\?|&)(update=[0-9]*))/gi;
 var re3 = /(„,)/gi;

 for (var row=0; row<formulas.length; row++) {
 for (var col=0; col<formulas[0].length; col++) {
content = formulas[row][col];

 if (content != „“) {
 var match = content.search(re);
 if (match !== –1 ) {
 // import function is used in this cell
 var updatedContent = content.toString().replace(re2,„$2update=“ + time);
 if (updatedContent == content) {
 // No querystring exists yet in url
 updatedContent = content.toString().replace(re3,„?update=“ + time + „$1“);
}
 // Update url in formula with querystring param
 sheet.getRange(row+1col+1).setFormula(updatedContent);
 }
 }
 }
}

// Done refresh; release the lock.
lock.releaseLock();

// Show last updated time on sheet somewhere
sheet.getRange(1,1).setValue(„Zuletzt aktualisiert um “ + now.toLocaleTimeString())
}

Unter var id = trägst du die ID deines Spreadsheets ein. Diese kannst du einfach aus der URL kopieren.

Bei var sheet = trägst du den Namen deines Tabellenblatts ein. Bei deutschen Spracheinstellungen ist das in der Regel Tabellenblatt1.

In der drittletzten Zeile sheet.getRange(1,1) kannst du bestimmen, wo in der Tabelle die Information über die Automatisierung geschrieben werden soll. Das Format ist (Zeile/Spalte). (1,1) entspricht also Zelle A1.

Das Skript habe ich übrigens bei Stackoverflow gefunden.

Damit das Skript auch ausgeführt wird, musst du einen Trigger einrichten. Gehe dazu im Skripteditor auf das Uhren-Symbol.

Wähle die Funktion RefreshImports und jetzt kannst du das Zeitintervall einstellen, mit dem deine Tabelle aktualisiert werden soll.

Du kannst bis auf Minuten-Basis aktualisieren, allerdings hast du mit deinem kostenfreien Google-Account nur 1 Stunde Rechner-Zeit pro Tag frei. Eine Aktualisierung jede Stunde ist in der Regel völlig ausreichend.

Schritt 5:
Anzeigenanpassungsdaten in Google Ads

Dein Spreadsheet ist vorbereitet und aktualisiert sich regelmäßig.

Wir wechseln in Google Ads, denn jetzt brauchen wir eine Tabelle mit Anzeigenanpassungsdaten.

Unter Tools > Geschäftsdaten findest du alle deine Daten-Feeds, unter anderem deine Anzeigenanpassungstabellen.

Erstelle eine Tabelle, mit denselben Spaltenüberschriften, die du in deinem Spreadsheet verwendet hast. Vergiss nicht, dass du beim Schreiben deiner Anzeigen auf die Spaltennamen zurückgreifst, also wähle kurze, prägnante Überschriften.

Auch der Name deiner Tabelle sollte kurz und sprechend sein, da du hierauf ebenfalls in deinen Anzeigen zurückgreifst.

Schritt 6:
Zeitplan erstellen

Damit deine Daten regelmäßig in die Anzeigenanpassungsdaten-Tabelle geladen werden, musst du einen Zeitplan erstellen.

Gehe dazu, wenn du deine Tabelle geöffnet hast, auf den Menüpunkt Zeitpläne.

Füge einen neuen Zeitplan hinzu und wähle als Quelle Google Tabellen. Du kannst jetzt direkt auf deinen Google Drive Ordner zugreifen und dein Spreadsheet mit Google Ads verknüpfen.

Jetzt bekommst du den Hinweis, dass du deine Tabelle mit @partnercontent.gserviceaccount.com E-Mail-Adresse teilen sollst. Gehe dafür noch einmal in dein Spreadsheet und gib das Dokument für die angezeigte E-Mail-Adresse frei.

Das kürzeste Aktualisierungsintervall, das du in Google Ads wählen kannst, sind 6 Stunden. Es besteht also die Möglichkeit, dass du Wetterumschwünge nicht rechtzeitig aktualisieren kannst.

Schritt 7:
Anzeigen erstellen

Alle Aktualisierungen, die im Hintergrund passieren, hast du eingestellt, jetzt brauchst du noch das Frontend, sozusagen. Wir bleiben im Google Ads Konto.

Erstelle eine neue Anzeige in der Anzeigengruppe, die deine generischen Keywords beinhaltet, für die du die automatischen Anzeigen schalten willst.

Du hast die Werbebotschaft zu großen Teilen bereits in deinem Spreadsheet festgelegt. Für die Headlines, Descriptions und/oder Pfade der Angezeigten URL, die du automatisch befüllen willst, kannst du jetzt einfach auf deine Anzeigenanpassungsdaten-Tabelle zugreifen.

Wenn du im Google Ads Frontend arbeitest, gib einfach eine geschweifte Klammer { ein und du erhältst bereits Vorschläge.

Die Struktur für den Zugriff auf deine Ad Customizer sieht so aus:

{=tabellenname.spaltenname}
Ad Customizer funktionieren nur, wenn es entweder in der Anzeigengruppe eine Anzeige ohne Anpassungsdaten gibt, oder wenn wir einen Standardtext hinterlegen, der dann ausgespielt wird, wenn keine Anpassungen ausgewählt werden. Für unseren Fall wählen wir die zweite Variante.

Die Struktur dafür sieht aus wie folgt:

{=tabellenname.spaltenname:Standardtext}
Achte darauf, dass du mit keiner Option die maximale Zeichenanzahl überschreitest.

Voilà! Fertig sind unsere Anzeigen, die wir mit Strukturierten Daten automatisiert haben.

Funktioniert das nur mit Wetterdaten?

Die Methode funktioniert nicht nur mit Wetterdaten, sondern mit allen Strukturierten Daten, die sich abfragen lassen. Wenn Daten in Containern verbaut sind, ist die Abfrage leider nicht möglich.

Ich habe gute Erfahrungen gemacht mit Artikelanzahl in Anzeigen. Es ist möglich, Bewertungen, Preise, Headlines und vieles mehr in Anzeigen zu automatisieren.

Sind dir Fragen offen geblieben?
Hast du Use Cases für die Automatisierung mit Strukturierten Daten? Lass mir einen Kommentar da, ich freue mich auf den Austausch.

Stella M. Meyer

Stella M. Meyer

Online-Markterin SEA und Trainerin

Stella ist SEA-Managerin und hält seit 2014 Workshops und Vorträge zum Thema Online-Marketing. Search Engine Advertising (SEA, Google Ads) ist ihre Leidenschaft. Wenn Stella gerade nicht an Werbekonten und Kampagnen optimiert, findest du sie draußen in der Natur oder singend im Chor.

Du hast eine Frage an Stella? Sende ihr gerne deine Frage über das Kontaktformular. Sie meldet sich dann bei dir.

Du möchtest dich mit Starkes.marketing über
die Steigerung deiner Werbechancen durch Google Ads unterhalten?

Logo der Online Marketing Agentur Starkes.Marketing Ludwigsburg

Wir freuen uns, wenn du dich für unseren Newsletter anmeldest:

Starkes.marketing sendet dir alle 14 Tage eine starke E-Mail. Melde dich jetzt an und verpasse keine Updates mehr!

Du bist dabei! Checke bitte deine E-Mails und bestätige deine Eintragung. Danke.

Logo der Online Marketing Agentur Starkes.Marketing Ludwigsburg

Wir freuen uns, wenn du dich für unseren Newsletter anmeldest:

Starkes.marketing sendet dir alle 14 Tage eine starke E-Mail. Melde dich jetzt an und verpasse keine Updates mehr!

Du bist dabei! Checke bitte deine E-Mails und bestätige deine Eintragung. Danke.