PIM für Shopware · Dokumentation · Stone & Water
PIM für Shopware · Dokumentation Stone & Water
stoneandwater.online
Shopware 6 · Plugin-Handbuch

PIM für Shopware 6.

Das vollständige Handbuch zum Product Information Management. Installation, Bulk-Edit, Variantengenerator, CSV-Import, Translations, Audit-Log — alles, was du brauchst, um hunderte oder tausende Produkte direkt im Shopware-Admin zu pflegen.

01
Einführung

Was ist das PIM?#

Das PIM ist ein vollwertiges Product Information Management direkt im Shopware-Admin. Statt Pflege in Drittsystemen, ETL-Pipelines oder Excel-Exporten erweitert das Plugin Shopware um das, was im Standard fehlt: massenhafte Bearbeitung, Variantengenerierung mit Mustern, sprachsensible CSV-Workflows und ein durchgehendes Snapshot-System.

Module im Überblick

Dashboard

Katalog-Gesundheit

Vollständigkeits-Score, fehlende Bilder/Preise/SEO, Top-Kategorien — alles auf einem Blick.

Listing & Inline-Edit

Produktübersicht

Stammartikel und Varianten in einer Tabelle, inline ausklappbar. Bestand, Preis, EAN, MPN und Gewicht direkt in der Zeile editierbar.

Bulk-Edit

Mehrfachbearbeitung

25+ Felder plus Cross-Selling-Gruppen gleichzeitig ändern — mit Snapshot, Vorschau und Ein-Klick-Revert.

Quickview

Schnellbearbeitung

Stammdaten, Preise, Lagerbestand und SEO eines Produkts in einem kompakten Modal — ohne Wechsel in die Detailansicht.

VarGen

Variantengenerator

Chip-basierte Optionsauswahl mit globaler Suche, Pattern-Akkordeons für Nummer und Name, Hauptvarianten-Vorauswahl, Live-Vorschau.

Variantenmatrix

Bulk-Preise & Bestand

Matrix-Ansicht für schnelle Preis- und Bestandsbearbeitung aller Varianten in einer Tabelle.

CSV / TSV / XML

Import & Export

Batch-POST-API, alle Sprachen in einer Datei, Custom Fields als eigene Spalten, Auflösung per Artikelnummer oder EAN, Snapshot.

i18n

Translations

Spaltenansicht aller Sprachen, Custom Fields pro Sprache, Vollständigkeits-Dashboard, kanal-/sprach-spezifische Filter.

KI · ChatGPT & Claude

Text-Generierung

OpenAI ODER Anthropic Claude für Beschreibungen, SEO-Texte und Bulk-Generierung — Modell-Auswahl in der Konfigmatrix.

DeepL

Übersetzung

Massen-Übersetzung über alle Shop-Sprachen, Glossare, optional bestehende Texte überschreiben.

Vorschau

Produkt-Preview

Inaktive Artikel temporär aktivieren — automatische Rücksetzung nach 15/30/60/120 Sekunden.

Audit & Lock

Workflow & Sicherheit

Vollständige Historie mit User/Zeit/Diff, Approval-Workflow, Edit-Lock mit Heartbeat, feingranulare Permissions.

Systemvoraussetzungen

Shopware
6.5, 6.6 oder 6.7 — eine Plugin-Version pro Major-Release
PHP
8.2 oder höher (8.3 empfohlen)
Datenbank
MySQL 8.0 oder MariaDB 10.11+
Admin-Stack
Vue 3 (ab Shopware 6.6) bzw. Vue 2 (Shopware 6.5)
Hosting
On-premise — keine externen API-Aufrufe, keine Cloud-Abhängigkeiten
i
Datenschutz: Alle Daten — inklusive Audit-Log und Snapshots — werden ausschließlich in der Shopware-eigenen Datenbank gespeichert. Es findet keine Telemetrie und keine Kommunikation mit externen Servern statt.
02
Setup

Installation#

Es gibt drei Wege, das PIM zu installieren — je nachdem, ob du das Plugin aus dem Shopware Store, als ZIP oder per Composer beziehst.

Weg 1 — Shopware Store

  1. Im Shopware-Admin Erweiterungen → Store öffnen und nach „PIM für Shopware“ suchen.
  2. Plugin kaufen und herunterladen.
  3. Unter Erweiterungen → Meine Erweiterungen auf Installieren und anschließend Aktivieren klicken.
  4. Cache löschen (passiert in der Regel automatisch).

Weg 2 — ZIP-Upload

  1. Die Datei StawPim-vX_Y_Z.zip herunterladen.
  2. Im Admin unter Erweiterungen → Meine Erweiterungen auf Erweiterung hochladen klicken.
  3. Installieren und aktivieren wie unter Weg 1.

Weg 3 — Composer / CLI

# Plugin entpacken nach custom/plugins/StawPim
$ cd /var/www/shop
$ bin/console plugin:refresh
$ bin/console plugin:install --activate StawPim
$ bin/console cache:clear
!
Achtung beim Update: Vor einem Plugin-Update ein Backup der Datenbank anlegen. Das Audit-Log und die Snapshots bleiben bei einem Update zwar erhalten, aber ein DB-Dump ist immer die sicherere Variante.

Nach der Installation

Im Admin erscheinen unter Kataloge drei neue Menüpunkte: PIM-Dashboard, PIM (Produktliste) und PIM-Konfigurationsmatrix. Innerhalb des PIM-Moduls erreichst du außerdem Import & Export, das Audit-Log und die Translation-Übersicht. Beim ersten Aufruf der Konfigurationsmatrix wird automatisch die Feldmatrix mit allen Standard- und Custom-Fields aufgebaut.

Für die optionalen Module: OpenAI-API-Key (für KI-Textgenerierung) und DeepL-API-Key (für Übersetzungen) in der Konfigurationsmatrix unter KI & Übersetzung hinterlegen. Beide Module sind ohne Keys einfach inaktiv.

03
Quickstart

Erste Schritte#

Der schnellste Weg, das PIM kennenzulernen: drei typische Workflows nacheinander durchspielen.

Dashboard überfliegen

Kataloge → PIM-Dashboard öffnen. Hier siehst du auf einen Blick, wo dein Katalog Lücken hat — fehlende Bilder, leere Beschreibungen, unvollständige Translations. Ein Klick auf eine Kachel öffnet das Listing mit dem passenden Filter.

Konfigmatrix prüfen

PIM → Konfiguration öffnen. Pro Feld kannst du festlegen, ob es im Listing, im Detail, im Bulk-Editor und im CSV-Export erscheint. Defaults passen für die meisten Shops — Custom Fields werden automatisch ergänzt.

Erste Bulk-Operation

PIM → Produkte, einen Filter setzen (z.B. „Hersteller = X“), im Header Alle auswählen, dann Mehrfachbearbeitung. Ein Feld ändern (Lieferzeit oder Steuer), Vorschau prüfen, übernehmen. Vor dem Apply wird automatisch ein Snapshot angelegt.

Snapshot prüfen und ggf. zurückrollen

PIM → Audit-Log. Die Bulk-Operation steht oben mit Zeitstempel, User und Diff. Daneben ein Wiederherstellen-Button — ein Klick, und der Vorher-Zustand ist wiederhergestellt.

CSV-Export & Re-Import

PIM → Import & Export → Export, Spalten wählen, Sprachen wählen, herunterladen. Datei in Excel/Numbers bearbeiten, dann Import hochladen. Match per productNumber, Translations werden separat gemerged.

Tipp: Beim ersten Einsatz mit einer kleinen Test-Auswahl arbeiten (z.B. einem Filter mit 5–10 Produkten). Snapshots funktionieren auch bei tausenden Produkten — aber ein bewusster Lerndurchlauf macht alle nachfolgenden Operationen souveräner.
04
Modul

