OpenAI und Google Shopping Produktfeed
Die Erweiterung bringt zwei Verkaufskanal-Typen mit, die einen Produktfeed ohne selbst geschriebenes Template erzeugen. Welche Felder der Feed enthält, legst du über eine Feldzuordnung fest.
| Verkaufskanal-Typ | Format | Zweck | Kosten |
|---|---|---|---|
| Google Shopping Produktfeed (Lenz) | XML | Feed für das Google Merchant Center | im Plugin enthalten |
| OpenAI Produktfeed (Lenz) | JSONL | Feed für ChatGPT Shopping, Übertragung per SFTP | In-App-Kauf „OpenAI Produktfeed" |
Beide Typen arbeiten wie ein Shopware-Produktvergleich: Shopware erzeugt die Datei, stellt sie unter der Export-URL bereit und aktualisiert sie nach dem Generierungsintervall. Achte beim Anlegen auf den Zusatz „(Lenz)" im Namen des Typs.
Verkaufskanal anlegen
- Lege über Verkaufskanal hinzufügen einen Verkaufskanal vom Typ Google Shopping Produktfeed (Lenz) oder OpenAI Produktfeed (Lenz) an. Wie beim Produktvergleich brauchst du dafür eine dynamische Produktgruppe.
- Der neue Verkaufskanal startet mit der Voreinstellung seines Typs: Feldzuordnung, Kopf- und
Fußzeile, Dateiname und Dateiformat sind gesetzt. Ist der vorgeschlagene Dateiname schon vergeben,
hängt die Erweiterung eine Zahl an (
google-shopping-2.xml). - Wähle Storefront-Verkaufskanal, Storefront-Domain und Dynamische Produktgruppe und speichere.
| Voreinstellung | Google Shopping Produktfeed | OpenAI Produktfeed |
|---|---|---|
| Dateiname | google-shopping.xml |
openai-products.jsonl |
| Dateiformat | XML | JSONL (JSON Lines) |
| Zeichenkodierung | UTF-8 | UTF-8 |
| Varianten als eigene Produkte exportieren | Shopware-Standard | eingeschaltet |
| Per Scheduler generieren | Shopware-Standard | eingeschaltet |
| Generierungsintervall | Shopware-Standard | 1 Tag |
Kundengruppe
Anders als beim Shopware-Produktvergleich kannst du die Kundengruppe des Feeds selbst wählen. Die Preise im Feed werden für diese Kundengruppe berechnet, einschließlich Preisregeln und Brutto- oder Netto-Anzeige. Wechselst du den Storefront-Verkaufskanal, setzt Shopware die Kundengruppe auf dessen Standard-Kundengruppe zurück.
Feldzuordnung
Die Karte Feldzuordnung steht im Tab Template über den Template-Feldern. Aus der Zuordnung erzeugt die Erweiterung beim Bearbeiten automatisch die Produktzeile; dieses Feld kannst du deshalb nicht direkt bearbeiten. Kopfzeile und Fußzeile bleiben frei editierbar. Template testen und Vorschau generieren arbeiten immer mit dem aktuellen Stand.
Einstellungen
Unter Einstellungen stehen Angaben, die es in Shopware nicht gibt und die direkt in den Feed übernommen werden.
Google Shopping Produktfeed
| Einstellung | Bedeutung |
|---|---|
| Versand je Land | Eine Zeile pro Lieferland mit den Spalten Land (z. B. DE), Versandart und Preis (Twig). Der Preis ist eine Twig-Vorlage und kann zum Beispiel vom Gewicht (product.weight) oder vom Preis (productPrice) abhängen; er enthält die Währung. Ohne Zeile wird kein Versand übermittelt. Voreingestellt sind DE und AT mit 4.95 bis zu einem Produktpreis von 100, darüber 0. |
OpenAI Produktfeed
| Einstellung | Bedeutung |
|---|---|
| Verkäufername | Leer lassen, um den Namen des Storefront-Verkaufskanals zu verwenden. |
| Link zur Datenschutzerklärung | Vollständige Adresse der Seite, beginnend mit https://. |
| Link zu den AGB | Vollständige Adresse der Seite, beginnend mit https://. |
| Link zur Widerrufsbelehrung | Vollständige Adresse der Seite, beginnend mit https://. |
| Rückgabefrist in Tagen | Zum Beispiel 14. Leer lassen, wenn keine Rückgabe angeboten wird. |
Felder
Die Felder des Feeds sind nach Themen gruppiert: Grunddaten, Preise, Verfügbarkeit, Bilder, Kategorie und Kennzeichnung, Varianten und Merkmale, Versand und Maße, Verkäufer und Rückgabe, Kampagnen und Weitere. Mit Bearbeiten öffnest du ein Feld:
| Angabe | Bedeutung |
|---|---|
| Feld im Feed | Name des Felds im Feed. Punkte verschachteln (dimensions.length), [1] oder [*] wiederholen. |
| Typ | Text, Zahl, Ja/Nein, Liste (ein Eintrag pro Zeile) oder Schlüssel-Wert (eine Zeile pro Eintrag im Format Schlüssel: Wert). |
| Pflichtfeld: Produkt ohne Wert überspringen | Fehlt der Wert, kommt das Produkt nicht in den Feed. |
| Wiederholen für | Nur bei Feldnamen mit [*]: der Name einer Tabellen-Einstellung. Das Feld wird für jede Zeile einmal erzeugt; im Twig steht die Zeile als row bereit. |
| Twig | Die Berechnung als Twig-Vorlage. Ihre Ausgabe ohne Leerzeichen am Rand ist der Wert; ist sie leer, fehlt das Feld im Feed. Werte werden automatisch maskiert – verwende kein escape. |
Mit Feld hinzufügen ergänzt du eigene Felder (sie landen in der Gruppe „Weitere"), mit
Entfernen löschst du eines. Eine Zahl in eckigen Klammern wiederholt einen Eintrag, zum Beispiel
shipping[1].country und shipping[2].country für zwei Versandländer: In XML entstehen zwei
Elemente, in JSONL eine Liste. Nummeriere dabei entweder alle oder keinen Eintrag eines Namens.
Unter Variablen für eigene Berechnungen legst du Zwischenwerte an, die mehrere Felder nutzen können.
Voreinstellung wiederherstellen ersetzt Feldzuordnung, Kopf- und Fußzeile durch die Voreinstellung des Typs. Eigene Änderungen gehen dabei verloren.
Enthält die Zuordnung Fehler, zeigt die Karte sie an, und die Produktzeile wird erst wieder erzeugt, wenn sie behoben sind. Auch das Speichern des Verkaufskanals bricht dann ab.
Was die Voreinstellungen übertragen
Beide Voreinstellungen lesen die Zusatzfelder der Erweiterung, zum Beispiel Titel, Beschreibung, alternative Bilder, Google-Produktkategorie, Sonderangebotspreis und Custom Labels. Ist ein Zusatzfeld leer, nehmen sie den Wert aus Shopware, etwa den Produktnamen oder den Hersteller als Marke.
Die Verfügbarkeit berechnen beide gleich:
| Lagerbestand | Verfügbarkeit |
|---|---|
| verfügbarer Bestand mindestens so groß wie die Mindestabnahme (mindestens 1) | in_stock |
| darunter, Produkt mit Abverkauf | out_of_stock |
| darunter, Produkt ohne Abverkauf | backorder |
Im Google Shopping Produktfeed sind g:id, g:title, link, g:image_link, g:availability und
g:price Pflichtfelder, im OpenAI Produktfeed item_id, title, url, image_url,
availability und price. Fehlt einem Produkt einer dieser Werte, wird es übersprungen.
Übertragung per SFTP (OpenAI)
OpenAI ruft keinen Feed ab, sondern erwartet ihn auf einem SFTP-Server, dessen Zugangsdaten du von OpenAI erhältst. Die Karte Übertragung per SFTP gibt es nur beim OpenAI Produktfeed.
| Feld | Bedeutung |
|---|---|
| Automatisch hochladen | Lädt den Feed hoch, sobald eine neuere Datei generiert wurde. |
| Server, Port | Adresse des SFTP-Servers, Port voreingestellt auf 22. |
| Benutzername | Dein SFTP-Benutzer. |
| Passwort | Mit privatem Schlüssel ist das die Passphrase des Schlüssels. |
| Privater Schlüssel | Optional. Der vollständige Schlüssel im OpenSSH- oder PEM-Format. |
| Verzeichnis auf dem Server | Leer lassen für das Startverzeichnis. OpenAI verarbeitet alle Dateien in diesem Verzeichnis. Das Verzeichnis muss existieren. |
| Mit gzip komprimieren | Lädt die Datei als .gz hoch, zum Beispiel openai-products.jsonl.gz. Voreingestellt eingeschaltet. |
- Ein Scheduled Task prüft alle fünf Minuten, ob eine neuere Datei generiert wurde, und lädt sie dann unter ihrem Dateinamen hoch.
- Verbindung testen prüft die Anmeldung, Jetzt hochladen lädt die aktuelle Datei sofort hoch (erst nach dem ersten Speichern).
- Unter der Karte siehst du den Zeitpunkt des letzten Uploads und den letzten Fehler. Die Fehlermeldungen des Uploads sind englisch.
- Passwort und privater Schlüssel werden gespeichert, aber nie wieder angezeigt. Änderst du Server, Port oder Benutzer, gib Passwort oder Schlüssel neu ein – sonst werden die gespeicherten Zugangsdaten beim Speichern gelöscht.
In-App-Kauf OpenAI Produktfeed
Der OpenAI Produktfeed ist ein In-App-Kauf. Ohne den Kauf
- öffnet die Auswahl des Typs beim Anlegen den Kauf statt eines neuen Verkaufskanals,
- zeigt ein bestehender OpenAI-Verkaufskanal den Hinweis In-App-Kauf erforderlich und blendet Feldzuordnung und Template aus,
- erzeugt Shopware eine leere Feed-Datei, und nichts wird an OpenAI hochgeladen.
Die Einstellungen eines bestehenden Verkaufskanals bleiben dabei gespeichert. Nach dem Kauf arbeitet er mit ihnen weiter.
Für Fortgeschrittene: Twig-Filter
Die erzeugten Templates nutzen zwei Filter der Erweiterung, die du auch in eigenen Feldern verwenden kannst:
| Filter | Wirkung |
|---|---|
lenz_html_decode |
wandelt HTML-Entitäten wie & in Zeichen um, geschützte Leerzeichen in normale |
lenz_combine(keys, values) |
baut aus zwei Listen eine Zuordnung Schlüssel → Wert |

