WooCommerce Entwickler in Duisburg

WooCommerce für Duisburg: DHL-Etiketten per API, Sendungsstatus und Mails, Bestandsabgleich mit Lager oder Logistikpartner, getestet auf Staging.

WooCommerce Entwickler

Mein Platz in der WordPress-Community

  • Mein wordpress.org-Konto besteht seit 2006.
  • Ich habe zum WordPress-Core in den Versionen 7.0 und 7.1 beigetragen.
  • Ich betreue 30 Plugins auf wordpress.org.
  • Ich organisiere WordCamps und trete dort als Speaker auf.
  • Ich war bei jedem WordCamp Europe von 2017 bis 2026 dabei.

Mein WordPress.org-Profil

Ein WooCommerce-Shop verkauft erst dann, wenn die Ware auch ankommt. Ich verbinde Ihren Shop mit Paketdienstleister und Lager: Versandetiketten und Sendungsnummern per Schnittstelle, Statusmails an Kunden, Bestandsabgleich mit Warenwirtschaft oder Logistikpartner. Ich arbeite allein, aus der Ferne und schriftlich, ohne Termine vor Ort. Das Layout Ihres Shops bringen Sie mit, ich setze es um. Für das Fundament rund um den Shop finden Sie die WordPress-Entwicklung in Duisburg.

#Warum Versand und Lager in Duisburg ein eigenes Thema sind

Die Duisburger Hafen AG beschreibt sich auf ihrer eigenen Seite als größten Container-Binnenhafen der Welt und listet unter ihren Leistungen Kontraktlogistik mit Transport, Lagerung, IT und Beratung. Auf der logport-Seite nennt sie sechs Standorte mit zusammen rund 410 Hektar, vier davon in Duisburg: Rheinhausen, Wanheim, Hohenbudberg und Walsum. Quellen: duisport und logport-Flächen.

Innenhafen Duisburg in der blauen Stunde

Foto: Tuxyso, CC BY-SA 3.0, Wikimedia Commons.

Was folgt daraus für einen Shop? Wer in dieser Region verkauft, hat oft Lagerware, die nicht im eigenen Keller liegt: beim Logistikpartner, im Kontraktlager, im ERP eines Großhändlers. Dann ist WooCommerce nicht die Quelle des Bestands, sondern eine Anzeige davon. Genau an dieser Stelle entstehen die meisten Fehler, und deshalb baue ich diese Schnittstelle zuerst und teste sie am gründlichsten. Welche Lösung bei Ihnen vorliegt, weiß ich erst nach Ihrer Beschreibung; die Hafen-Angaben oben sind Kontext, keine Aussage über einen bestimmten Shop.

#Etiketten und Sendungsnummern über die DHL-Schnittstelle

Ich beschreibe den Weg am Beispiel DHL, weil die Entwicklerdokumentation öffentlich ist. Andere Paketdienste binde ich nur nach deren eigener Entwicklerdokumentation an, nie nach Foren oder Hörensagen. Alle Angaben stammen aus der DHL Parcel DE Shipping API im Entwicklerportal von DHL (Version 2.2.0 zum Zeitpunkt der Prüfung).

Wer sie nutzen kann. DHL richtet die API an Absender mit mehr als 200 Sendungen im Jahr. Wer darunter liegt und keinen Geschäftskundenvertrag hat, nutzt laut DHL die separate Private-Shipping-API. Für den Vertragsweg brauchen Sie den Zugang zum Post & DHL Geschäftskundenportal (GKP), eine EKP und die Abrechnungsnummer. Die Abrechnungsnummer hat 14 Stellen: EKP, Vertragsverfahren (das Produkt) und Teilnahme, ohne Leerzeichen.

Anmeldung und Tests. Sie legen im Entwicklerportal eine App an und fügen die API hinzu. Die Sandbox steht auch Nicht-Kunden offen. Für die Produktion gibt DHL erst nach erfolgreicher Sandbox-Nutzung frei, und die App wird manuell genehmigt. Das kostet Kalenderzeit, die ich im Projektplan einrechne, bevor es um Code geht. Die Anmeldung läuft über OAuth2; DHL beschreibt die Basic-Auth-Variante als Auslaufmodell. Für den Produktivbetrieb empfiehlt DHL einen Systembenutzer, der sich nicht im GKP anmelden kann.

Was der Aufruf leistet. Mit POST /orders erzeugt der Shop bis zu 30 Sendungen in einem Aufruf und erhält Sendungsnummern und Etiketten zurück. Bei mehreren Sendungen antwortet die API mit HTTP 207 und einem Status pro Sendung. Mit dem Parameter validate=true prüft sie die Anfrage vorab. Laut Spezifikation gilt: Wenn die Prüfung durchläuft, gelingt auch die echte Anlage. Das nutze ich in jedem Test.

#Was in der Praxis bricht und wie ich es abfange

