Ein Onlineshop auf Basis von WooCommerce sollte mit BaseLinker verbunden werden, damit Produkte, Preise und Lagerbestände einheitlich funktionieren. Auf den ersten Blick sah die Aufgabe standardmäßig aus: Produkte des Shops Plantalux mit den BaseLinker-Katalogen verbinden und die Synchronisierung starten.
Während der Arbeit wurde klar, dass das Problem nicht nur in der Verbindung selbst lag. Der Shop hatte bereits eine Vorgeschichte mit manuell angelegten Produkten, späteren Importen aus BaseLinker, Übersetzungen der Produkte aus dem Polnischen ins Rumänische, doppelten Artikelnummern und teilweise fehlenden EAN-Codes.
Dadurch wurde aus einer einfachen Anbindung eine vollständige Ordnung der Produktdatenbank und die Entwicklung eines Werkzeugs, das zeigt, was während der Synchronisierung tatsächlich passiert.
Kontext
Die Website läuft auf WordPress und WooCommerce. Die Produkte im Shop sind auf Rumänisch, während ein Teil der Daten in BaseLinker auf Polnisch war. Einige Produkte wurden zunächst manuell hinzugefügt, später wurde der Katalog durch Importe erweitert.
In BaseLinker wurden mehrere Kataloge verwendet:
- Hauptkatalog
- TM-Katalog
- zusätzlicher Katalog
Nach der Logik des Kunden konnten identische Produkte verschiedener Marken dieselbe Artikelnummer haben. Der EAN-Code musste jedoch für jedes Produkt eindeutig sein.
Das ist ein wichtiger Punkt, weil WooCommerce eindeutige Artikelnummern erwartet, während BaseLinker für eine korrekte Arbeit am besten über einen zuverlässigen eindeutigen Code mit Produkten verknüpft wird.
Ausgangsproblem
Im Shop erschienen Meldungen über doppelte Artikelnummern. Ein Teil der Produkte hatte keinen EAN-Code. Ein Teil der Produkte hatte EAN-Werte in verschiedenen Feldern, aber BaseLinker sah nur eines davon.
Außerdem war nicht klar:
- welche Produkte bereits auf der Website vorhanden sind
- welche Produkte nur in BaseLinker vorhanden sind
- welche Produkte mit dem Shop verknüpft sind
- welche Produkte nicht automatisch verknüpft werden dürfen
- ob BaseLinker Preise und Bestände wirklich synchronisiert
- warum einige Produkte nach der Synchronisierung einen Lagerbestand von null erhalten
Ein eigenes Problem war, dass es im WooCommerce-Adminbereich keine bequeme Möglichkeit gab, den tatsächlichen Synchronisierungsstatus zu sehen. BaseLinker konnte anzeigen, dass ein Vorgang abgeschlossen wurde, aber auf Shop-Seite war nicht klar, ob die Anfrage WordPress wirklich erreicht hatte und was genau geändert wurde. Das offizielle BaseLinker-Plugin liefert dem Shop-Administrator keine Informationen zum Status der Synchronisierung.
Was wir zuerst gemacht haben
Im ersten Schritt haben wir die vollständige Produktliste aus dem Shop über WP All Export exportiert. Der Export enthielt 1455 Produkte.
Danach haben wir geprüft:
- ob es doppelte EAN-Werte gibt
- welche Produkte keinen EAN-Code haben
- welche Produkte in den BaseLinker-Katalogen gefunden werden können
- welche Produkte dieselben Artikelnummern haben
- welche Artikelnummern Produktpaare bilden
- welche Barcodes in verschiedenen Katalogen doppelt vorkommen
Es zeigte sich, dass einige Produkte ohne EAN in den BaseLinker-Dateien tatsächlich passende Werte hatten. Für diese Produkte wurden separate Dateien vorbereitet, um die EAN-Werte in WooCommerce zu ergänzen.
Die EAN musste in zwei Felder geschrieben werden:
- das Standardfeld von WooCommerce für den globalen Produktcode
- ein zusätzliches Feld, das von BaseLinker verwendet wurde
Nach Prüfung der alten Datenbank wurde festgestellt, dass das benötigte zusätzliche Feld den Schlüssel _et_gtin hat.
Arbeit mit Produkten ohne EAN
Zunächst wurden 34 Produkte gefunden, deren EAN aus den bereitgestellten BaseLinker-Dateien wiederhergestellt werden konnte. Später ergänzte der Kunde einen weiteren Katalog, und es konnten noch 19 weitere EAN-Werte gefunden werden.
Nach zusätzlichen Prüfungen wurde klar, dass nicht alle diese Produkte automatisch aktualisiert werden konnten. Ein Teil hatte Barcode-Konflikte oder erforderte eine manuelle Prüfung.
Deshalb wurden risikobehaftete Produkte in Entwürfe verschoben, damit keine falschen Verknüpfungen entstehen und keine fehlerhafte Synchronisierung ausgelöst wird.
Warum nicht einfach alles automatisch verknüpft werden konnte
In BaseLinker gab es Produkte, bei denen ein EAN-Code mehr als einmal vorkam. Außerdem gab es Produkte, die nur über die Artikelnummer übereinstimmten, aber unterschiedliche EAN-Werte hatten.
Für einen solchen Shop ist eine automatische Verknüpfung über die Artikelnummer gefährlich, weil die Artikelnummer in einem Produktpaar wiederholt werden kann. In diesem Projekt war der zuverlässige Schlüssel für die Massenverknüpfung der EAN-Code.
Wir haben die Produkte in Gruppen aufgeteilt:
- sicher für die Massenverknüpfung
- mit doppeltem EAN
- nur über die Artikelnummer gefunden
- Entwürfe ohne EAN
- Produkte, die manuell geprüft werden müssen
Für sichere Produkte wurden separate Verknüpfungsdateien für jeden BaseLinker-Katalog vorbereitet.
Massenverknüpfung der Produkte
Nach der Vorbereitung wurden die Verknüpfungsdateien in BaseLinker hochgeladen.
Ergebnis:
- im Hauptkatalog wurden 1112 Produkte verknüpft
- im TM-Katalog wurden 288 Produkte verknüpft
- im zusätzlichen Katalog wurden 5 Produkte verknüpft
Insgesamt wurden 1405 von 1455 Produkten zuverlässig verknüpft.
50 Produkte blieben ohne automatische Verknüpfung, weil sie eine manuelle Prüfung erforderten. Das waren keine zufälligen Fehler, sondern genau die Positionen, die nicht sicher massenhaft verbunden werden konnten.
Prüfung der Synchronisierung
Nach der Verknüpfung der Produkte haben wir die Synchronisierung von Preisen und Lagerbeständen aus BaseLinker gestartet.
BaseLinker begann, Aktualisierungen an den Shop zu senden. Ein Teil der Produkte wurde erfolgreich aktualisiert, aber während der Massenvorgänge traten Serverantwortfehler auf:
- leere Antwort
- Fehler 502
- Fehler 503
- abgebrochene Serverantwort
Das zeigte, dass die Verbindung zwischen BaseLinker und dem Shop funktioniert, der Server aber Massenaktualisierungen nicht immer stabil verarbeitet.
Separat prüften wir einen Fall, in dem ein Produkt nach der Synchronisierung als nicht vorrätig angezeigt wurde. Es stellte sich heraus, dass WooCommerce tatsächlich einen Bestand von 0 erhalten hatte. Das Problem lag also nicht in der Anzeige des Produkts auf der Website, sondern darin, welcher Bestand aus BaseLinker kam oder welches Lager als Bestandsquelle ausgewählt war.
Warum ein eigenes Plugin notwendig war
Der Standard-Adminbereich von WooCommerce zeigt nicht, was während der Synchronisierung genau passiert.
Wir mussten sehen:
- ob die BaseLinker-Anfrage WordPress erreicht hat
- ob WooCommerce die Aktualisierung angewendet hat
- ob der Preis geändert wurde
- ob der Lagerbestand geändert wurde
- welcher API-Benutzer die Aktion ausgeführt hat
- welches Produkt die Aktualisierung erhalten hat
- ob es einen Fehler auf WordPress-Ebene gab
- ob das Problem auftrat, bevor die Anfrage die Website erreichte
Zunächst versuchten wir, uns auf Verknüpfungsdateien zu stützen, aber das gab keine ehrliche Antwort auf die wichtigste Frage: ob das Produkt wirklich jetzt synchronisiert wird.
Deshalb wurde entschieden, ein separates Plugin für die Live-Diagnose zu erstellen.
Lösung: Aroks BaseLinker Debugger
Für das Projekt wurde ein kleines Plugin namens Aroks BaseLinker Debugger erstellt.
Es importiert keine manuellen Dateien und zieht keine Schlüsse aus alten Verknüpfungslisten. Das Plugin zeigt nur das, was WordPress während der Arbeit von BaseLinker tatsächlich gesehen hat.
Das Plugin ergänzt den WooCommerce-Adminbereich um:
- eine Spalte mit dem Synchronisierungsstatus
- einen Filter für Produkte nach Status
- einen eigenen Block in der Produktkarte
- ein Protokoll der letzten Ereignisse
Hauptzustände:
- Produkt wurde erfolgreich synchronisiert
- Anfrage war vorhanden, aber Prüfung ist erforderlich
- kein Live-Nachweis der Synchronisierung
In der Produktkarte sieht man:
- aktuellen Lagerbestand
- Verfügbarkeitsstatus
- ob die Lagerverwaltung aktiviert ist
- aktuellen Preis
- letzte Preisänderung
- letzte Bestandsänderung
- letzte Anfrage von BaseLinker
- letzten Fehler, falls es einen gab
Das Plugin wurde ins Ukrainische, Polnische und Englische übersetzt.
Was die Diagnose gezeigt hat
Nach dem Start des Plugins wurde klar, dass die meisten Produkte korrekt synchronisiert werden. Ein Teil der Produkte hatte jedoch keinen Live-Nachweis der Synchronisierung.
Wir haben diese Produkte analysiert und ein klares Bild erhalten:
- 19 Produkte waren Entwürfe ohne EAN
- 18 Produkte hatten EAN, waren aber wegen Konflikten nicht in BaseLinker verknüpft
- 13 Produkte stimmten nur über die Artikelnummer überein, hatten aber einen anderen EAN
- 5 Produkte waren verknüpft, hatten aber Bestand 0 und erhielten keine neue Aktualisierung
Dadurch wurde deutlich, dass das Problem nicht an einer einzigen Stelle lag. Ein Teil der Fragen betraf die Daten, ein Teil die Lagereinstellungen in BaseLinker und ein Teil die Serverstabilität während Massenaktualisierungen.
Ergebnis
Als Ergebnis der Arbeit:
- wurde der Shop-Katalog mit drei BaseLinker-Katalogen abgeglichen
- wurden fehlende EAN-Werte gefunden und teilweise wiederhergestellt
- wurden Produkte mit doppelten EAN-Werten erkannt
- wurde eine sichere Massenverknüpfung der Produkte vorbereitet
- wurden 1405 von 1455 Produkten verknüpft
- wurden problematische Produkte in separate Gruppen für die manuelle Prüfung verschoben
- wurde die Synchronisierung von Preisen und Beständen geprüft
- wurden Servereinschränkungen bei Massenaktualisierungen erkannt
- wurde ein eigenes Plugin zur Kontrolle der Live-Synchronisierung erstellt
Das wichtigste Ergebnis: Der Kunde erhielt nicht nur eine BaseLinker-Anbindung, sondern ein verständliches Kontrollsystem. Jetzt ist sichtbar, welche Produkte tatsächlich synchronisiert wurden, welche Aufmerksamkeit benötigen und wo genau die Ursache eines Problems zu suchen ist.
Was der Kunde am Ende erhalten hat
Die Anbindung von BaseLinker an einen Onlineshop ist nicht immer nur eine Frage der Einstellungen. Wenn ein Shop bereits eine Geschichte mit manueller Befüllung, Importen, Übersetzungen, doppelten Artikelnummern und verschiedenen Produktquellen hat, müssen zuerst die Daten geordnet werden.
In diesem Projekt sind wir vom Prüfen der EAN-Werte und Produktkataloge bis zur Entwicklung eines eigenen Diagnosewerkzeugs gegangen. Genau das ermöglichte es, nicht zu raten, sondern das tatsächliche Bild zu sehen: was verknüpft ist, was synchronisiert wird, was WordPress nicht erreicht und was eine manuelle Entscheidung braucht.
Dieser Ansatz reduziert das Risiko falscher Aktualisierungen, falscher Lagerbestände und doppelter Produkte. Er gibt dem Kunden außerdem mehr Kontrolle über den Shop und macht die weitere Arbeit mit BaseLinker vorhersehbar.





