Referenz

Online-Shop mit Drupal Commerce für Juui

Juui · Handel & E-Commerce

Online-Shop und zentrale Plattform für Marktplätze mit Drupal Commerce

Projekt

Ausgangslage

Juui verkauft online ausgewählte koreanische Kosmetik. Koreanische Hautpflege ist bekannt für Produkte mit meist natürlichen und oft nur wenigen Inhaltsstoffen bei hoher Wirksamkeit. Juui ist eine Tochtergesellschaft der RedOrbit GmbH. Neben dem eigenen Shop verkauft Juui über mehrere Online-Marktplätze. Jeder Marktplatz hat eigene Schnittstellen, Datenformate und Abläufe. Der Shop ist damit auch unser eigenes Testfeld für Drupal Commerce im täglichen Betrieb.

Aufgabe

Der Shop sollte alle gängigen Shopfunktionen bieten und zugleich die zentrale Plattform für alle Verkaufskanäle sein:

  • einen rechtskonformen Bestellablauf mit eingebetteter Zahlung
  • Versand in mehrere Länder mit automatisch erzeugten DHL-Etiketten
  • eine Produktsuche, die nach Hauttyp und Hautanliegen filtert
  • einen Produktbestand für Shop und Marktplätze, ohne doppelte Pflege
  • eine Bestellabwicklung für die Bestellungen aller Kanäle
  • Bestand, Rechnungen und Nachbestellung im selben System

Lösung

Drupal Commerce als Kern. Produkte, Varianten, Warenkorb, Bestellungen und Steuern laufen über Drupal Commerce. Commerce Shipping rechnet die Versandkosten, Commerce Stock führt den Lagerbestand. Was Commerce nicht mitbringt, ergänzen rund 40 eigene Module. Die Zahlung ist mit dem Stripe Payment Element direkt im Bestellablauf eingebettet, früher lief sie über PayPal Plus.

Eine Plattform für alle Kanäle. Der größte Teil unserer Entwicklung steckt im Ausbau von Drupal Commerce zu einer Art Produktmanagementsystem. Produktdaten, Preise, Bestand und Bestellungen werden an genau einer Stelle gepflegt: in der Drupal-Installation des Shops. Von dort aus bedient Juui heute fünf Marktplätze und den Produktfeed für Google Shopping. Jede Anbindung folgt demselben Muster: Produkte und Angebote gehen hinaus, Bestellungen kommen herein, Versandstatus geht zurück.

  • OTTO: Produktdaten mit Marke und Kategorie, Preise, Bestand und Lieferzeiten über die Schnittstelle. Bestellungen holt der Shop ab und meldet Sendungsnummer und Rechnung zurück.
  • Kaufland: Produkt- und Angebotsdaten als Feeds, für Deutschland, Österreich und die Slowakei. Mindestpreise lassen sich per CSV pflegen. Bestellungen kommen über die Schnittstelle, Rechnung und Sendungsnummer gehen zurück.
  • Shop Apotheke: Produktdaten, Preise und Bestand werden regelmäßig abgeglichen. Der Shop nimmt Bestellungen an, importiert sie und meldet den Versand mit Sendungsnummer.
  • DocMorris: Preise und Bestand werden regelmäßig abgeglichen. Bestellungen kommen über die Schnittstelle, Rechnung und Sendungsnummer gehen zurück.
  • TikTok Shop: Produkte mit Attributen, Einheiten und Pflichtangaben über die Schnittstelle, Bestand und Preise alle fünf Minuten. Bestellungen kommen per Webhook, Versanddaten gehen zurück.

Mapping der Produktdaten. Jeder Marktplatz erwartet eigene Kategorien, Markennamen und Pflichtfelder. Dafür tragen Marken und Produktkategorien in Drupal eigene Zuordnungsfelder je Marktplatz. Eine Oberfläche ordnet Shop-Kategorien dem Kategoriebaum des Marktplatzes zu. Pro Kanal lässt sich festlegen, welche Marken übertragen werden. Feeds entstehen als CSV-Exporte aus Drupal Views. Die GTIN ist der gemeinsame Schlüssel: Über sie findet der Shop zu jeder Marktplatzbestellung die passende Produktvariante.

Bestandsabgleich über Queues. Der Bestand kommt aus Commerce Stock und gilt für alle Kanäle. Zeitgesteuerte Jobs in Ultimate Cron lesen Bestand und Preise aller Varianten und legen sie in Drupal-Queues. Queue-Worker arbeiten sie in Paketen ab und senden sie an die Schnittstellen. Vor jedem Durchlauf wird die Warteschlange geleert, damit keine veralteten Werte nachlaufen. Verkauft sich ein Artikel auf einem Marktplatz, sinkt der Bestand in Drupal und erreicht beim nächsten Lauf alle anderen Kanäle.

Order-Import und Statusrückmeldung. Cron-Jobs holen offene Bestellungen ab. Bei TikTok Shop kommen sie zusätzlich per Webhook über eine Queue, ein täglicher Abgleich fängt verpasste Meldungen auf. Jede Marktplatzbestellung wird eine reguläre Commerce-Bestellung mit Adresse, Versandkosten und Sendung. Eine eigene Entität verknüpft Marktplatz- und Shop-Bestellnummer. Wechselt die Sendung in Drupal auf versendet, reagiert ein Event-Subscriber auf den Workflow-Übergang und meldet Sendungsnummer und, wo verlangt, die Rechnung an den Marktplatz.