Was passiertWarumMein Test auf Staging
Ein Sammelaufruf ist teilweise erfolgreichHTTP 207 liefert pro Sendung einen eigenen StatusBestellung mit absichtlich fehlerhafter Adresse mitten im Stapel; nur diese eine bleibt offen
Etikett ist unleserlichDHL erlaubt keine Skalierung des Etiketts; maschinell nicht lesbare Sendungen berechnet DHL mit Aufschlag nachAusdruck auf dem echten Drucker, im gewählten Format
Adresse soll nach Versandfreigabe geändert werdenNur nicht manifestierte Sendungen lassen sich ändern oder per DELETE /orders löschenKorrektur vor und nach dem Tagesabschluss durchspielen
Etikett lässt sich nachträglich nicht mehr abrufenAbrufbar sind laut Spezifikation nur Etiketten noch nicht abgeschlossener SendungenEtikett beim Anlegen speichern, nicht später nachladen
Plötzlich Fehler 401Passwörter laufen ab: 365 Tage bei Systembenutzern, 90 Tage bei persönlichen BenutzernAblaufdatum im Betriebshandbuch, Fehlermeldung im Admin sichtbar
Produkt passt nicht zur AbrechnungsnummerDas Produkt wird durch das Vertragsverfahren in der Nummer geprüftJede Versandart im Shop gegen die passende Nummer testen

Formate und Tagesabschluss. Die API bietet alle Etikettenformate des Portals, etwa A4 oder Thermodruck mit 103 x 199 Millimetern. Thermodruck entspricht 203 dpi, das gebe ich bei der Druckerauswahl an Sie weiter. Sendungen werden erst mit dem Tagesabschluss manifestiert, standardmäßig um 17:45 Uhr, oder per Aufruf /manifest. Wann Ihr Lager die Pakete tatsächlich übergibt, entscheidet, ob dieser Zeitpunkt passt. Bei DHL Paket International gibt es einen zusätzlichen Abschluss um 20:45 Uhr.

#Sendungsverfolgung und Statusmails

Die Sendungsnummer aus der Anlage gehört in die Bestellung, sichtbar für Kunden und Support. Wo sie erscheint, richtet sich nach Ihrem Mailkonzept: in der Bestellbestätigung, in der Versandmail oder in beiden.

WooCommerce kennt laut REST-API-Dokumentation für Bestellungen die Status pending, processing, on-hold, completed, cancelled, refunded, failed und trash. Teillieferungen, Abholung und Rücksendung passen in diese Liste nicht von selbst. Ob Sie zusätzliche Status brauchen oder mit Bestellnotizen auskommen, entscheide ich mit Ihnen im schriftlichen Konzept, bevor ich etwas baue. Auf Staging prüfe ich, an welchem Statuswechsel welche Kundenmail hängt, damit niemand zwei Mails bekommt oder gar keine.

Für den Abruf von Sendungsstatus bietet DHL die Shipment Tracking API. Sie deckt laut Portal unter anderem Post & Parcel Germany und den Paketversand ab, nicht aber Dienste, für die ein Login nötig ist. Nach der ersten Freischaltung gelten 250 Aufrufe pro Tag und höchstens ein Aufruf alle 5 Sekunden. DHL schreibt dazu, dieses Limit sei für die Entwicklung gedacht und nicht für die Produktion; ein höheres Limit beantragen Sie im Portal. Bei einem Shop mit vielen offenen Sendungen heißt das: Ich frage nicht bei jedem Seitenaufruf nach, sondern gestaffelt und mit Zwischenspeicher.

#Bestandsabgleich mit Lager oder Logistikpartner

Duisburg-Ruhrort, Blick von der Friedrich-Ebert-Brücke

Foto: Steffen Schmitz, CC BY-SA 4.0, Wikimedia Commons.

Für den Datenaustausch bietet WooCommerce die REST-API. Sie authentifizieren sich mit Schlüsseln, die Sie unter WooCommerce, Einstellungen, Erweitert anlegen. Für ein Lagersystem vergebe ich einen eigenen Schlüssel mit den kleinsten nötigen Rechten und trage ihn nur in dessen Konfiguration ein.

Laut Dokumentation der Produkte sind für den Bestand drei Felder wichtig: manage_stock, stock_quantity und stock_status (instock, outofstock, onbackorder). Dazu kommt backorders mit den Werten no, notify und yes. Mehrere Produkte lassen sich über products/batch in einem Aufruf anlegen, ändern oder löschen. Abfragen liefern standardmäßig nur 10 Einträge pro Seite; ein Abgleich, der das nicht beachtet, sieht nur einen Bruchteil des Sortiments.

Meine Regeln für den Abgleich:

  • Eine Quelle der Wahrheit. Entweder das Lager schreibt den Bestand, oder der Shop. Nie beide.
  • Absolute Werte statt Differenzen. Ich setze stock_quantity auf den Stand des Lagers. So heilt sich ein verpasster Lauf beim nächsten von selbst.
  • Webhooks für Bestellungen. Die Webhook-Schnittstelle kennt Themen wie order.updated und eine Ziel-URL. Ich melde damit neue Bestellungen an das Lager und pausiere Webhooks (Status paused) während eines Massenimports, damit keine Schleifen entstehen.
  • Ein Protokoll, das Sie lesen können. Jede Abweichung zwischen Lager und Shop landet in einer Liste im Admin, nicht nur im Server-Log.