PIM-Dashboard#

Das Dashboard zeigt die Katalog-Gesundheit auf einen Blick: Wo fehlen Bilder, Preise oder Übersetzungen? Welche Produkte sind unvollständig? Erreichbar über Kataloge → PIM-Dashboard.

Vollständigkeits-Score

Pro Produkt wird ein Score in Prozent berechnet, basierend auf der Befüllung der in der Konfigmatrix als relevant markierten Felder. Was als relevant gilt, ist pro Shop einstellbar — z.B. Name, Beschreibung, mind. ein Bild, Meta-Title.

Health-Kacheln

Die Übersichtsseite zeigt aggregierte Kennzahlen:

  • Produkte ohne Cover-Bild — mit Direkt-Link auf die Filter-Auswahl
  • Produkte ohne Preis — Stammartikel und Varianten getrennt
  • Produkte ohne Beschreibung — pro Sprache
  • Produkte ohne Meta-Title / Meta-Description
  • Produkte mit Bestand < Schwellenwert (Schwellenwert konfigurierbar)
  • Inaktive Produkte mit Lagerbestand — möglicherweise vergessen
  • Top-Kategorien nach Produktzahl mit Vollständigkeit

Übersetzungs-Vollständigkeit

Pro Shopsprache erscheint ein Balken mit der Vollständigkeit aller Translation-Felder. Klick auf den Balken filtert das Listing auf die unvollständigen Produkte dieser Sprache.

i
Klick = Filter: Jede Kachel und jeder Balken im Dashboard ist eine Direktverlinkung — ein Klick und das Produktlisting öffnet sich mit dem passenden Filter-Preset. Aus der Übersicht in einem Schritt zur Bearbeitung.
05
Modul

Produktlisting#

Das Listing ist der zentrale Einstiegspunkt. Es zeigt Stammartikel und Varianten in einer einzigen Tabelle und ist die Quelle aller Bulk-Operationen.

Anzeigeformat

Oberhalb und unterhalb der Tabelle steht die Aggregatzeile im Format:

Produkte: 153 (Varianten: 543)

Die Zahl in Klammern bezieht sich auf die aktuell gefilterte Menge — wer einen Variantenfilter setzt, sieht hier sofort, wie viele Varianten matchen.

Inline-Aufklappen

Jeder Stammartikel mit Varianten zeigt einen kleinen Badge mit der Variantenzahl. Ein Klick darauf klappt die Varianten direkt in der Tabelle aus — ohne Modal, ohne Seitenwechsel. Varianten werden lazy geladen, erst beim Aufklappen.

Filter

Über 25 spezialisierte Filter-Kriterien stehen zur Verfügung — von Standard-Operatoren bis zu fachspezifischen Filtern wie Sichtbarkeit-Level, SEO-Meta-Status, Gewichts-/Maß-Bereiche und Datums-Ranges. Beliebig viele Bedingungen können mit UND / ODER verknüpft werden. Die Suche kennt automatisch Variantenfelder — eine Bedingung auf einem Variantenattribut trifft auch den Stammartikel, wenn mindestens eine Variante matcht.

Operator Wirkung Beispiel
EnthältSubstring-Match (case-insensitive)name enthält "Schuh"
Enthält nichtNegiertes Substring-Match (auch mit Eltern-Produkten)name enthält nicht "Test"
GleichExakter Wert-Vergleichactive = true
UngleichNegationtax_rate ≠ 19
Beginnt mitPrefix-MatchproductNumber beginnt mit "SW-"
Endet mitSuffix-Matchname endet mit "(Demo)"
Größer / KleinerNumerische Vergleichestock > 0
Ist leer / nicht leerNULL-/Empty-Checkdescription ist leer
Sichtbarkeit-LevelFilter über Visibility-Level je Channelvisibility = Direktlink (10)
SEO-Meta-StatusVollständigkeit der SEO-FelderSEO unvollständig
Gewichts-/Maß-BereichMin/Max für Gewicht, L/B/Hweight 0.5–2.0 kg
Datums-Rangeab/bis verfügbar, Anlagedatum, letzte ÄnderungcreatedAt 01.04. – heute
Property-KombinationMehrere Properties kombiniertFarbe=rot UND Größe=M
Bild-StatusMit/ohne Bilder, mit/ohne Coverkein Cover gesetzt
Filter mit Eltern-Produkten: Negative Operatoren wie „enthält nicht“ arbeiten jetzt korrekt auch mit Eltern-Produkten. Bei kombinierten UND-Filtern splittet das System Positive und Negative auf separate Sub-Queries — Variantenfilter mit gemischten Operatoren liefern jetzt die erwarteten Treffermengen.

Filter-Presets

Ein häufig genutztes Filter-Set einmal speichern, dann mit einem Klick wiederherstellen. Presets werden pro User abgelegt — jeder Pfleger hat seine eigene Sammlung. Aktive Filter-Chips bleiben oberhalb der Tabelle sichtbar; ein Klick auf das × entfernt eine einzelne Bedingung.

Inline-Edit direkt in der Tabelle

Statt jeden Wert über die Detailansicht zu pflegen, sind die häufig genutzten Felder direkt in der Listing-Zeile editierbar. Funktioniert auch für Varianten.

  • Aktiv-Toggle — schaltet das Produkt an/aus, ohne Neuladen
  • Bestand — Inline-Editor mit sofortigem Speichern
  • Preis — Brutto-Preis, System-Währung wird korrekt erkannt
  • EAN und Herstellernummer — Klick auf den Wert, ändern, fertig
  • Gewicht — numerische Eingabe mit Komma-Tolerant

Nach dem Speichern wird der gespeicherte Wert verifiziert (Read-back). Wenn Shopware den Wert verwirft — z.B. wegen Vererbungslogik bei Varianten — erscheint ein Warnhinweis statt fälschlich Erfolg zu melden.

Quickview-Modal

Wer schnell mehr ändern will als nur ein Feld, klickt auf das Quickview-Icon in der Zeile. Es öffnet sich ein kompaktes Modal mit allen wichtigen Stammdaten:

  • Artikelnummer, Name, EAN, MPN, Aktiv-Status
  • Preis (Brutto/Netto), Einkaufspreis, Omnibus-Preis
  • Bestand, Wiederauffüllzeit, Closeout-Toggle, Versandkostenfrei
  • Min/Max/Schrittweite für Bestellmengen
  • Beschreibung als Textarea
  • Meta-Title, Meta-Description, Suchbegriffe

Welche Felder im Quickview sichtbar sind, lässt sich in der Konfigmatrix pro Sektion ein- und ausblenden. Leere Sektionen werden automatisch ausgeblendet.

Pagination & Performance

  • Zeilenanzahl wählbar: 10, 25, 50, 100, 200, 500
  • Pagination oben und unten verfügbar
  • Schnell-zurück-nach-oben-Button rechts unten
  • Spaltenkonfiguration und Page-Size werden pro User persistiert
i
Variantenaware: Bei aktiven Variantenfilter-Bedingungen prüft das Listing automatisch sowohl Parent- als auch Children-Felder. Filtert man nach color = "rot", werden auch Stammartikel angezeigt, deren rote Variante existiert — die Variantenzahl in der Aggregatzeile zeigt dann nur die matchenden Children.
06
Modul · Herzstück

Mehrfachbearbeitung#

Die Bulk-Edit-Operation ist das Herzstück des PIM. Sie verändert beliebig viele Produkte in einem Schritt, legt vorher einen Snapshot an und zeigt vor dem Apply eine vollständige Vorschau.

