Weniger Social-Shopping-Chaos in Shopware: Wie aus meinem ersten Plugin ein leichterer Feed-Export wurde

Weniger Social-Shopping-Chaos in Shopware: Wie aus meinem ersten Plugin ein leichterer Feed-Export wurde

SwagSocial ist super, wenn Produkte schnell und unkompliziert in Social-Media-Verkaufskanäle gebracht werden sollen. Google, Facebook, Instagram und Co. bekommen ihren Produktfeed, der Händler bekommt eine Export-URL — grundsätzlich läuft die Sache. Aber habt ihr das Ganze schon einmal in einer Shopware-Instanz mit 20 Shops ausprobiert? Dann wird aus „schnell eingerichtet“ ziemlich schnell „wo war nochmal welcher Kanal?“. Wenn jeder Shop zusätzlich zwei Social-Shopping-Kanäle mitbringt, stehen im Backend nicht mehr 20 Verkaufskanäle, sondern plötzlich 60. Und genau da entstand die Idee: ein Plugin, das grundlegende Social-Shopping-Feeds bereitstellt, ohne für jeden Shop zusätzliche Verkaufskanäle anzulegen.

Was machen Social-Shopping-Kanäle eigentlich?

Bevor es an die Entwicklung ging, musste erst einmal klar sein, was die SwagSocial-Kanäle überhaupt machen. Kurz gesagt: Sie stellen Produktdaten aus einem Shopware-Shop für Plattformen wie Google, Facebook oder Instagram bereit. Dafür wird ein Produktdatenfeed erzeugt, meistens als XML-Datei. Darin enthalten sind zum Beispiel Produktnummer, Titel, Beschreibung, Preis, Verfügbarkeit, Bilder, Kategorien und Varianteninformationen. Aus diesem Feed entsteht eine Export-URL. Diese URL wird dann im Google Merchant Center oder im Meta Commerce Manager hinterlegt. Die Plattformen rufen den Feed regelmäßig ab und aktualisieren dadurch die Produktdaten im jeweiligen Katalog. Über Twig-Templates kann außerdem festgelegt werden, welche Daten im Feed ausgegeben werden. Das ist flexibel, wird bei vielen Shops und vielen Kanälen aber schnell unübersichtlich.

Da das Plugin in PHP umgesetzt werden musste und ich damit bisher noch nicht besonders viele Berührungspunkte hatte, habe ich KI als Unterstützung genutzt. Nicht als fertige Lösung auf Knopfdruck, sondern eher, um schneller in die Shopware-Struktur reinzukommen, Ansätze zu prüfen und Fehler gezielter einzugrenzen. Das Ziel war klar: Der Nutzer soll eine Storefront auswählen können und anschließend die passenden Export-URLs für Google und Meta angezeigt bekommen. Die Links sind nicht veränderbar, sondern nur kopierbar. Niemand soll versehentlich an der URL herumtippen, aber jeder soll sie schnell in Google oder Meta einfügen können. Wichtig war außerdem, dass nicht nur einfache Produkte ausgegeben werden, sondern auch aktive Varianten. Gerade bei Produktfeeds ist das entscheidend, weil Varianten oft eigene Größen, Farben, Preise, Artikelnummern oder Verfügbarkeiten haben.

Das Template: lieber fest als frei konfigurierbar

Relativ früh kam die Frage auf: Wo sollen die Twig-Templates gepflegt werden? Eine erste Idee war, die Templates pro Storefront in der Plugin-Konfiguration editierbar zu machen. Technisch möglich, aber für diesen Anwendungsfall nicht ideal. Denn wenn das Ziel ein einfacher und einheitlicher Export ist, bringt ein frei editierbares Template-Feld schnell wieder genau die Komplexität zurück, die man eigentlich vermeiden wollte. Deshalb liegt das Template fest im Plugin. Dadurch bleibt der Feed für alle Storefronts einheitlich, wartbar und weniger fehleranfällig.

Codeausschnitt aus dem Plugin

Die Sache mit der Aktualisierung

Anfangs gab es noch einen Haken: Die Exporte ließen sich nur über ein Sync-Command in der Konsole aktualisieren. Für Entwickler ist das okay. Für Anwender eher nicht. Deshalb wurde die Logik angepasst. Sobald in der Plugin-Konfiguration eine konkrete Storefront ausgewählt wird, prüft das Plugin die benötigten Exporte und stellt die passenden Links bereit. Die URL selbst bleibt dabei unverändert. Wenn Produkte geändert oder neue Varianten angelegt werden, muss sie also nicht neu bei Google oder Meta hinterlegt werden. Entscheidend ist der Inhalt hinter der URL. Je nach Einstellung wird der Feed live beim Abruf erzeugt oder per Scheduler in festen Intervallen im Hintergrund aktualisiert. Das Intervall lässt sich pro Storefront festlegen. Wichtig dabei: Der Scheduler überträgt nichts automatisch an Google oder Meta. Er sorgt nur dafür, dass die Datei in Shopware aktuell ist. Google und Meta holen sich diese Datei weiterhin über ihren geplanten Abruf. Damit das zuverlässig funktioniert, müssen auf dem Server die Shopware Scheduled Tasks beziehungsweise die Message Queue korrekt laufen.

Das Ergebnis

Am Ende ist daraus ein Plugin entstanden, das genau das macht, was im Alltag gebraucht wird: Storefront auswählen, Feed-Links kopieren, fertig. Keine zusätzlichen Social-Shopping-Verkaufskanäle pro Shop. Keine manuelle Template-Pflege in der Administration. Keine veränderbaren Export-URLs. Und trotzdem Feeds für Google und Meta. Natürlich ersetzt das Plugin nicht jede Spezialanforderung. Wer komplexe Sortimente, individuelle Produktlogiken oder sehr spezifische Feed-Strukturen braucht, wird weiterhin genauer hinschauen müssen. Aber für den Standardfall ist die Lösung deutlich schlanker: weniger Kanäle, weniger Klickwege, weniger Verwirrung.