Der heikelste Moment ist der Zeitraum zwischen zwei Abgleichläufen: Der Shop zeigt noch Bestand, das Lager hat ihn schon verkauft. Wie groß dieses Fenster sein darf, hängt von Ihrer Ware ab. Bei wenigen Stücken je Artikel lege ich die Webhooks enger, bei großer Stückzahl genügt ein Takt.

#Ablauf auf Staging in sechs Schritten

  1. Ich lege eine Kopie des Shops mit Testdaten an und trenne sie von echten Mails und Zahlungen.
  2. Ich lege mit der DHL-Sandbox Sendungen an, erst mit validate=true, dann echt.
  3. Ich spiele fehlerhafte Fälle durch: falsche Adresse im Stapel, abgelaufene Anmeldung, Produkt ohne passende Abrechnungsnummer.
  4. Ich schicke Bestandsänderungen in beide Richtungen und vergleiche das Protokoll mit dem Lagerstand.
  5. Ich prüfe jede Kundenmail im Postfach, mit Bestellung, Teillieferung und Erstattung.
  6. Sie erhalten ein schriftliches Betriebshandbuch: Schlüssel, Ablaufdaten, Fehlerbilder, Rücknahme.

Erst danach geht es in die Produktion, in Ihrem Zeitfenster und mit einem Rückweg.

#Datenschutz bei Versand und Mails

Für die Etikett-Anlage geht die Empfängeradresse an den Paketdienst. Das gehört in Ihre Datenschutzhinweise, ebenso Mails mit Sendungsstatus. Zuständig für Duisburg ist die Landesbeauftragte für Datenschutz und Informationsfreiheit Nordrhein-Westfalen (LDI NRW). Sie bietet unter Datenschutz für die Wirtschaft eine Umsetzungshilfe zu den Datenschutzhinweisen an. Ich liefere die technische Beschreibung der Datenflüsse, die Rechtsprüfung bleibt bei Ihrer Datenschutzberatung.

#Was Sie mitbringen

  • Zugang zum Shop und zu einer Staging-Umgebung (oder die Erlaubnis, eine anzulegen)
  • Ihre Versandverträge: bei DHL den Zugang zum Geschäftskundenportal und die Abrechnungsnummern
  • Name des Lagersystems oder Logistikpartners und dessen Schnittstellendokumentation
  • Eine Tabelle mit den Versandarten im Shop und der Mail, die jeweils beim Kunden ankommen soll
  • Layout- und Textwünsche für Mails von Ihrer Seite; ich setze sie um

#Häufige Fragen

#Muss ich DHL-Geschäftskunde sein?

Für die Shipping-API von DHL gilt: Sie richtet sich an Absender mit mehr als 200 Sendungen im Jahr. Darunter verweist DHL auf eine Private-Shipping-API. Welche für Sie passt, kläre ich schriftlich mit Ihnen schriftlich.

#Wie lange dauert die Freischaltung?

Die Sandbox steht sofort bereit. Für die Produktion genehmigt DHL die App manuell und nach erfolgreicher Sandbox-Nutzung. Einen Termin dafür kann ich nicht zusagen, ich plane Puffer ein.

#Kann ich weitere Paketdienste anbinden?

Ja, sofern der Dienst eine öffentliche Entwicklerdokumentation hat. Ich lese sie vor dem Angebot und nenne Ihnen schriftlich, was damit machbar ist.

#Wie verhindere ich Überverkäufe?

Eine einzige Quelle für den Bestand, absolute Werte, Webhooks bei Bestellungen und eine sichtbare Abweichungsliste. Vollständig ausschließen lässt sich das Fenster zwischen zwei Abgleichen nur, wenn das Lager bei jeder Bestellung sofort antwortet.

#Was passiert, wenn die DHL-Anmeldung abläuft?

Systembenutzer-Passwörter laufen nach 365 Tagen ab, persönliche nach 90. Das Ablaufdatum steht im Betriebshandbuch, und eine fehlgeschlagene Anmeldung erscheint im Admin, nicht erst bei der ersten Kundenbeschwerde.

#Gehört die Wartung dazu?

Nein, sie ist eine getrennte Option. Updates teste ich auf Staging, bevor sie in den Shop gehen, die Stunden eines Monats verfallen am Monatsende.

#Anfrage schicken

Schreiben Sie mir über die Kontaktseite: die Adresse des Shops, womit Sie versenden, welches Lagersystem im Hintergrund läuft und bis wann es laufen soll. Sie bekommen eine schriftliche Einschätzung mit Annahmen und Umfang. Die erste Einschätzung ist kostenlos, ich antworte schriftlich an Werktagen.

Siehe auch in Deutschland

Brauchen Sie die Leistung: WooCommerce Entwickler in Duisburg?

Beschreiben Sie Ihr Projekt per E-Mail. Antwort innerhalb von 48 Stunden.

Projekt beschreiben

Weitere WordPress-Dienste und Wissensbasis entdecken