Konflikte und Fehlerbehandlung. Vor dem Import prüft der Shop, ob es die GTIN genau einmal gibt und ob genug Bestand da ist. Passt etwas nicht, wird die Bestellung nicht stillschweigend angelegt, sondern protokolliert. Bereits importierte Bestellungen werden erkannt und nicht doppelt angelegt. Bei TikTok Shop läuft jeder Import zusätzlich unter einer Sperre pro Bestellung, weil Webhook und Abgleich gleichzeitig zugreifen können. Produkt-Uploads verarbeitet OTTO zeitversetzt. Ein eigener Job fragt das Ergebnis später ab und legt einen Bericht mit angenommenen und abgelehnten Produkten im Backend ab.

Zentrale Bestellabwicklung mit DHL. Ob Shop oder Marktplatz: Alle Bestellungen laufen durch dieselbe Abwicklung. Eine eigene Oberfläche bündelt die Schritte: Bestellung prüfen, DHL-Etikett über die REST-Schnittstelle erzeugen, auch für Packstationen, Rechnung als PDF erstellen. Wird eine Sendungsnummer gespeichert, bekommen Kundinnen und Kunden des Shops automatisch eine Mail mit der Sendungsverfolgung.

Produktdaten und Pflichtangaben. Der Grundpreis pro 100 ml oder 100 g wird automatisch berechnet. Ein Prüfmodul meldet Produkte mit fehlenden oder widersprüchlichen Angaben. Die Kennzeichen „Neu“ und „Wieder da“ setzt das System selbst und nimmt sie nach sechs beziehungsweise drei Wochen wieder weg.

Nachbestellplanung und Berichte. Ein eigenes Modul wertet die abgeschlossenen Bestellungen aller Kanäle und die Lagerbewegungen aus und schlägt Nachbestellmengen vor. Es rechnet Zeiten heraus, in denen ein Artikel ausverkauft war. Monatsberichte weisen Bestellungen je Kanal getrennt aus, dazu kommt die jährliche Inventur.

Suche, Sprachen und KI-Werkzeuge. Die Suche basiert auf Search API mit Facetten für Marke, Kategorie, Hauttyp und Hautanliegen. Der Shop ist auf Deutsch und Englisch, Übersetzungen laufen über TMGMT mit einem eigenen KI-Übersetzer. KI-Werkzeuge entwerfen Produkttexte, die Redaktion gibt frei.

Theme und Betrieb. Das eigene Theme baut auf Bootstrap Barrio auf und wird mit SASS und Gulp gebaut. Ein Push auf den Hauptzweig startet eine GitLab-Pipeline mit Datenbanksicherung, Theme-Build, Datenbank-Updates, Config-Import und Neuaufbau des Suchindex.

Die Rolle von RedOrbit

RedOrbit hat den Shop konzipiert, gestaltet und mit Drupal Commerce umgesetzt. Die eigenen Module stammen von uns, darunter alle Marktplatz-Anbindungen, die Bestellabwicklung und die Nachbestellplanung, ebenso das Theme. Im Januar 2026 haben wir den Shop auf Drupal 11 und Commerce 3 gehoben und dabei eigene Module und Theme angepasst. Seitdem entwickeln wir laufend weiter, oft mehrmals pro Woche, binden neue Kanäle an, passen die Anbindungen an geänderte Vorgaben der Marktplätze an und spielen Sicherheitsupdates zeitnah ein.

Ergebnis

Juui pflegt Produkte, Preise und Bestand an einer Stelle und verkauft damit im eigenen Shop und auf fünf Marktplätzen. Bestellungen aller Kanäle laufen durch dieselbe Abwicklung bis zum DHL-Etikett, der Versandstatus geht automatisch an den jeweiligen Marktplatz zurück. Die Nachbestellung rechnet mit den Verkäufen aller Kanäle. Mit Drupal 11 und Commerce 3 steht diese Plattform auf einer aktuellen technischen Grundlage.

Einblicke

Screenshot aus dem Projekt Juui (1 von 2)
Screenshot aus dem Projekt Juui (2 von 2)

Technik

  • Drupal 11 mit Drupal Commerce 3, Commerce Shipping und Commerce Stock
  • Marktplätze: OTTO, Kaufland, Shop Apotheke, DocMorris und TikTok Shop
  • Schnittstellen für Produkte, Preise, Bestand, Bestellungen und Versandstatus
  • Ultimate Cron, Drupal-Queues und Webhooks für den Abgleich aller Kanäle
  • CSV-Produktfeeds aus Drupal Views, Produktfeed für Google Shopping
  • Stripe Payment Element im Checkout (früher PayPal Plus)
  • DHL-REST-Schnittstelle für Versandetiketten, auch an Packstationen
  • Search API mit Facetten nach Marke, Hauttyp und Hautanliegen
  • Deutsch und Englisch mit TMGMT und KI-gestützter Übersetzung
  • Rund 40 eigene Module, eigenes Theme auf Bootstrap Barrio, GitLab CI