
Auf einen Blick
- ✓innocigs.com benötigte eine Echtzeit-Verbindung zwischen JTL Wawi und einem externen System — kein Standard-Plugin passte, also haben wir einen individuellen JTL API Konnektor entwickelt, der exakt auf die Datenstruktur des Shops zugeschnitten ist.
- ✓Der Konnektor synchronisiert Artikeldaten, Bestände und Auftragsstatus automatisch zwischen beiden Systemen — manuelle Prozesse, die vorher mehrere Stunden pro Woche gebunden haben, laufen jetzt vollständig automatisch.
- ✓Wer individuelle JTL-Integrationen braucht, sollte früh prüfen ob Standard-Konnektoren die spezifischen Felder abdecken — wir übernehmen die Analyse und Entwicklung für genau diese Fälle.
Wir wissen aus eigener Erfahrung: Standard-Lösungen decken 80% der Fälle ab. Die anderen 20% sind nicht selten die wichtigsten Integrationen im ganzen Betrieb — weil dort die eigentliche Differenzierung des Geschäftsmodells hängt. Individuelle JTL API Konnektoren entwickeln wir, weil wir das JTL-Ökosystem von der Wawi-Datenbank bis zur REST-API kennen und weil wir gelernt haben, dass schlechte Schnittstellen mehr kosten als gute Entwicklung.
Das innocigs-Projekt: Zahlen aus dem Produktivbetrieb
innocigs.com betreibt über 40.000 Artikel in JTL Wawi. Jede Preisänderung, jeder Bestandsabgang, jeder neue Auftragsstatus muss zwischen JTL und der externen Plattform synchron bleiben — ohne manuelle Nacharbeit, ohne Datenverlust, ohne Verzögerung die beim Endkunden ankommt. Der JTL Connector deckt diese Anforderung nicht ab. Wir haben daher einen individuellen Konnektor auf Basis der JTL Wawi REST-API entwickelt.
Drei Kennzahlen aus dem Produktivbetrieb: 40.000+ Artikel synchron zwischen JTL Wawi und der externen Plattform. 15-Minuten-Intervall für den vollständigen Daten-Abgleich — Bestände, Preise, Auftragsstatus. ~20 Stunden/Woche manuelle Prozesse, die vor dem Konnektor manuell gepflegt wurden und jetzt vollautomatisch laufen.
Was der Konnektor im Hintergrund erledigt:
- →Artikel- und Bestandssync: Alle 40.000+ Artikel mit Varianten, Preisen und aktuellen Lagerbeständen werden im 15-Minuten-Takt geprüft und bei Abweichung synchronisiert. Delta-Sync statt Vollabgleich hält die API-Last gering.
- →Auftragsstatus-Übertragung: Neue Aufträge aus der externen Plattform landen automatisch in JTL Wawi. Statusänderungen (Versandt, Storniert, Retoure eingegangen) gehen in Echtzeit zurück — ohne dass jemand manuell eingreift.
- →Branchenspezifische Felder: innocigs.com verkauft Produkte mit Altersverifikationspflicht. Der Konnektor trägt diese Kennzeichnung beim Import automatisch in die richtigen JTL-Felder ein — ein Standard-Plugin kennt diese Felder nicht.
- →Fehlerprotokoll und Alerting: Jeder Sync-Lauf wird protokolliert. Bei kritischen Fehlern — zum Beispiel wenn ein Bestandsabgleich wegen API-Timeout fehlschlägt — geht sofort eine Benachrichtigung raus. Keine stillen Fehler die erst beim Kundenbeschwerden auffallen.
Die JTL Wawi REST-API ist gut dokumentiert und bietet die technische Grundlage für individuelle Integrationen. Die offizielle API-Instanz-Dokumentation erklärt die Einrichtung im JTL-Administrator — das ist der erste technische Schritt bevor ein individueller Konnektor angebunden werden kann.
Die zwei häufigsten Probleme bei individuellen JTL-Integrationen
Aus den Integrations-Projekten die wir betreuen, kristallisieren sich zwei Muster heraus, die fast immer auftauchen — unabhängig davon ob das externe System ein Marktplatz, ein ERP oder eine proprietäre Plattform ist.
Wer von einem maßgeschneiderten JTL API Konnektor profitiert
Die Lektion
Unsere Erkenntnis aus individuellen JTL-Integrationsprojekten: Der größte Fehler bei individuellen Konnektoren ist, sie zu spät zu spezifizieren. Wer die Anforderungen erst beim ersten Produktivfehler vollständig versteht, zahlt das doppelt — einmal in Entwicklungszeit, einmal in entgangenem Geschäft. Eine gründliche Analyse am Anfang ist keine Verzögerung, sondern die günstigste Investition im Projekt.
Wie Vlarom einen individuellen JTL API Konnektor entwickelt
Jedes Integrations-Projekt läuft bei uns nach demselben Grundprinzip ab — nicht weil wir dogmatisch sind, sondern weil wir in vergangenen Projekten gelernt haben wo die Risiken liegen. Hier sind die fünf Schritte, die aus einer Anforderung einen stabilen Konnektor machen.
Anforderungsanalyse (Woche 1)
Wir dokumentieren beide Systeme: JTL Wawi und das externe System. Welche Daten müssen wohin, in welcher Frequenz, mit welchen Fehlertoleranz-Anforderungen? Der häufigste Fehler in dieser Phase ist das Überspringen von Randfällen — deshalb fragen wir explizit nach Ausnahmen, Sonderfällen und historisch problematischen Datensätzen. Das JTL-Developer-Portal und die API-Spezifikation des externen Systems sind die Grundlage für das erste technische Bild.
API-Mapping und Datenmodell (Woche 1–2)
Jedes Feld im Quellsystem bekommt ein Pendant im Zielsystem zugewiesen — oder eine Transformationsregel wenn die Strukturen abweichen. Felder ohne direkte Entsprechung werden als Pflichtklärung markiert. Das Ergebnis ist ein Mapping-Dokument das wir gemeinsam mit dem Kunden abnehmen. Erst wenn das Mapping steht, fangen wir an zu entwickeln. In dieser Phase entscheidet sich auch ob die Synchronisation in Echtzeit laufen soll oder ob ein asynchrones Polling-Modell ausreicht — das beeinflusst die Architektur des Konnektors direkt.
Entwicklung des Konnektors (Woche 2–4)
Der Konnektor entsteht inkrementell: zuerst der Basisdatenfluss, dann Fehlerbehandlung, dann Logging, dann Edge Cases. Wir entwickeln gegen eine JTL-Testinstanz — keine Experimente in der Produktion. Die JTL Wawi REST-API ist dabei die technische Schnittstelle; spezifische Endpoints für Artikel, Lagerbestände und Aufträge werden direkt angesprochen. Ein typischer Bestands-Sync-Aufruf gegen die JTL Wawi REST-API sieht in der Praxis so aus:
import requests\n\nJTL_BASE = "http://localhost:8080/api/v1"\nHEADERS = \n\n# Bestandsänderung an JTL Wawi melden\ndef sync_stock(sku: str, quantity: int) -> bool:\n payload = []\n resp = requests.patch(f"/products/stocks", json=payload, headers=HEADERS)\n return resp.status_code == 200\n\n# Delta-Sync: nur geänderte Artikel seit letztem Lauf\ndef fetch_changed_products(since_iso: str) -> list:\n resp = requests.get(\n f"/products",\n params=,\n headers=HEADERS\n )\n return resp.json().get("items", [])
Testphase mit echten Daten (Woche 4–5)
Synthetische Testdaten zeigen selten die wirklichen Probleme. Wir testen mit echten Produktdaten in einer abgeschirmten Umgebung. Jeder Testlauf wird protokolliert — welche Datensätze haben sich korrekt übertragen, welche nicht, warum. Fehler aus dieser Phase wandern direkt in die Fehlerbehandlungs-Logik des Konnektors.
Übergabe und Dokumentation (Woche 5–6)
Nach dem Go-Live übergeben wir den Konnektor mit vollständiger Dokumentation: Deployment-Anleitung, Konfigurationsparameter, Monitoring-Hinweise, Kontakt bei technischen Fragen. Konnektoren die wir entwickeln, sind nicht an uns gebunden — der Kunde kann sie intern betreiben oder uns mit der laufenden Wartung beauftragen.

