Skip to main content

Google Shopping Feed in Shopware einrichten

  • Geschrieben von Michael am 13.10.2020

PDF herunterladen

Schritt für Schritt: Wie man den Google Shopping Feed in Shopware Systemen einbaut

Für Betreiber von Online Shops ist Google Shopping ein hervorragend geeigneter Kanal, um vergleichsweise kostengünstig an Conversion-starken Traffic zu gelangen. Damit die angebotenen Produkte ins Google Merchant Center geladen werden, muss ein Produktexport („Google Shopping Feed“) eingerichtet werden, über den zwingend notwendige und optionale Produktdatenspezifikationen an Google übergeben werden. In diesem Beitrag zeige ich Ihnen, wie dieser im Online-Shop-System Shopware umgesetzt werden kann.

Vorbetrachtungen

Es gibt verschiedene Möglichkeiten, Produktdaten ins Google Merchant Center zu übergeben. Die einfachste aber gleichzeitig unflexibelste ist der manuelle Upload einer Tabelle, die die Produktdatenspezifikationen für jedes Produkt enthält.

Für größere Online-Shops, bei denen sich Angebot, Lagerbestand und Preise regelmäßig ändern, ist ein solcher manueller Upload nach jeder Änderung viel zu aufwändig. Vielmehr bietet es sich an, einen regelmäßigen Export (z. B. täglich) der Produktdaten durchzuführen und diesen automatisch dem Google Merchant Center zur Verfügung zu stellen.

Konfiguration des Produktexports im Shopware-Backend

google shopping shopware backend prodkutexport
Ein solcher automatischer Export wird im Shopware-Backend unter „Marketing > Produktexporte“ konfiguriert.

Hier sollte sich bereits eine Liste mit Templates für verschiedene Produktexporte finden. Der automatische Export für Google Shopping kann u. a. als XML-Datei oder als TXT-Datei erfolgen. Im Beispiel zeige ich Ihnen die Konfiguration für den Export als TXT-Datei. Das vorbereitete Shopware-Template trägt den Titel „Google Produktsuche“. Über einen Klick auf den Stift in der rechten Spalte kann dies bearbeitet werden.

googl shopping shopware feed produktfeed

Im oberen Bereich des sich öffnenden Fensters erfolgt die grundlegende Konfiguration des Produkt-Feeds. Hier können u. a. aussagekräftige Feed- und Dateinamen vergeben, die zu exportierenden Shops und Kategorien ausgewählt sowie der Feed-Export aktiv gestellt werden. Sollen die Produktvarianten exportiert werden, muss im entsprechenden Dropdown-Auswahlfeld „Ja“ ausgewählt werden.

screenshot formatierung google shopping feed shopware
In der unteren Fensterhälfte finden sich verschiedene Tabs, in denen der Produkt-Feed selbst angepasst werden kann.

Im ersten Tab „Formatierung“ sollte als Zeichenkodierung „UTF-8“ sowie als Dateiformat „TXT mit Tab als Trennzeichen“ gesetzt werden. Damit ist sichergestellt, dass im Google Merchant Center Sonderzeichen wie Umlaute o. ä. korrekt interpretiert und in den Shopping-Anzeigen fehlerfrei dargestellt werden.

screenshop kopfzeile google shopping feed shopware
In den folgenden Tabs werden Struktur und Inhalt der Export-Tabelle bestimmt.

In den folgenden Tabs werden Struktur und Inhalt der Export-Tabelle bestimmt. Im Tab „Kopfzeile“ müssen die Attribute der Produktdatenspezifikation festgelegt werden, die an das Google Merchant Center übergeben werden sollen. Sie stellen die Spaltenbeschriftungen der Export-Tabelle dar. Einige Attribute sind verpflichtend (z. B. „id“, „title“), andere optional (z. B. google_product_category). Eine vollständige Auflistung findet sich direkt bei Google.

Für eine grundlegende Konfiguration sollten die folgenden Attribute exportiert werden:

{strip}