Ablauf einer Bulk-Operation

  1. Im Listing filtern und/oder Zeilen manuell selektieren.
  2. Button Mehrfachbearbeitung klicken.
  3. Im Modal die zu ändernden Felder aktivieren und Werte eingeben.
  4. Scope wählen: Aus Auswahl oder Aus Filter-Preset; mit/ohne Varianten.
  5. Vorschau prüfen — Live-Counter „X Produkte betroffen“ und neue Werte pro Feld.
  6. Übernehmen — Snapshot wird angelegt, Änderung wird ausgeführt, Audit-Log-Eintrag entsteht.

Die 22 Bulk-Felder

Kategorie Felder Snapshot
Stammdaten Name, Beschreibung, Meta-Title, Meta-Description, Keywords ja
Status & Stamm Aktiv-Status, Hersteller, Steuersatz, Lieferzeit ja
Preis Preis (brutto/netto), Listenpreis ja
Preis · Varianten Staffelpreise auf Varianten übertragen nein
Identifier EAN, Hersteller-Nummer, Verpackungseinheit ja
Logistik Maße (Länge, Breite, Höhe), Gewicht ja
Bestand Bestand, verfügbarer Bestand, ab/bis verfügbar ja
Struktur Kategorien, Hauptkategorie pro Verkaufskanal ja
Klassifizierung Tags, Eigenschaften (Properties) ja
Sichtbarkeit Verkaufskanal-Sichtbarkeit ja
Cross-Selling Cross-Selling-Gruppen zuweisen (Produktstream oder Produktliste) ja
Cross-Sell · Varianten Cross-Selling auf Varianten übertragen nein
Varianten-Vorauswahl Hauptvariante auto-setzen (erste / niedrigste Nummer), Hauptartikel optional verbergen ja
SEO SEO-URL (generiert) nein
Custom Fields Beliebige Zusatzfelder, auch pro Sprache ja
!
Drei Felder ohne Snapshot: SEO-URLs werden automatisch von Shopware generiert und sind nicht reversibel. Staffelpreise → Varianten und Cross-Selling → Varianten kopieren Daten vom Parent auf alle Children und würden zur Wiederherstellung einen Snapshot aller Variants erfordern. Diese drei Operationen sind als nicht-revertierbar markiert und zeigen eine explizite Warnung vor Apply.

Snapshot-System

Vor jeder Bulk-Operation auf snapshot-fähigen Feldern wird der Vorher-Zustand der betroffenen Produkte erfasst und in der DB abgelegt. Im Audit-Log erscheint der Eintrag mit:

  • User, Datum, Anzahl betroffener Produkte
  • Liste der geänderten Felder
  • Diff vorher/nachher pro Produkt (auch für Translations pro Sprache)
  • Button Wiederherstellen direkt in der Zeile
Performance-Optimierung: Die Snapshot-Erstellung wird in 50er-Chunks gebatched (POST /api/search/product statt einzelner GET-Calls). Bulk-Operationen auf tausenden Produkten sind dadurch deutlich schneller als zuvor.

Auf Filter beschränken

Ein häufiges Szenario: Du filterst im Listing nach einem Variantenfeld (z.B. „nur rote Schuhe“) und willst alle gefundenen Varianten ändern — aber nicht den Stammartikel, dessen andere Varianten den Filter nicht treffen.

Genau dafür gibt es im Bulk-Modal den Toggle „Auf Filter beschränken“. Aktiviert, folgt die Bulk-Aktion exakt dem aktiven Filter — der Parent bleibt unangetastet, nur die filter-treffenden Children werden geändert.

Scope-Optionen

Aus Auswahl
Nur die im Listing manuell selektierten Zeilen.
Aus Preset
Alle Produkte, die dem aktuellen Filter entsprechen — auch über mehrere Seiten hinweg.
Mit/ohne Varianten
Auf Stammartikel beschränken, oder Varianten mit einbeziehen.
Nur Varianten
Stammartikel ignorieren, nur Children verändern (sinnvoll bei Filter-Beschränkung).
07
Modul

Variantengenerator#

Der Variantengenerator erzeugt vollständige Variantenstrukturen — von der Eigenschaftenauswahl über Artikelnummer- und Namens-Patterns bis zur Bestätigung via Vorschau. Funktioniert pro Produkt oder als Mehrfachoperation.

Workflow

Eigenschaften und Optionen wählen

Im VarGen-Modal links die Property-Gruppen, rechts die Optionen. Eine einzige Suche oben durchsucht beides gleichzeitig — Gruppen und Optionen. Tippst du „rot“, bleiben alle Gruppen sichtbar, die irgendwo die Option „rot“ haben, und in der rechten Spalte werden die Treffer hervorgehoben.

Optionen anklicken

Optionen sind als Chips dargestellt. Mehrfachauswahl, „Alle“-Button pro Gruppe für schnelle Vollauswahl. Die Klick-Reihenfolge bestimmt, wie die Optionen später im generierten Variantennamen erscheinen.

Pattern definieren

Zwei eigenständige Akkordeons — eines für die Artikelnummer, eines für den Variantennamen. Eingeklappt zeigen sie das aktuelle Pattern als Code-Chip; aufgeklappt erscheint das Eingabefeld plus klickbare Variable-Chips ({number}, {option1}, {counter} etc.). Ein Klick auf einen Chip fügt die Variable ins aktive Pattern ein. Defaults kommen aus der Konfigmatrix.

Vorschau prüfen

Live-Vorschau der ersten 8 Kombinationen plus Anzahl total. Erst dann Generieren klicken.

Variablen für Patterns

Siehe Abschnitt 13 — Variablen-Referenz für die vollständige Liste mit Beispielen.

Per Produkt vs. Mehrfachoperation

Die Variantenmatrix funktioniert auf zwei Ebenen:

  • Pro Produkt: Im Produkt-Detail-Modal kann ein einzelner Stammartikel sein eigenes Pattern, eigene Optionen und ein Override gegenüber der Konfigmatrix haben. Existierende Configurator-Settings werden respektiert, die Variantenposition wird automatisch fortgeführt.
  • Bulk: Im Listing mehrere Stammartikel auswählen, Varianten generieren klicken. Dasselbe Pattern wird auf alle gewählten Parents angewendet.

Variantenmatrix · Bulk-Preise und Bestand

Bei einem Variant-Produkt mit vielen Optionen ist die Preis- und Bestandspflege zeilenweise mühsam. Die Variantenmatrix legt alle Varianten in einer Tabelle übereinander: Eine Achse zeigt die erste Eigenschaft (z.B. Farbe), die andere die zweite (z.B. Größe). Pro Zelle stehen Preis und Bestand zum direkten Editieren.

  • Inline-Edit für Preis, Bestand, EAN, MPN
  • Spaltenkonfiguration: welche Werte angezeigt werden, ist umschaltbar
  • Sortierung der Eigenschaften per Drag-and-Drop
  • Optional: Werte aus dem Stammartikel auf alle leeren Zellen anwenden

Daten vom Stammartikel an Varianten übertragen

Im Varianten-Tab gibt es Aktionen, die Daten vom Parent auf alle Children kopieren — sinnvoll für Felder, die sich zwischen Varianten nicht unterscheiden:

  • Beschreibung und Meta-Texte übertragen
  • Staffelpreise auf Varianten anwenden
  • Cross-Selling-Streams übertragen
  • Bilder und Mediengalerie an Varianten weitergeben
  • SEO-Felder (Title, Description, Keywords) übernehmen

Sicheres Löschen

Varianten lassen sich aus dem Generator-Modal heraus auch wieder entfernen — mit zwei Modi:

Modus „Sicher“
Löscht nur Varianten ohne Bestellungen. Aktive Variants bleiben erhalten.
Modus „Alle“
Löscht die gesamte Variantenstruktur, inklusive solcher mit Order-History. Vor Apply wird die Anzahl explizit in einem Bestätigungsdialog gezeigt.
Snapshot vor Apply: Wie bei jeder Bulk-Operation wird auch vor dem Löschen von Varianten ein Snapshot des Vorher-Zustands angelegt — rückrollbar im Audit-Log.

Hauptvarianten-Vorauswahl

Nach dem Generieren steht die Frage, welche Variante als Hauptvariante fungieren soll — also die Variante, die als Default ausgewählt ist, wenn ein Kunde auf das Produkt klickt. StawPim wählt diese automatisch nach einer konfigurierbaren Strategie:

Erste Variante
Die in Generierungsreihenfolge zuerst erzeugte Variante wird Hauptvariante.
Niedrigste Artikelnummer
Sortierung nach productNumber, die kleinste wird Hauptvariante. Sinnvoll für deterministische Auswahl unabhängig von Erzeugungsreihenfolge.
Hauptartikel verbergen
Optional: Der Parent wird im Listing und in Suchergebnissen versteckt — Kunden sehen nur die Variante.

Globale Defaults dafür stehen in der Konfigmatrix unter Varianten; pro Operation überschreibbar.

i
Modal-UX: Das Modal hat eine feste Höhe mit innerem Scroll — auch bei 40+ Optionen pro Eigenschaft bleibt die Übersicht erhalten. Optionen sind als Chips dargestellt, der Eigenschaften-Tab wird beim erneuten Öffnen frisch geladen.
08
Modul

Import & Export#

CSV, TSV oder XML — alles drei werden unterstützt. Sie sind der Standardweg, um große Datenmengen außerhalb des Admin zu bearbeiten: in Excel, Numbers, OpenOffice oder einem Texteditor. Das PIM verwendet eine einheitliche Spaltenkonvention, die alle Sprachen in einer Datei abdeckt.

Export

Im Import-/Export-Modul: gewünschte Felder, Sprachen, Verkaufskanäle und Dateiformat (CSV, TSV, XML) wählen — die Auswahl wird pro Shop gespeichert und beim nächsten Export vorgeschlagen.

Performance: Der Export läuft jetzt über eine einzelne POST /api/search/product-Abfrage mit inline Associations (media, properties, tags, categories, mainCategories, crossSellings, children) statt tausenden sequenzieller GET-Calls. Auch große Exporte mit 10.000+ Produkten dauern nur noch Sekunden.

Was exportiert werden kann

  • Alle Standard-Produktfelder
  • Übersetzungen pro Sprache (auch je Verkaufskanal)
  • Custom Fields, auch pro Sprache
  • Variantenfelder — Parent-Daten und Variant-Daten in einer Datei
  • Eigenschaften (Properties), Tags, Kategorien

Spaltenkonvention

Die Spalten folgen einem einfachen Schema mit doppeltem Unterstrich als Trenner. Siehe auch Abschnitt 14 — CSV-Spalten-Referenz.

# Standard-Feld (sprachneutral)
productNumber, active, stock

# Translation eines Standard-Felds
trans_name__de_DE
trans_name__en_GB
trans_description__de_DE

# Custom Field (sprachneutral)
cf_meinFeld

# Custom Field pro Sprache
cf_meinFeld__de_DE
cf_meinFeld__en_GB

Import

Beim Import läuft alles über die Shopware-Sync-API in Batches — auch 10.000 Produkte sind in wenigen Minuten durch. Drei Dateiformate werden akzeptiert:

CSV
Komma- oder Semikolon-getrennt, UTF-8 (mit oder ohne BOM). Standardweg für Excel.
TSV
Tab-getrennt — geeignet für Daten mit Kommas in Feldwerten.
XML
Strukturiertes Format, ideal für Lieferanten-Feeds.

Der Workflow ist für alle drei Formate identisch:

  1. Pre-Fetch: Bestehende Werte aller betroffenen Produkte werden gelesen.
  2. Snapshot: Vorher-Zustand wird abgelegt — auch Translation-Werte.
  3. Match: Produkte werden per productNumber identifiziert.
  4. Anlage oder Update: Existiert ein Match, wird geupdatet; sonst wird das Produkt neu angelegt.
  5. Translation-Phase: Sprachspalten werden separat verarbeitet, Custom-Field-JSON wird gemerged, nicht überschrieben.
  6. Audit-Log: Eintrag mit Diff entsteht, Revert-fähig.

Auflösung per Artikelnummer oder EAN

Für Felder, die normalerweise eine UUID erwarten — parentId, mainVariantId, parentProductNumber — akzeptiert das PIM drei Eingabe-Formate, in dieser Reihenfolge:

  1. UUID (32 Hex-Zeichen) — direkt verwendet
  2. Artikelnummer — wird per POST /api/search/product aufgelöst
  3. EAN — als Fallback, falls keine Artikelnummer matcht

Damit kannst du beim Import neuer Artikel mit lesbaren Werten arbeiten statt UUIDs aus dem Quell-System mitschleppen zu müssen. Auflösungen werden gecacht — kein doppelter Lookup beim selben Wert.

Custom Fields als eigene Spalten

Aktivierte Custom Fields aus der Konfigmatrix bekommen im Export jeweils eine eigene Spalte (cf_meinFeld). Beim Import werden diese Spalten erkannt und landen automatisch in der richtigen Custom-Field-Property. Translatable Custom Fields nutzen cf_meinFeld__de_DE, cf_meinFeld__en_GB etc.

Die Spalte customFields mit komplettem JSON wird nicht mehr zusätzlich exportiert, wenn die Custom Fields als einzelne Spalten vorhanden sind — sonst stünde derselbe Wert doppelt in der Datei.

Datentyp-Erkennung

Das PIM erkennt Datentypen locale-bewusst — deutsche Zahlen mit Komma genauso wie angloamerikanische mit Punkt, ISO-Daten genauso wie dd.mm.yyyy.

Typ Akzeptiert Beispiele
Boolean1/0, ja/nein, true/false, aktiv/inaktivtrue · ja · 1
NumberKomma- oder Punkt-Dezimal19,99 · 19.99
DateISO 8601 + deutsche Notation2026-05-11 · 11.05.2026
ArrayPipe-getrennte Werte (Multi-Select-CFs)rot|blau|grün
StringBeliebige Zeichen, UTF-8Sneaker Pro
JSON-Merge bei Custom Fields: Wenn deine CSV nur einen Teil der Custom Fields enthält, werden die anderen nicht gelöscht. Das PIM merged die neuen Werte in das bestehende Custom-Field-JSON — Datenverlust durch teilweise Imports wird verhindert.
09
Modul

Mehrsprachigkeit#

Statt im Shopware-Header zwischen Sprachen zu wechseln und jedes Mal neu zu laden, zeigt das PIM alle Übersetzungen pro Produkt parallel — in einer Spaltenansicht.

Translation-Tab

Im Produkt-Detail erscheint ein eigener Translations-Tab. Pro Sprache eine Spalte; pro Feld eine Zeile. Name, Beschreibung, Meta-Title, Meta-Description und Keywords sind parallel editierbar — auch lange Texte mit dem Rich-Text-Editor.

Custom Fields pro Sprache

Klassisches Shopware speichert Custom Fields im sprachneutralen customFields-JSON der Product-Entity. Für mehrsprachige Inhalte ist das zu wenig. Das PIM erweitert das:

  • Custom Fields können als translatable markiert werden.
  • Werte werden dann in der jeweiligen Product-Translation gespeichert.
  • CSV-Spalten folgen dem Schema cf_<name>__<lang>.
  • Im Translations-Tab erscheinen sie automatisch in der Spaltenansicht.

Translation-Dashboard

