Zum Inhalt springen
Stone & Water
Doku · 07 Feed-Generator

Feed-Generator im PIM für Shopware: Anleitung

Mit dem Feed-Generator im PIM für Shopware stellst du über den Feeds-Tab automatisch aktualisierte URL-Feeds bereit - für Google Shopping, Preisvergleichsportale oder ERP-Anbindungen. Mit mitgelieferten Vorlagen, eigenen Profilen, Filtervorlagen, Akkordeon-Liste, Umbenennen, Lösch-Bestätigung, Streaming für große Kataloge und Token-Authentifizierung.

Feed-Generator

1 / 1

Was ist ein Feed im Feed-Generator für Shopware?

Ein Feed liefert deine Produktdaten unter einer eindeutigen, tokenisierten URL aus - automatisch aktualisiert, ohne manuellen Export. Empfänger ist typischerweise ein externes System: Google Shopping, idealo, Billiger.de, ein ERP-System oder eine Auswertungs-Pipeline. Die URL ist tokenisiert - wer den Token nicht hat, sieht nichts.

Feed anlegen - Vorlage oder eigenes Profil

Oben im Feeds-Tab findest du den Selektor „Feed aus Vorlage / Profil anlegen". Mit einem Klick erzeugst du einen neuen Feed:

  • Built-in-Vorlage - Stammdaten, Preise & Lager, SEO, Bilder, Übersetzungen, Varianten, Vollexport. Es wird automatisch ein Export-Profil mit passender Feldauswahl erzeugt (Name z.B. „Stammdaten (Feed)"), der Feed aktiviert, ein Token generiert.
  • Bestehendes Profil - eigene Export-Profile aus dem Export-Tab lassen sich direkt als Feed aktivieren.
Mehrere Feeds pro Profil: Du kannst beliebig viele Feeds für dasselbe Profil anlegen - beispielsweise ein „Stammdaten"-Profil als Basis für mehrere Feeds mit unterschiedlichen Filtervorlagen (z.B. ein Feed pro Verkaufskanal oder Zielmarkt). Feeds sind über einen eigenen Storage-Key (exportFeeds) vom Quell-Profil entkoppelt.

Feed-Liste als Akkordeon

Alle aktiven Feeds und alle eigenen Export-Profile erscheinen als kompakte Liste - jede Zeile ist ein eigenständiges Akkordeon. Pro Zeile siehst du auf einen Blick:

  • Name - der Feed-Name (umbenennbar)
  • Status-Pille - „Feed aktiv" (grün) oder „kein Feed" (grau)
  • Feed-URL-Vorschau - die tokenisierte URL bei aktiven Feeds
  • Filtervorlage-Chip - die ausgewählte Filtervorlage oder „kein Filter"
  • Produktanzahl-Chip - Anzahl der enthaltenen Produkte, live aus dem Katalog ermittelt
  • Stift-Symbol rechts (öffnet/schließt den Editor) und Papierkorb (löscht mit Sicherheitsabfrage)

Akkordeon-Verhalten

Ein Klick auf die Zeile öffnet und schließt den Editor zuverlässig - ein Chevron rechts zeigt den Zustand und dreht sich beim Öffnen. Der Papierkorb-Button reagiert separat (mit @click.stop) und klappt die Zeile nicht versehentlich auf/zu.

Editor-Inhalt

Im aufgeklappten Editor stehen alle Optionen pro Feed, gegliedert in vier Bereiche:

  • Allgemein: Name, „Feed über URL bereitstellen" (Feed aktiv oder aus), Generierung „Live bei Abruf (immer aktuell)" oder „Per Cron in Datei (lastschonend)", Streaming für große Kataloge, Preset (Filtervorlage), Varianten exportieren, Verkaufskanal und Sprache
  • Spalten: Spalten hinzufügen und entfernen, Reihenfolge per Ziehen oder Pfeile, eigene Spaltenüberschrift je Spalte
  • Zugriff & URL: Feed-URL zum Kopieren, Token generieren und die alternative Feed-URL (API-Route)
  • Format: Dateiformat, Zeichenkodierung, BOM und Dezimaltrennzeichen

Format, Zeichensatz und Spalten

  • Dateiformat: CSV für Tabellen und ERP, XML oder JSON für Schnittstellen und Portale. TSV gibt es im Feed nicht; Standard-Trennzeichen für CSV-Feeds ist das Semikolon.
  • Zeichenkodierung: UTF-8, Windows-1252 (ANSI) oder ISO-8859-1 (Latin-1). JSON wird immer in UTF-8 ausgeliefert.
  • BOM voranstellen - nur bei UTF-8, damit Excel Umlaute korrekt erkennt
  • Dezimaltrennzeichen für Preise und Maße: Punkt oder Komma
  • Spalten umbenennen und sortieren: eigene Kopfzeile je Spalte (leer = Standardname). Zusätzlich verfügbar: Produkt-URL, Bild-URL absolut und Bild-URLs absolut.
  • Verkaufskanal bestimmt Domain und SEO-URL für Produkt-URL und absolute Bild-URLs; bei „Alle Verkaufskanäle" dient der erste aktive Kanal mit Domain als URL-Basis. Die Sprache legt fest, in welcher Sprache Name, Beschreibung und Meta-Texte exportiert werden.

Filtervorlagen - was wird übernommen, was bewusst nicht

Statt einfacher Checkboxen wählst du im Feed eine gespeicherte Filtervorlage - die gleiche, die du auch im Listing oder bei der Mehrfachänderung nutzt. Der Feed filtert damit wie die Produktübersicht.

Im Feed angewendete Kriterien

Alle Kriterien der Vorlage, die sich serverseitig abbilden lassen. Unter „Im Feed angewendet" zeigt der Editor, welche Kriterien einer Vorlage greifen.

Im Feed nicht anwendbare Kriterien

Nicht abbildbar sind nur der Freigabe-Status und „UVP ungültig". Ein Feed mit einer Vorlage, die diese Kriterien enthält, liefert deshalb mehr Produkte als die gefilterte Liste.

Produktanzahl live

Pro Feed-Zeile zeigt ein Chip die Anzahl der enthaltenen Produkte. Dieser Wert wird live aus dem Katalog ermittelt (über die Filtervorlage-Kriterien) und aktualisiert sich, wenn du eine andere Filtervorlage wählst.

Orientierungswert: Die Anzahl ist ein DAL-Count über die serverseitig abgebildeten Filterkriterien. Sie kann von der exakten CSV-Zeilenzahl minimal abweichen, wenn z.B. defekte Datensätze beim Export überspringen werden - als Orientierungswert ist sie aber sehr nahe an der Wirklichkeit.

Streaming-Performance für große Kataloge

Feeds laufen über den FeedExportService mit mehreren Performance-Layern - auch Kataloge mit zehntausenden Produkten laufen ohne Memory-Probleme durch:

DBAL-Streaming in 2000er-Batches

Die Feed-Generierung lädt die Produktdaten nicht auf einmal in den Speicher. Stattdessen iteriert der Service in Batches von 2.000 Zeilen durch den Katalog und gibt sie zeilenweise aus (PHP-Generator mit yield). Damit ist der Speicherverbrauch unabhängig von der Katalogröße - egal ob 100 oder 100.000 Produkte.

Keyset-Pagination statt LIMIT/OFFSET

Die Batches verwenden Seek-Pagination über die Artikelnummer (eindeutige, indizierte Spalte):

  • Statt LIMIT 2000 OFFSET 50000 (wird mit jeder Seite langsamer, weil die DB intern bis OFFSET durchblättern muss)
  • Verwendet WHERE product_number > :last ORDER BY product_number LIMIT 2000 - die DB nutzt den Index direkt

Die Ausgabezeit bleibt damit linear zur Anzahl Produkte, egal ob du auf Seite 1 oder Seite 25 bist. Bei großen Katalogen ist das der wichtigste Performance-Hebel - klassisches OFFSET wird in PostgreSQL/MySQL bei deep pages oft drastisch langsamer.

gzip-Komprimierung über HTTP

Wenn der abrufende Client Accept-Encoding: gzip im Request-Header sendet (alle modernen ERP-/Crawler-/Browser-Clients tun das automatisch), wird die Antwort serverseitig per gzencode() komprimiert und mit Content-Encoding: gzip + Vary: Accept-Encoding ausgeliefert.

  • Feed-CSVs sind reiner Text und komprimieren sehr gut - typisch 80-90 % Reduktion
  • Eine 50 MB CSV wird zu ~5-10 MB übertragen - drastisch kürzere Ladezeit, deutlich weniger Bandbreite
  • Der Client dekomprimiert transparent - kein extra Aufwand auf ERP-Seite
  • Compression-Level 5 (Standard) - guter Trade-off zwischen CPU und Komprimierung

Datei-Modus für sehr große Kataloge

Pro Feed lässt sich der Modus wählen:

  • Modus „Live bei Abruf" - Feed wird bei jedem Aufruf direkt aus der Datenbank generiert. Immer tagesaktuell, geeignet für seltenes Polling oder kleinere Kataloge.
  • Modus „Per Cron in Datei" - Der Scheduled Task staw_pim_direct.export_feed erzeugt die Datei alle 15 Minuten vorab und legt sie als staw-pim-direct-feeds/feed_<token>.csv im privaten Dateisystem von Shopware ab. Beim Abruf wird die fertige Datei einfach ausgeliefert - keine DB-Last, sehr schneller Response. Ideal für ERPs, die alle paar Minuten pollen.
Graceful Fallback: Im Datei-Modus, wenn die Cron-Datei noch nicht existiert (z.B. direkt nach dem Anlegen eines neuen Feeds), fällt der Controller automatisch auf Live-Generierung zurück. Du musst nicht warten bis der Cron das erste Mal gelaufen ist.

Memory-Limit-Vorsorge

Der Feed-Endpoint setzt das PHP-Memory-Limit defensiv auf 1 GB (@ini_set('memory_limit', '1024M')) - auch bei sehr breiten Spaltenauswahlen mit dutzenden Custom Fields oder vollem SEO-Set läuft die Generierung sauber durch.

Migration alter Feeds

Automatisch & nicht-destruktiv: Falls du bisher Feeds hattest, die direkt am Export-Profil hingen (mit Token/URL), werden diese beim ersten Laden automatisch in die neue Liste übernommen. Bestehende Feed-URLs in deinem ERP, Google-Shopping-Konto oder bei Preisvergleichsportalen bleiben gültig - kein Re-Konfigurieren nötig.

Token und URL-Format

Jeder Feed bekommt einen eindeutigen Token. Die URL hat das Format:

  • https://dein-shop.de/staw-pim/export/{token} - die Endung .csv wird zusätzlich akzeptiert
  • https://dein-shop.de/api/staw-pim/export/{token} - alternative Feed-URL (API-Route), domainunabhängig

Das Format (CSV, XML oder JSON) legst du im Feed fest, nicht über die Endung der URL. Die alternative API-Route nutzt du, wenn die Shop-URL auf die Startseite umleitet, zum Beispiel bei Sprachpfad-Domains. Beide Routen brauchen keine Anmeldung und bleiben auch im Wartungsmodus des Verkaufskanals erreichbar.

Token regenerieren

„Token generieren" erzeugt einen neuen Token - die alte URL wird damit ungültig. Sinnvoll, wenn ein Feed-Link öffentlich geworden ist oder ein Partner-Zugriff entzogen werden soll.

Sicherheit

Token nicht öffentlich teilen: Feed-URLs sind tokenisiert und nicht öffentlich indexierbar (kein Eintrag in sitemap.xml, noindex-Header). Wer den Token kennt, sieht die Produktdaten des Feeds - also nicht in öffentlichen Repositories oder Tickets posten. Bei Verdacht auf Leak: Token regenerieren, alte URL ist sofort ungültig.

Weiter geht's

Weiter zur KI-Textgenerierung, um Beschreibungen und Meta-Texte automatisch zu erzeugen.

Wie du Schritt für Schritt einen Feed für Google aufbaust, zeigt der Ratgeber Shopware Google Shopping Feed erstellen.

Häufige Fragen

Welche Formate liefert ein Feed?

CSV, XML oder JSON unter einer eigenen URL, wahlweise in UTF-8 (optional mit BOM), Windows-1252 oder ISO-8859-1 und mit Punkt oder Komma als Dezimaltrennzeichen.

Wie schütze ich einen Feed?

Die URL enthält einen Token. Ein Klick erzeugt einen neuen Token und macht die alte Adresse ungültig.

Welche Filter greifen im Feed?

Die Kriterien der gewählten Filtervorlage, wie in der Produktübersicht. Nicht abbildbar sind nur Freigabe-Status und „UVP ungültig".

Funktioniert das auch bei großen Katalogen?

Ja. Die Ausgabe läuft in Paketen zu 2000 Datensätzen, wird bei passenden Abrufern komprimiert und hat einen Datei-Modus für sehr große Kataloge.