id{#S#}

title{#S#}

descripton{#S#}

link{#S#}

image_url{#S#}

brand{#S#}

identifier_exists{#S#}

gtin{#S#}

mpn{#S#}

price{#S#}

currency{#S#}

availability

{/strip}{#L#}

google shopping feed shopware template screenshot

Im Tab „Template“ wird festgelegt, aus welchen Quellen und in welchem Format die zu exportierenden Werte für die Export-Tabelle stammen. Für eine grundlegende Konfiguration sollte dort der folgende Code eingefügt werden:

{assign var=”string” value=$sArticle.articleID|articleImages:$sArticle.ordernumber:2:”##”|escape}

{assign var=”productVariantImage” value=”##”|explode:$string}

{strip}

{$sArticle.ordernumber|escape}{#S#}

{$sArticle.name|strip_tags|strip|truncate:80:”…”:true|htmlentities|escape}{#S#}

{$sArticle.description_long|strip_tags|html_entity_decode|trim|regex_replace:”#[^w.%&-+ ]#iu”:””|strip|truncate:500:”…”:true|htmlentities|escape}{#S#}

{$sArticle.articleID|link:$sArticle.name}{if $sArticle.additionaltext}?number={$sArticle.ordernumber}{/if}{#S#}

{$productVariantImage[0]}{#S#}

{$sArticle.supplier|escape}{#S#}

{if $sArticle.ean}yes{else}no{/if}{#S#}

{$sArticle.ean|escape}{#S#}

{$sArticle.suppliernumber|escape}{#S#}

{$sArticle.price|replace:”,”:”.”}{” EUR”}{#S#}

{if $sArticle.esd}Auf Lager

{elseif $sArticle.instock>0}Auf Lager

{elseif $sArticle.releasedate && $sArticle.releasedate|strtotime > $smarty.now}Vorbestellt

{elseif $sArticle.shippingtime}Auf Lager

{else}Nicht auf Lager{/if}

{/strip}{#L#}

produktexport google shopping shopware backend
Ein solcher automatischer Export wird im Shopware-Backend unter „Marketing > Produktexporte“ konfiguriert.

{assign var=”string” value=$sArticle.articleID|articleImages:$sArticle.ordernumber:2:”##”|escape}

{assign var=”productVariantImage” value=”##”|explode:$string}

Dieser dem eigentlichen Code für den Google Shopping Feed Produktexport vorangestellte Abschnitt fragt die Artikelbilder pro Artikel-ID ab und speichert diese in einem String, der später ausgelesen werden kann.

{strip}

{$sArticle.ordernumber|escape}{#S#}

Als Produkt-ID („id“) wird die Artikelnummer gesetzt.

{$sArticle.name|strip_tags|strip|truncate:80:”…”:true|htmlentities|escape}{#S#}

Das Attribut „title“ enthält die hinterlegte Artikel-Bezeichnung, verkürzt auf 80 Zeichen und bereinigt von möglicherweise in diesem Feld genutzten HTML-Code.

{$sArticle.description_long|strip_tags|html_entity_decode|trim|regex_replace:”#[^w.%&-+ ]#iu”:””|strip|truncate:500:”…”:true|htmlentities|escape}{#S#}

Die Artikel-Beschreibung („description“) speist sich aus der auf 500 Zeichen verkürzten Beschreibung, die um HTML-Code und andere Sonderzeichen bereinigt wird.

{$sArticle.articleID|link:$sArticle.name}{if $sArticle.additionaltext}?number={$sArticle.ordernumber}{/if}{#S#}

Der Link zur Artikeldetailseite. Handelt es sich um Produktvarianten, so wird der Parameter „?number=“ an die URL des Stamm-Artikels zugefügt und um die Artikelnummer der Produktvariante ergänzt.

Bsp.:

Artikel ohne Variante: https://www.shop-domain.tld/artikel-ohne-variante

Variante: https://www.shop-domain.tld/variantenartikel?number=AN0001

{$productVariantImage[0]}{#S#}

Der Link zum Artikelbild („image_url“) führt immer zum ersten dem Artikel zugewiesenen Bild (Index 0). Das Auslesen erfolgt aus dem in den ersten beiden Code-Zeilen definierten String.

{if $sArticle.ean}yes{else}no{/if}{#S#}

Wenn für einen Artikel keine GTIN existiert, gibt es im Google Shopping Feed die Möglichkeit, über das Attribut „identifier_exists“ ein „no“ zu übergeben. Über diese Code-Zeile wird abgefragt, ob ein Wert für die als GTIN zu verwendende EAN dem Artikel zugeordnet ist. Wenn dem nicht so ist, wird die Ausprägung auf „no“ gesetzt, andernfalls auf „yes“.

{$sArticle.ean|escape}{#S#}

Als „gtin“ wird die am Artikel hinterlegte EAN genutzt.

{$sArticle.supplier|escape}{#S#}

Als Attribut „brand“ wird der Inhalt des Artikel-Feldes „Hersteller“ gesetzt.

{$sArticle.suppliernumber|escape}{#S#}

Die „mpn“ wird mit dem Inhalt des Artikel-Feldes „Herstellernummer“ gefüllt.

{$sArticle.price|replace:”,”:”.”}{” EUR”}{#S#}

Der Preis des Artikels. Das Komma als Trennzeichen wird im Feed durch einen Punkt ersetzt. Zudem wird an den Preis gefolgt von einem Leerzeichen die Währungsbezeichnung „EUR“ angehängt.

{if $sArticle.esd}Auf Lager

{elseif $sArticle.instock>0}Auf Lager

{elseif $sArticle.releasedate && $sArticle.releasedate|strtotime > $smarty.now}Vorbestellt

{elseif $sArticle.shippingtime}Auf Lager

{else}Nicht auf Lager{/if}

Die Artikelverfügbarkeit wird anhand verschiedener Konditionen an den Google Shopping Feed übergeben. Falls es sich um einen Download-Artikel handelt ($sArticle.esd), der Bestand ($sArticle.instock) größer als 0 ist oder eine Lieferzeit ($sArticle.shippingtime) hinterlegt ist, wird für das Attribut „availability“ der Wert „Auf Lager“ übergeben. Wenn das Veröffentlichungsdatum in der Zukunft liegt, dann wird das Attribut auf „Vorbestellt“ gesetzt. In allen anderen Fällen wird „Nicht auf Lager“ übergeben.

{/strip}{#L#}

Ist alles eingerichtet, können die Änderungen über den Button „Speichern und schließen“ gespeichert werden. Zurück auf der Übersichtsseite „Produktexporte“ kann über das Blitzsymbol neben dem Eintrag der Export zum ersten Mal gestartet werden. Die TXT-Datei öffnet sich in einem neuen Tab, kann von dort heruntergeladen und per Import in einem Tabellenkalkulationsprogramm wie Excel überprüft werden. Die URL der TXT-Datei im Browser ist gleichzeitig die Feed-URL, welche für den regelmäßigen automatischen Abruf im Google Merchant Center hinterlegt werden sollte.

Titelbild © MclittleStock / stock.adobe.com

Kommentare

Hallo Michael,
danke für die Beschreibung.
Inzwischen gibt es auch die Auswertung des merchant centers in der SearchConsole.
Da ist mir jetzt unter „Produkte“ aufgefallen:
Warnung
Feld „priceValidUntil“ fehlt
Und das bei allen meinen Produktseiten.

Wie kann ich das erweitern? Bin ich hier auf der richtigen Spur?
Freue mich schon über Hilfe.

besten Dank, Tom

michael magura

Michael Magura

Hallo Tom,

dein Problem ist in den auf den Produktdetailseiten implementierten strukturierten Daten begründet, nicht im Produkt-Feed, der die Produktdatenspezifikationen an das Google Merchant Center übergibt.

"priceValidUntil" ist dabei eine empfohlene Property der strukturierten Daten vom Typ "Offer": https://developers.google.com/search/docs/data-types/product?hl=de#pricevaliduntil

Hallo Michael,
vielen Dank für diesen hilfreichen Post.
Leider klappt der Export nicht, vielleicht hast du eine Idee, woran das liegen könnte.
Ich habe alles so wie beschrieben eingerichtet und erhalte folgende Fehlermeldung:

<h2><span class="frontend_error_exception">Ups! Ein Fehler ist aufgetreten!</span></h2>

<p>
<span class="frontend_error_exception">Die nachfolgenden Hinweise sollten Ihnen weiterhelfen.</span>
</p>

<h3> in engine/Library/Smarty/sysplugins/smarty_internal_templatecompilerbase.php on line 657</h3>

<h3>Stack trace:</h3>
<div style="overflow:auto;">
<pre>#0 engine/Library/Smarty/sysplugins/smarty_internal_templateparser.php(3144): Smarty_Internal_TemplateCompilerBase->trigger_template_error() #1 engine/Library/Smarty/sysplugins/smarty_internal_templateparser.php(3209): Smarty_Internal_Templateparser->yy_syntax_error(10, ‘xE2’) #2 engine/Library/Smarty/sysplugins/smarty_internal_smartytemplatecompiler.php(105): Smarty_Internal_Templateparser->doParse(10, ‘xE2’) #3 engine/Library/Smarty/sysplugins/smarty_internal_templatecompilerbase.php(192): Smarty_Internal_SmartyTemplateCompiler->doCompile(‘{foreach $sArti…’) #4 engine/Library/Smarty/sysplugins/smarty_internal_template.php(187): Smarty_Internal_TemplateCompilerBase->compileTemplate(Object(Enlight_Template_Default)) #5 engine/Library/Smarty/sysplugins/smarty_internal_templatebase.php(155): Smarty_Internal_Template->compileTemplateSource() #6 engine/Shopware/Plugins/Community/Frontend/PremsDiscountCategory/Subscriber/Export.php(290): Smarty_Internal_TemplateBase->fetch(‘string:{foreach…’, 1) #7 engine/Shopware/Plugins/Community/Frontend/PremsDiscountCategory/Subscriber/Export.php(79): ShopwarePremsDiscountCategorySubscriberExport->replaceExecuteExportShopware530(Object(Enlight_Hook_HookArgs)) #8 engine/Library/Enlight/Event/Handler/Default.php(91): ShopwarePremsDiscountCategorySubscriberExport->replaceExecuteExport(Object(Enlight_Hook_HookArgs)) #9 engine/Library/Enlight/Hook/HookExecutionContext.php(152): Enlight_Event_Handler_Default->execute(Object(Enlight_Hook_HookArgs)) #10 engine/Library/Enlight/Hook/HookExecutionContext.php(107): Enlight_Hook_HookExecutionContext->executeReplaceChain(Array) #11 engine/Library/Enlight/Hook/HookManager.php(185): Enlight_Hook_HookExecutionContext->execute() #12 var/cache/production_201906060858/proxies/sExportProxy.php(114): Enlight_Hook_HookManager->executeHooks(Object(Shopware_Proxies_sExportProxy), ‘executeExport’, Array) #13 engine/Shopware/Controllers/Backend/Export.php(133): Shopware_Proxies_sExportProxy->executeExport(Resource id #1137) #14 engine/Shopware/Controllers/Backend/Export.php(90): Shopware_Controllers_Backend_Export->generateExport(‘/usr/local/www/…’) #15 engine/Library/Enlight/Controller/Action.php(192): Shopware_Controllers_Backend_Export->indexAction() #16 engine/Library/Enlight/Controller/Dispatcher/Default.php(563): Enlight_Controller_Action->dispatch(‘indexAction’) #17 engine/Library/Enlight/Controller/Front.php(222): Enlight_Controller_Dispatcher_Default->dispatch(Object(Enlight_Controller_Request_RequestHttp), Object(Enlight_Controller_Response_ResponseHttp)) #18 engine/Shopware/Kernel.php(202): Enlight_Controller_Front->dispatch() #19 vendor/symfony/http-kernel/HttpCache/SubRequestHandler.php(102): ShopwareKernel->handle(Object(SymfonyComponentHttpFoundationRequest), 1, true) #20 vendor/symfony/http-kernel/HttpCache/HttpCache.php(448): SymfonyComponentHttpKernelHttpCacheSubRequestHandler::handle(Object(ShopwareKernel), Object(SymfonyComponentHttpFoundationRequest), 1, true) #21 engine/Shopware/Components/HttpCache/AppCache.php(260): SymfonyComponentHttpKernelHttpCacheHttpCache->forward(Object(SymfonyComponentHttpFoundationRequest), true, NULL) #22 vendor/symfony/http-kernel/HttpCache/HttpCache.php(238): ShopwareComponentsHttpCacheAppCache->forward(Object(SymfonyComponentHttpFoundationRequest), true) #23 engine/Shopware/Components/HttpCache/AppCache.php(105): SymfonyComponentHttpKernelHttpCacheHttpCache->pass(Object(SymfonyComponentHttpFoundationRequest), true) #24 shopware.php(122): ShopwareComponentsHttpCacheAppCache->handle(Object(SymfonyComponentHttpFoundationRequest)) #25 {main}</pre>
</div>
<div class="doublespace">&nbsp;</div>

michael magura

Michael Magura

Hallo DFranz,

ohne Blick in das Backend ist eine Fehleranalyse schwierig. Meine Vermutung ist, dass es an einer fehlerhaften Übernahme der im Artikel beschriebenen Code-Ausschnitte liegt. Versuche mal, alle Hochkommata durch " zu ersetzen.

Viele Grüße
Michael

Hallo Michael,
das war die Lösung! Vielen Dank für diesen Post und die Antwort zeigt auch die fundierten Kenntnisse.
Eine sehr gut ausgearbeitete Lösung für die Shopware Produktexporte!
Viele Grüße

Hallo Michael,

vielen Dank für den tollen Artikel.
Ich habe genau die Schritte befolgt, wie du es beschrieben hast und erhalte im Mechant Center eine Fehlermeldung
"Zu wenige Spaltentrennzeichen
Ihre Artikel enthalten weniger Attribute als in der Kopfzeile angegeben.
Weitere Informationen
Im Folgenden finden Sie einige Beispiele für Artikel, die von diesem Problem betroffen sind."

Hättest du einen Tipp für mich?

Vg
Maik

Michael Magura

Hallo Maik,
die Fehlermeldung sagt grundsätzlich, dass im Produktexport nicht für alle in der Kopfzeile definierten Attribute Inhalte aus den Artikeleigenschaften übergeben werden: https://support.google.com/merchants/answer/160033?hl=de

Ich sehe hier zwei Problemansätze:
– Entweder ist es ein Copy-and-Paste Problem, wodurch nicht alle Anweisungen in den Tab "Template" im Shopware-Backend eingefügt wurden.
– Oder die in den Produktexport übernommenen Inhalte aus den Artikel-Attributen führen zu Fehlern (aufgrund von enthaltenen Sonderzeichen, Formatierungen o. ä.).

Ein erster Ansatzpunkt wäre, die Exportdatei in Excel zu importieren und die Verteilung der Inhalte auf die Spalten zu überprüfen.

Viele Grüße
Michael

Hallo Michael
toller Artikel, vielen Dank dafür
Hast du eine Idee wie man "availability date" einfügen kann. Bisher bin ich noch nicht dahinter gestiegen.

VG
Zeljko

Michael Magura

Hallo Zeljko,
dazu musst du zum einen im Tab "Kopfzeile" ein zusätzliches Attribut "availability_date" einfügen. Im Tab "Template" gibst du dann an der entsprechenden Stelle an, woher der Wert für dieses Attribut geholt wird. Wenn du für "availability_date" bspw. via Freitext-Verwaltung ein neues Freitextfeld "attr4" angelegst, dann kann die Code-Zeile so aussehen:
{if $sArticle.attr4}{$sArticle.attr4}{#S#}

Bitte beachte auch die Hinweise von Google: https://support.google.com/merchants/answer/6324470?hl=de

Viele Grüße
Michael

Hallo Michael,

ich möchte auf diesem Weg einfach mal Danke sagen, also… vielen Dank für diesen wunderbaren Beitrag !

Ich habe Dein Beitrag auf der Suche nach einer Lösung verschiedenster Warnung im Google Merchant Center gefunden und die Anleitung, für mich und meinen Shop umgesetzt. Besonders hilfreich ist für mich der Punkt mit den Produktvarianten und dem entsprechenden Export der Bilder.

Auch ich hatte anfänglich dass Problem mit der oben beschriebenen Fehlermeldung, konnte diese aber schnell anhand der Kommentare lösen.

An dieser Stelle nochmal mein herzlichen Dank,
viele Grüße,
Stefan

Guten Morgen auch ich bin duch die Google Suche hier gelandet der Export feed sieht schonmal viel besser aus als das was ich vorher hatte, nur sagt mir das Merchant Center
Ungültiges oder fehlendes erforderliches Attribut: id (Obwohl ich es oben so rauskopiert habe)
Zu viele Spaltentrennzeichen Zeilennummer 258

Ich wäre für ne kleine Hilfestellung Dankbar

Michael Magura

Hallo Sascha,
als Spaltentrennzeichen im Template werden Tabulator-Zeichen genutzt. Diese kommen normalerweise nicht in den eigentlichen Zelleninhalten vor. Die Fehlermeldung lässt darauf schließen, dass kurz vor Zeile 258 in der Exportdatei ein Tabulator-Zeichen im eigentlichen Zelleninhalt dafür sorgt, dass sich die Spaltenzuordnung verschiebt und damit der eigentliche Inhalt für das Attribut id (und alle folgenden) nicht mehr korrekt in die eigentlich dafür vorgesehenen Spalten geschrieben wird.

Du müsstest in den Attributen des Produkts, welches kurz vor Zeile 258 exportiert wird, nachschauen, ob dort irgendwo ein Tabulator-Zeichen vorkommt und dieses aus dem Produktattribut entfernen. Dann sollte der Export auch korrekt funktionieren.

Viele Grüße
Michael


Hast du eine Frage oder Meinung zum Artikel? Schreib uns gerne etwas in die Kommentare.

Ihre E-Mail Adresse wird nicht veröffentlicht

Jetzt den SEO-Küche-Newsletter abonnieren

Ähnliche Beiträge

SEO Game

Gewinne einen Ether-Coin bei diesem SEO-Rätsel

  • christoph pawletko
  • von Christoph
  • 28.10.2021

Das SEO-Game 2021: Rätselfreunde und SEO-Experten aufgepasst Ihr wisst alles, was mit SEO auch nur im Entferntesten zu tun hat? Ihr blüht erst so richtig auf, wenn Ihr euch in ein schwieriges Problem so richtig vertiefen könnt? Und bei Rätseln leuchten Eure Augen? Dann ist das SEO-Game 2021 wie für […]

weihnachts wunschzettel

5 Content-Ideen für ein erfolgreiches Weihnachtsmailing

  • Nina
  • von Nina Weller
  • 21.10.2021

Unsere Tipps für euren Weihnachtsnewsletter Nur noch wenige Wochen bis Weihnachten. Für viele Unternehmen heißt es jetzt noch mal Vollgas geben, damit noch viele der eigenen Produkte unter dem Baum landen. Jetzt ist also die beste Zeit, um eine Weihnachtsmailing-Kampagne zu planen und zum passenden Zeitpunkt durch den digitalen Kamin […]

blog für onlineshop sinnvoll

Braucht ein Online Shop einen Blog?

  • christoph pawletko
  • von Christoph
  • 13.10.2021

Content ist King. Diesen Satz liest und hört man seit Jahren, wenn es um Erfolg im Online-Bereich geht. Gerade für Online Shops kann gutes Content Marketing den entscheidenden Unterschied ausmachen, um vor der Konkurrenz zu landen. Content Marketing ist mittlerweile für den E-Commerce Bereich so wichtig, dass schon von Content […]

online marketing weihnachten tipps

Das müssen SEOs für die Weihnachtszeit beachten

  • christoph pawletko
  • von Christoph
  • 01.10.2021

Noch ist der Sommer nicht lange vorbei, doch als SEO denkt man immer einige Monate voraus. Schon jetzt lohnt es sich, für die Weihnachtszeit zu planen, denn traditionsgemäß werden in den letzten Wochen vor Jahresende im E-Commerce die besten Umsätze gemacht. Da viele Maßnahmen etwas Zeit benötigen, um ihre volle […]

produktbeschreibungen duplicate content google meinung

Das passiert, wenn Ihr Eure Produkttexte einfach vom Hersteller kopiert

  • christoph pawletko
  • von Christoph
  • 23.09.2021

Viele Webseitenbetreiber stehen vor dem Problem, dass sie für viele Tausend Produkte in Ihren Onlineshops kaum für jedes einzelne Produkt eigene Produkttexte erstellen können. Oft werden dann die Produktbeschreibungen vom Hersteller übernommen, was jedoch zu Duplicate Content führen kann. Solche doppelten Inhalte will man in der Regel vermeiden, da diese […]

degut 2021 arena berlin

Die deGUT lädt ein – Wir sind dabei

  • christoph pawletko
  • von Christoph
  • 17.09.2021

Mit vielen Seminaren, Workshops und Infos rund um Existenzgründung und Unternehmertum können sich Teilnehmer am 29. Und 30. Oktober bei den Deutschen Gründer- und Unternehmertagen in der ARENA Berlin informieren und beraten lassen. Nach langer Zeit ohne Veranstaltungen ist die SEO-Küche auch wieder dabei und bietet Interessierten die Möglichkeit ins […]