Welche Produkte sind in welcher Sprache komplett? Das Dashboard zeigt:

  • Abdeckung pro Sprache in Prozent
  • Abdeckung pro Verkaufskanal (Sprachen je Channel werden respektiert)
  • Direkt-Links zu unvollständigen Produkten
  • Pflichtfelder pro Sprache (in Konfig einstellbar)

Verkaufskanal-Awareness

Nicht jeder Verkaufskanal hat alle Sprachen — der deutsche B2B-Channel braucht vielleicht nur DE, der internationale Storefront DE + EN + FR. Das PIM kennt diese Zuordnung und zeigt im Detail-Tab nur die für den jeweiligen Kontext relevanten Sprachen an. Im Dashboard wird Vollständigkeit pro Channel separat aggregiert.

10
Modul · Optional

KI & DeepL-Integration#

Optionale Module — Text-Generierung mit KI (wahlweise ChatGPT von OpenAI oder Claude von Anthropic) und Massen-Übersetzung mit DeepL. Beide funktionieren komplett separat von den Kernfunktionen; das PIM läuft auch ohne sie. Wer sie nutzen möchte, hinterlegt einen API-Key in der Konfigmatrix unter Texte & Übersetzungen.

i
Eigene API-Keys: Alle Module nutzen deinen eigenen OpenAI-, Anthropic- oder DeepL-Account. Die Kosten gehen direkt an dich, das PIM hat keine eigenen Kontingente oder Aufschläge. Die jeweiligen Datenschutzbestimmungen der Anbieter gelten für die Aufrufe.

KI-Textgenerierung — ChatGPT oder Claude

In der Konfigmatrix wählst du den Anbieter (OpenAI ChatGPT oder Anthropic Claude) und das Modell (z.B. gpt-4o, claude-sonnet-4). Beide werden über die gleiche Oberfläche bedient — das Backend wickelt die Provider-spezifischen API-Aufrufe ab. Bei aktivem Key erscheinen kleine KI-Buttons neben den Textfeldern. Verfügbare Aktionen:

  • Beschreibung generieren — aus Produktname, Kategorie, Properties
  • Meta-Title vorschlagen — SEO-optimiert, mit Längenlimit
  • Meta-Description vorschlagen — Call-to-Action am Ende
  • Keywords extrahieren — aus Name und Beschreibung
  • Text umschreiben — Tonalität ändern (formell/casual/SEO-fokussiert)
  • Text kürzen / verlängern — auf gewünschte Länge bringen

KI in der Mehrfachbearbeitung

Statt jedes Produkt einzeln zu bearbeiten, lässt sich die KI auch im Bulk-Modus nutzen: Filter setzen, Produkte markieren, Mehrfachbearbeitung → KI-Text generieren. Pro Produkt wird ein passender Text gebaut. Snapshot wird wie bei jeder Bulk-Operation vorher angelegt — Rollback möglich, wenn das Ergebnis nicht passt.

Prompts sind in der Konfigmatrix als Templates hinterlegt und pro Sprache überschreibbar. Variablen im Prompt: {name}, {category}, {properties}, {manufacturer}, {currentText} und weitere.

DeepL-Übersetzung

Im Translation-Tab erscheint pro Sprachspalte ein Übersetzen-Button. Klick übersetzt die aktuelle Zeile (oder alle Felder) von der konfigurierten Quellsprache in die Zielsprache. Bestehende Texte können wahlweise überschrieben oder nur leere Felder gefüllt werden.

Massen-Übersetzung

Im Translation-Dashboard: Sprache und Felder wählen, „Alle fehlenden mit DeepL befüllen“ klicken. Das PIM iteriert über alle unvollständigen Produkte und befüllt sie batch-weise. Fortschritts-Anzeige, Abbruch möglich, Snapshot wird vorher angelegt — Rückrollen via Audit-Log.

Glossare

DeepL-Glossare werden unterstützt. Begriffe wie Markennamen, Produktbezeichnungen oder Fachterminologie können pro Sprachpaar als Glossar hinterlegt werden — DeepL übersetzt sie dann konsistent.

Permissions

Für KI und DeepL gibt es separate Permissions (pim.ai_use, pim.ai_bulk, pim.deepl_use, pim.deepl_bulk) — sodass z.B. Texter KI im Einzel-Modus nutzen, aber nur ein Administrator Massen- Generierung oder Massen-DeepL anstoßen darf.

11
Modul

Medien, Preise & weitere Felder#

Das PIM deckt den kompletten Produktlebenszyklus ab. Hier die wichtigsten Module außerhalb von Bulk/CSV.

Medien

  • Drag & Drop-Upload direkt aus dem Produkt-Detail.
  • Alternative: Auswahl aus der Shopware-Media-Bibliothek.
  • Coverbild-Definition per Klick auf das Stern-Symbol.
  • Galerie-Reihenfolge per Drag & Drop — atomare Batch-Speicherung mit Fehleranzeige.
  • Alt-Texte pro Bild und Sprache.
Cover-Lock: Bei aktiver Option „Cover zuerst“ ist das Cover-Bild gegen versehentliches Verschieben gesperrt — andere Bilder können nicht über das Cover gezogen werden. Die Reihenfolge der anderen Bilder bleibt frei sortierbar. Bei Speicherfehlern erscheint eine rote Notification mit HTTP-Status statt eines stillen Fehlers.

Preise

  • Beliebig viele Preisstaffeln pro Produkt.
  • Brutto/Netto-Eingabe je Steuersatz mit Live-Berechnung.
  • Listenpreis (UVP) zur Anzeige als „Statt-Preis“ im Shop.
  • Optional: Bulk-Übertragung der Staffelpreise auf alle Varianten (nicht-revertierbar).

Properties

  • Property-Zuweisung pro Produkt — oder im Bulk für viele auf einmal.
  • Suche, Gruppierung, Mehrfachselektion.
  • Erstellen und Editieren von Property-Gruppen direkt im PIM — inkl. Farb-Swatches, Bildern, Übersetzungen.
  • Auch im Translations-Tab pro Sprache pflegbar (Property-Übersetzungen).

Cross-Selling

  • Mehrere Cross-Selling-Streams pro Produkt.
  • Manuelle Produktliste oder dynamische Produktgruppe (Stream).
  • Produkt-Suche mit Drag & Drop-Sortierung.
  • Bulk-Zuweisung über Mehrfachbearbeitung.
  • Optional Übertragung auf Varianten (nicht-revertierbar).
Auto-Reparatur: Bestehende Cross-Selling-Gruppen werden beim Speichern automatisch mit der korrekten productVersionId repariert. Cross-Selling-Gruppen, die in alten Shopware-Versionen ohne diese ID angelegt wurden und im Storefront unsichtbar waren, erscheinen nach erneutem Speichern im Shop.

Kategorien

  • Standard-Kategorienzuweisung wie im Shopware-Admin.
  • Hauptkategorie pro Verkaufskanal — für korrekte Breadcrumbs und SEO.
  • Anzeige als Kategoriename (auch bei 500+ Kategorien performant).
  • Im Bulk änderbar.

SEO

  • Meta-Title, Meta-Description, Keywords pro Sprache.
  • Im Bulk-Modus änderbar.
  • SEO-URL wird von Shopware generiert (nicht im Snapshot).
12
Sicherheit

Workflow, Audit, Lock & Berechtigungen#

Wenn mehrere Personen Produkte pflegen, ist Nachvollziehbarkeit alles. Das PIM protokolliert jede schreibende Operation, kann auf einen Vorher-Zustand zurückrollen und verhindert über einen Edit-Lock paralleles Überschreiben.

Audit-Log

Jeder Eintrag enthält:

Zeitstempel
Wann die Operation lief (auf Sekundengenau)
User
Welcher Admin-User die Aktion ausgelöst hat
Operation
Bulk-Edit, CSV-Import, Variantengenerierung, manuelle Einzeländerung, KI-Generierung, DeepL-Übersetzung
Scope
Anzahl betroffener Produkte + Liste der productNumbers
Diff
Vorher/Nachher pro Feld, auch für Translations pro Sprache
Snapshot-Status
Ob ein Revert möglich ist (ja/nein)

Die Aufbewahrungsfrist für Audit-Einträge ist in der Konfigmatrix einstellbar (Standard: 90 Tage). Ein scheduled task räumt ältere Einträge automatisch auf, inklusive der zugehörigen Snapshots.

Ein-Klick-Revert

Aus dem Audit-Log direkt zurückrollen — der komplette Produktzustand vor der Operation wird wiederhergestellt. Translations werden mit zurückgesetzt. Der Revert selbst erzeugt einen neuen Audit-Log-Eintrag, sodass die Historie lückenlos bleibt.

Edit-Lock mit Heartbeat

Wenn zwei Pfleger gleichzeitig dasselbe Produkt öffnen, würde ohne Schutz der letzte Speichern-Vorgang gewinnen und Änderungen des anderen Users überschreiben. Der Edit-Lock verhindert das:

  • Beim Öffnen eines Produkt-Details wird ein Lock mit User-ID und Timestamp gesetzt.
  • Ein Heartbeat erneuert den Lock alle 30 Sekunden, solange das Tab offen ist.
  • Ein anderer User, der dasselbe Produkt öffnet, sieht einen Hinweis: „Wird bearbeitet von {Name} seit {Zeit}“ und kann nur lesend zugreifen.
  • Bleibt der Heartbeat 2 Minuten aus (Tab geschlossen, Browser-Crash), wird der Lock automatisch freigegeben.
  • Admins mit pim.lock_break-Permission können einen Lock manuell brechen.

Produkt-Vorschau (inaktive Artikel)

Inaktive Produkte sind im Storefront unsichtbar — was die Vorschau im Browser zur Qual macht. Mit dem Preview-Modul kann ein inaktiver Artikel temporär aktiviert werden, ohne dass er regulär verkaufsbereit ist:

  • Im Produkt-Detail Button Vorschau anzeigen mit konfigurierbarer Dauer (15s / 30s / 60s / 120s).
  • Aktivierung mit temporärer Sichtbarkeit „Nur per Direktlink“ (Level 10) — nicht in Listings, nicht in Suche.
  • Direkt-URL wird in einem neuen Tab geöffnet.
  • Nach Ablauf wird die Sichtbarkeit automatisch entfernt und das Produkt wieder deaktiviert.
  • Auch bei Navigation oder Tab-Schließung wird sauber aufgeräumt.

Approval-Workflow

Optionales Feature: Produkte können nach Anlage oder Import auf pending gesetzt werden und müssen vor der Aktivierung im Shop von einem Benutzer mit Approval-Recht freigegeben werden. Sinnvoll bei:

  • Mehrstufigen Pflegeprozessen (Texter → Lektor → Freigabe)
  • Bulk-Imports von Lieferanten-CSVs
  • Externen Pflegern mit eingeschränkten Rechten

Permissions

Das Berechtigungssystem ist feingranular und lehnt sich an die Shopware-ACL an. Jede Bulk-Aktion, jeder Modus von CSV, jedes Löschen ist als eigene Permission freischaltbar:

Permission Wirkung
pim.readListing und Detail anschauen
pim.writeEinzelne Felder ändern
pim.bulk_editMehrfachbearbeitung ausführen
pim.csv_exportCSV/TSV/XML exportieren
pim.csv_importCSV/TSV/XML importieren
pim.variantsVarianten generieren/löschen
pim.deleteProdukte löschen
pim.duplicateProdukte duplizieren (inkl. Varianten, Bilder)
pim.snapshot_revertSnapshot wiederherstellen
pim.approvalProdukte freigeben
pim.previewInaktive Artikel temporär aktivieren
pim.ai_useKI-Textgenerierung pro Feld nutzen
pim.deepl_useEinzel-DeepL-Übersetzung pro Produkt
pim.deepl_bulkMassen-DeepL über das Dashboard
pim.lock_breakEdit-Lock anderer User brechen
pim.configKonfigmatrix bearbeiten
pim.adminSuperadmin — alle Gates umgehen
13
Setup

Konfiguration#

Die zentrale Konfigmatrix steuert, welche Felder sichtbar sind, welche Patterns als Default gelten und wie sich das Listing verhält. Erreichbar über PIM → Konfiguration.

Feldmatrix

Pro Feld vier Toggles:

Toggle Wirkung
ListingFeld erscheint als Spalte im Listing (per-User ein-/ausblendbar)
DetailFeld ist im Produkt-Detail editierbar
BulkFeld ist im Mehrfachbearbeiten-Modal verfügbar
CSVFeld ist im CSV-Export auswählbar
QuickviewFeld ist im Quickview-Modal sichtbar
PflichtFeld als Pflichtfeld markiert — Speichern wird blockiert, wenn leer

Custom Fields werden automatisch erkannt und in die Matrix aufgenommen, sobald sie in Shopware angelegt sind. Bei Bedarf Custom Fields neu scannen klicken.

Sektionsreihenfolge per Drag-and-Drop

Die Reihenfolge der Sektionen in der Produkt-Detailansicht (Stammdaten, Preise, Medien, SEO, Properties, Cross-Selling, etc.) lässt sich per Drag-and-Drop frei festlegen. Dasselbe gilt für die Sektionen im Varianten-Detail-Modal — beide werden getrennt konfiguriert.

Sektionen, in denen alle Felder deaktiviert sind, werden automatisch ausgeblendet. Kein leerer Akkordeon-Header mit nichts dahinter.

Standard-Steuersatz für neue Produkte

Beim Anlegen eines neuen Produkts wird automatisch der erste Steuersatz aus dem Shopware-System vorausgewählt (sortiert nach position ASC). Sowohl taxId als auch taxRate werden gesetzt, sodass die Brutto/Netto-Berechnung sofort funktioniert.

Vollständigkeitsbewertung

Welche Felder zählen für den Vollständigkeits-Score im Dashboard? In der Konfigmatrix pro Feld eine Gewichtung (0–10) vergeben. Felder mit Gewichtung 0 werden ignoriert; höhere Werte zählen stärker. Pro Produkt wird ein Prozent-Wert daraus berechnet.

Variantenmuster

Pro Shop kannst du Default-Patterns für Artikelnummer und Variantennamen hinterlegen. Diese gelten in allen Variantenoperationen — pro Produkt überschreibbar.

# Default-Pattern für Artikelnummern
{number}-{option1}-{option2}

# Default-Pattern für Variantenname
{parentName} · {option1} {option2}

Export-Defaults

Im Konfigmatrix-Tab Import & Export hinterlegst du Standardwerte für CSV-Exporte — Profil-Auswahl, Trennzeichen (Komma / Semikolon / Tab), Maximum-Zeilen pro Datei, Dateiformat (CSV / TSV / XML), und ob Varianten standardmäßig mit exportiert werden sollen.

Konfig-Suche (Strg+K)

Die Konfiguration kann groß werden — gerade bei vielen Custom Fields. Mit Strg+K (oder +K auf Mac) öffnet sich eine Schnellsuche:

  • Sucht über alle Tabs der Konfigseite
  • Match-Counter pro Tab
  • Auto-Scroll zum ersten Treffer
  • Mit / zwischen Treffern navigieren
  • Enter zum Übernehmen, Esc zum Abbrechen

Validation-Modal mit Scroll-to-Section

Klick auf Speichern während Pflichtfelder leer sind: statt einer Warn-Banner-Wand öffnet sich ein Modal mit allen Fehlern. Klick auf einen Fehler springt direkt zur betroffenen Sektion — sie wird automatisch aufgeklappt, das Feld wird mit einer indigo Outline kurz hervorgehoben.

Pro-User-Persistenz

Folgende Einstellungen werden pro Admin-User gespeichert, nicht global:

  • Spaltenkonfiguration im Listing (welche Spalten sichtbar, in welcher Reihenfolge)
  • Page-Size
  • Filter-Presets
  • Sortierung

Jeder Pfleger hat damit seine eigene Sicht — ohne sich gegenseitig die Einstellungen zu überschreiben.

14
Referenz

Tastatur-Shortcuts#

Shortcut Kontext Aktion
Strg+K / +K Konfiguration Konfig-Suche öffnen
/ Konfig-Suche Zwischen Treffern navigieren
Enter Konfig-Suche, Filter-Modal Übernehmen / Anwenden
Esc Alle Modals Abbrechen / Schließen
Strg+A Listing Alle Zeilen auf aktueller Seite auswählen
Strg+Shift+A Listing Alle Treffer (über alle Seiten) auswählen
Strg+S Detail / Bulk-Modal Speichern (überschreibt Browser-Default)
Strg+F Listing Filter-Panel öffnen
F2 Listing-Zelle Inline-Edit starten (sofern Feld editable)
15
Referenz

Variablen für Patterns#

Patterns für Artikelnummer und Variantenname akzeptieren Variablen in geschweiften Klammern. Sie werden zum Zeitpunkt der Generierung deterministisch ersetzt.

Variable Wert Beispiel
{number} productNumber des Stammartikels SW-1001
{parentName} Name des Stammartikels Sneaker Pro
{option1}{optionN} Wert der jeweiligen Option (in Klick-Reihenfolge) rot, M
{group1}{groupN} Name der Property-Gruppe Farbe, Größe
{counter} Laufende Nummer ab 1, je Generation 1, 2, …
{counter:3} Counter mit Zero-Padding (Länge in Doppelpunkt) 001, 002, …
{date} Tagesdatum (ISO) 2026-05-11
{ean} EAN des Stammartikels (sofern gesetzt) 4006381333931
{manufacturer} Hersteller-Name Adidas

Beispiele

Klassische Variantennummer mit Optionen

# Pattern
{number}-{option1}-{option2}

# Ergebnis (Farbe=rot, Größe=M)
SW-1001-rot-M

Sortierbare Variantennummer mit Counter

# Pattern
{number}-V{counter:3}

# Ergebnis (3 Varianten)
SW-1001-V001
SW-1001-V002
SW-1001-V003

Lesbarer Variantenname

# Pattern
{parentName} ({group1}: {option1}, {group2}: {option2})

# Ergebnis
Sneaker Pro (Farbe: rot, Größe: M)
Reihenfolge der Optionen: {option1} verweist immer auf die erste gewählte Eigenschaft — also die, die du im VarGen-Modal zuerst angeklickt hast. Wenn du Größe zuerst klickst und dann Farbe, ist {option1} die Größe. Per Drag & Drop in der Optionsliste umsortierbar.
16
Referenz

CSV-Spalten-Referenz#

Die folgenden Spaltennamen werden vom Import erkannt. Beim Export werden sie nach derselben Konvention erzeugt.

Stammdaten (sprachneutral)

Spalte Typ Hinweis
productNumberStringMatch-Key, eindeutig
activeBooleanIm Shop sichtbar
parentNumberStringproductNumber des Parents (für Varianten-Import)
manufacturerNumberStringHersteller-Artikelnummer
eanStringEAN/GTIN
manufacturerStringHerstellername (gemappt per Name)
taxRateNumberz.B. 19 oder 7
stockNumberLagerbestand
availableStockNumberVerfügbarer Bestand (read-only beim Import)
price_grossNumberBrutto-Preis
price_netNumberNetto-Preis
listPrice_grossNumberListenpreis brutto
weightNumberin kg
length / width / heightNumberin mm
availableFromDateISO oder dd.mm.yyyy
availableUntilDateISO oder dd.mm.yyyy
categoriesArrayPipe-getrennte Kategorienamen
tagsArrayPipe-getrennt
propertiesArrayFormat Gruppe:Wert|Gruppe:Wert
visibilityArrayVerkaufskanal-Namen, pipe-getrennt

Translations

Spalten beginnen mit trans_ und enden mit __<lang>.

Spalte Sprache Mappt auf
trans_name__de_DEDeutschproduct.translation.name
trans_name__en_GBEnglisch (UK)product.translation.name
trans_description__de_DEDeutschproduct.translation.description
trans_metaTitle__<lang>SEO Meta-Title
trans_metaDescription__<lang>SEO Meta-Description
trans_keywords__<lang>SEO Keywords
trans_packUnit__<lang>Verpackungseinheit

Custom Fields

Spalten beginnen mit cf_.

Spalte Wirkung
cf_myFieldSprachneutrales Custom Field (im customFields-JSON)
cf_myField__de_DETranslatable Custom Field, deutsche Version
cf_myField__en_GBTranslatable Custom Field, englische Version
i
Sprachcodes: Es werden die Shopware-internen Locale-Codes verwendet, z.B. de_DE, en_GB, fr_FR, nl_NL. Bindestriche und Lowercase werden nicht akzeptiert.
17
Was ist neu

Aktuelle Erweiterungen#

Die größeren Erweiterungen aus den letzten Release-Zyklen — nach Thema sortiert.

Listing & Quickview
Neu
  • Inline-Edit in der Tabelle: Bestand, Preis, EAN, Herstellernummer und Gewicht direkt in der Listing-Zeile — auch für Varianten, mit Read-back-Verifikation
  • Quickview-Modal: Alle wichtigen Stammdaten, Preise, Lagerbestand und SEO eines Produkts in einem kompakten Modal
  • Listing-Pagination: Getrennte Bereich-/Total-Anzeigen, oben und unten
  • Listing-Format: „Produkte: X (Varianten: Y)“ als Aggregatzeile
KI & Übersetzung
Neu
  • Claude (Anthropic) als KI-Provider: Wahlweise neben ChatGPT verfügbar, Modell-Auswahl in der Konfigmatrix
  • KI in der Mehrfachbearbeitung: Bulk-Generierung von Beschreibungen, Meta-Texten und Keywords mit Snapshot
  • DeepL Massen-Übersetzung: Über das Translation-Dashboard auf alle unvollständigen Produkte
  • Glossare: Markennamen und Fachterminologie pro Sprachpaar konsistent übersetzen
Varianten
Erweitert
  • Variantenmatrix: Bulk-Preise und Bestand in Tabellenform
  • Pattern-Akkordeons: Artikelnummer und Variantenname als getrennte Akkordeons mit klickbaren Variable-Chips
  • Vereinheitlichte Suche: Eine Suche durchsucht Eigenschaften und Optionen gleichzeitig
  • Hauptvarianten-Vorauswahl: Auto-Setzen nach Strategie (erste / niedrigste Nummer), Hauptartikel optional verbergen
  • Daten-Vererbung: Beschreibung, Staffelpreise, Cross-Selling, Bilder, SEO vom Parent an alle Varianten
Mehrfachbearbeitung
Erweitert
  • Cross-Selling-Gruppen-Bulk: Massenweise zuweisen (Produktstream oder Produktliste)
  • Auf Filter beschränken: Stammartikel bleiben unangetastet, nur filter-treffende Varianten werden geändert
  • Snapshot-Performance: Erstellung gebatched in 50er-Chunks via POST Search API
  • 25+ Bulk-Felder mit Snapshot und Ein-Klick-Revert
Import & Export
Überarbeitet
  • Batch-POST-API: Komplett überarbeitet — POST Search statt sequenzielle GET-Calls, dramatisch schneller
  • Custom Fields als eigene Spalten: Im Export pro Custom Field eine eigene Spalte (statt eines einzigen JSON-Blobs)
  • Auflösung per Artikelnummer / EAN: parentId, mainVariantId, parentProductNumber akzeptieren UUID, Artikelnummer oder EAN
  • 28 Filter-Typen komplett im Export-Workflow unterstützt
  • Export-Defaults in der Konfigmatrix: Profil, Trennzeichen, Maximum-Zeilen, Format, Varianten-Standard
  • Hauptkategorie-Namen mit Tree-Resolution statt ID
  • Einheit (Name) als zusätzliche Spalte — Klarname statt nur ID
Medien & Cross-Selling
Verbessert
  • Cover-Lock: Coverbild gegen versehentliches Verschieben gesperrt
  • Atomare Bild-Speicherung: Batch-Save statt sequenzielle PATCH-Calls, mit Fehler-Notification
  • Cross-Selling Auto-Reparatur: Gruppen mit korrekter productVersionId — bisher unsichtbare Gruppen werden im Storefront sichtbar
Konfigmatrix & UX
Neu
  • Sektionsreihenfolge per Drag-and-Drop: Sowohl in der Produkt-Detailansicht als auch im Varianten-Modal
  • Standard-Steuersatz: Bei neuen Produkten wird automatisch der System-Default vorausgewählt
  • Validation-Modal: Pflichtfeld-Fehler erscheinen als klickbares Modal mit Scroll-to-Section
  • Filter-Operatoren: notContains arbeitet jetzt korrekt mit Eltern-Produkten
  • Vereinheitlichte Suche im VarGen: Eine Suche, sucht Eigenschaften und Optionen gleichzeitig
18
Hilfe

FAQ & Troubleshooting#

Mein CSV-Import lädt nicht — was tun?

  • Kodierung prüfen: Das PIM erwartet UTF-8 (mit oder ohne BOM).
  • Trennzeichen prüfen: Semikolon (;) oder Komma (,) — wird automatisch erkannt, aber muss konsistent sein.
  • Pflichtfeld productNumber muss vorhanden sein.
  • PHP-Memory-Limit auf min. 512 MB setzen für Imports > 5.000 Zeilen.
  • PHP-Execution-Time auf 300+ Sekunden setzen oder Cronjob nutzen.

Die Snapshot-Wiederherstellung wirft einen Fehler

Möglicher Grund: Das Produkt wurde zwischen dem ursprünglichen Snapshot und dem Revert manuell gelöscht oder verändert. Das PIM zeigt im Detail-Dialog des Audit-Logs an, welche Zeilen nicht zurückgerollt werden konnten, und führt den Rest dennoch aus.

Custom Fields tauchen nicht in der Konfigmatrix auf

In der Konfigseite auf Custom Fields neu scannen klicken. Wenn das nicht hilft: Shopware-Cache löschen und Seite neu laden.

Wie kann ich Translations für einen ganz neuen Custom Field nachträglich aktivieren?

  1. Custom Field in Shopware bearbeiten und translatable aktivieren.
  2. In der PIM-Konfig Custom Fields neu scannen.
  3. Bestehende Werte werden als Default-Sprache (Shop-Default) übernommen — andere Sprachen müssen befüllt werden.

Bulk-Edit dauert sehr lange

Bei mehreren tausend Produkten: kein Problem grundsätzlich, aber abhängig vom Server. Empfehlungen:

  • Auf produktivem Server: keine Bulk-Operationen während Stoßzeiten.
  • PHP-OPcache aktivieren.
  • MySQL innodb_buffer_pool_size > 1 GB.
  • Wenn möglich: SSD-Storage.

Kann ich das PIM parallel zu anderen PIM-Plugins betreiben?

Technisch ja — das PIM patcht keine Core-Files und schreibt nur in seine eigenen Tabellen sowie die Standard-Shopware-Produkttabellen. Konflikte kann es geben, wenn ein anderes Plugin dieselbe Field-Definition überschreibt. Bei Bedarf Support kontaktieren.

Wie häufig erscheinen Updates?

Patch-Releases (1.0.x) alle 2–4 Wochen, Minor-Releases (1.x.0) bei größeren Features. Major-Releases sind an Shopware-Versionen gekoppelt — eine Plugin-Version pro Shopware-Major.

i
Du findest deine Frage nicht? Schreib uns über das Kontaktformular auf stoneandwater.online — wir antworten in der Regel am selben oder nächsten Werktag.
19
Technik

Architektur#

Für Entwickler und technisch interessierte Admins — ein kurzer Blick unter die Haube.

Plugin-Struktur

StawPim/
├── composer.json
├── src/
│   ├── StawPim.php                # Plugin-Bootstrap, install/activate/update Hooks
│   ├── Controller/                # Admin-API-Routes (/api/_action/staw-pim/...)
│   ├── Service/
│   │   ├── BulkEditService.php
│   │   ├── SnapshotService.php
│   │   ├── CsvImportService.php
│   │   ├── CsvExportService.php
│   │   ├── VariantGenerator.php
│   │   ├── TranslationService.php
│   │   └── AuditLogService.php
│   ├── Migration/                 # DB-Migrationen
│   └── Resources/
│       ├── app/administration/   # Vue 3 Admin-Components
│       ├── config/services.xml
│       ├── snippet/de-DE.json
│       └── snippet/en-GB.json
└── tests/                         # PHPUnit + Vitest

Datenbanktabellen

staw_pim_snapshot
Vorher-Zustände aller revertierbaren Operationen (JSON-Spalte mit Produkt-Daten)
staw_pim_audit
Audit-Log-Einträge mit User, Timestamp, Operation, Diff (FK auf snapshot)
staw_pim_preset
Filter-Presets pro User
staw_pim_config
Feldmatrix-Konfiguration und Default-Patterns pro Shop
staw_pim_user_settings
Spaltenkonfiguration, Page-Size und User-Präferenzen pro Admin-User

Admin-API-Endpoints

Alle Endpoints sind unter /api/_action/staw-pim/* erreichbar und benötigen ein gültiges OAuth-Token (wie alle Shopware-Admin-APIs).

EndpointMethodeWirkung
/products/listPOSTErweiterte Listenabfrage mit Variantenfilter
/bulk-editPOSTBulk-Operation ausführen, Snapshot anlegen
/snapshot/revert/{id}POSTSnapshot wiederherstellen
/csv/exportPOSTCSV mit aktuellen Filter-Kriterien generieren
/csv/importPOSTHochgeladene CSV verarbeiten (Batch-Sync)
/variants/generatePOSTVarianten anhand Pattern + Optionen erzeugen
/variants/deletePOSTVarianten löschen (Modus „Sicher“/„Alle“)
/audit/listGETPaginierte Audit-Log-Einträge
/config/scan-cfPOSTCustom Fields neu scannen

Frontend-Stack

  • Vue 3 mit Composition API (für Shopware 6.6+)
  • Components nach Shopware-Komponenten-Konvention (sw-*)
  • Eigene Components mit Prefix staw-pim-*
  • Vite-Build für Production (.vite/manifest.json)
  • Snippet-System für i18n — keine hartkodierten Strings

Sauberer Code

  • DI-Container-Services, keine globalen Statics
  • DAL-konformer Datenzugriff (keine direkten SQL-Queries in Business-Logik)
  • Keine Patches an Core-Files
  • Symfony Messenger für Async-Tasks (große CSV-Imports)
  • PHPUnit-Tests für alle Services, Vitest für Vue-Components