Der deutsche E-Commerce versagt schon bei den Basics

Ich bestelle derzeit sehr viel nicht bei Amazon weil ich mich über die etwas aufgeregt habe, die Kundenorientierung dort ist auch nicht mehr das was sie mal war. Außerdem ist es immer gut über den Tellerrand zu schauen.

Und gerade die Tage erzählt Trusted Shops was man machen sollte um mit dem eigenen Shop gegen Amazon zu bestehen. Das ist alles so weit richtig was im Artikel steht (die Bezeichnung „Fachgeschäft“ benutzen wir übrigens schon seit Jahren für unsere Online-Shops), aber bei vielen Händlern fängt das Problem viel früher an: Bei den Basics.

Dehner

Die Gartencenter-Kette, 2016 mit einem Jahresumsatz von knapp 700 Millionen Euro, schafft es nicht, einen richtigen Trackinglink zu versenden:

https://tracking.dpd.de/parcelstatus?query=00340434177295186556&locale=de_DE

Das geübte Auge sieht auf den ersten Blick, dass es sich bei der Trackingnummer um eine von DHL handelt. Ich kann bei solchen Fehlern nur mit dem Kopf schütteln, denn den richtigen Carrier zu einer Trackingnummer anhand von regulären Ausdrücken zu erkennen ist ein gelöstes Problem. Die Deliveries App von Juneclod macht es vor. Für den deutschen Markt ist das auch sehr übersichtlich (ok, FedEx fehlt, aber niemand™ versendet in Deutschland mit FedEx):

if (
    preg_match("/^1Z\s?[0-9A-Z]{3}\s?[0-9A-Z]{3}\s?[0-9A-Z]{2}\s?[0-9A-Z]{4}\s?[0-9A-Z]{3}\s?[0-9A-Z]$/i", $sTrackId)) {
        $sCarrier = "UPS";
} elseif(
    preg_match("/^0\d{13}$/", $sTrackId)) {
        $sCarrier = "DPD";
} elseif(
    preg_match("/^\d{14}$/", $sTrackId)) {
        $sCarrier = "HLG";
} elseif(
    preg_match("/^\d{11}$/", $sTrackId)) {
        $sCarrier = "GLS";
} elseif(
    preg_match("/[A-Z]{3}\d{2}\.?\d{2}\.?(\d{3}\s?){3}/", $sTrackId) ||
    preg_match("/[A-Z]{3}\d{2}\.?\d{2}\.?\d{3}/", $sTrackId) ||
    preg_match("/(\d{12}|\d{16}|\d{20})/", $sTrackId)) {
	    $sCarrier = "DHL";
} elseif (
    preg_match("/RR\s?\d{4}\s?\d{5}\s?\d(?=DE)/", $sTrackId) ||
    preg_match("/NN\s?\d{2}\s?\d{3}\s?\d{3}\s?\d(?=DE(\s)?\d{3})/", $sTrackId) ||
    preg_match("/RA\d{9}(?=DE)/", $sTrackId) || preg_match("/LX\d{9}(?=DE)/", $sTrackId) ||
    preg_match("/LX\s?\d{4}\s?\d{4}\s?\d(?=DE)/", $sTrackId) ||
    preg_match("/LX\s?\d{4}\s?\d{4}\s?\d(?=DE)/", $sTrackId) ||
    preg_match("/XX\s?\d{2}\s?\d{3}\s?\d{3}\s?\d(?=DE)/", $sTrackId) ||
    preg_match("/RG\s?\d{2}\s?\d{3}\s?\d{3}\s?\d(?=DE)/", $sTrackId)) {
        $sCarrier = "DPAG";
} else {
        $sCarrier = "NONE";
}

Shopify

Das mit den Trackingnummern ist aber auch für Unternehmen, die sich auf E-Commerce spezialisiert haben und 200 Millionen US-Dollar umsetzen, scheinbar ein großes Problem. Die SaaS-Lösung von Shopify bietet neuerdings die Möglichkeit, sich über den Bestellfortschritt per Facebook Messenger benachrichtigen zu lassen. Das sieht auch richtig nett gemacht aus. Nur das mit den Trackingnummern, das läuft nicht so. Klickt man auf den Link ‘Sendung verfolgen’ landet man bei DHL USA. Der selbe Fehler tritt auch auf der Shopify-Bestellübersicht auf.

Sortimo

Spezialist für Fahrzeugeinrichtungen, Umsatz in 2014 knapp unter 125 Millionen, Bosch als Miteigentümer, die ihre Profiwerkzeuge standardmäßig in der Sortimo L-Boxx ausliefern. Aber eine Mail mit Versandinformationen senden bevor die Ware ausgeliefert wurde? Nicht möglich. „Ihre Ware hat unser Logistik Zentrum soeben verlassen und wird in den nächsten Tagen bei Ihnen eintreffen.“ ist in einer Mail von 17:06 relativ witzlos wenn die Ware schon am selben Tag um 9:46 zugestellt wurde.

Sortimo Service-Station

Neben Sortimo selbst wurschteln auch einige der Service-Stationen, von denen es knapp 30 in Deutschland gibt, online mit rum, u.a. bei eBay. Von den fünf bestellten Anti-Rutschmatten kamen drei hier so dermaßen deformiert an, dass sie nicht benutzbar sind (und sich auch nicht in ihren Ursprungszustand zurückversetzen lassen). Die Mail bzgl. Umtausch wurde dann eine Woche lang einfach nicht bearbeitet. Erst auf erneute Nachfrage (und unter Hinzunahme einer generischen service@-E-Mail-Adresse, die ich mir erst raussuchen musste) kam eine Reaktion.

Fazit

Von Shops, die außer manchmal besseren Preisen ein Totalausfall sind und Bewertungsportalen, auf denen der Shopanbieter lügen kann, bis sich die Balken biegen, ohne dass man die Möglichkeit hat, das korrigiert zu bekommen, will ich hier gar nicht reden, das würde genug Material für einen eigenen Artikel geben. Ich will es bei diesen vier Beispiele belassen, wo die einfachsten Basics nicht funktionieren. Denn die Dinge fallen auch dem unbedarften Kunden auf, es ist sofort offensichtlich, dass da was nicht rund läuft auf Seiten des Anbieters und ob man dem dann ein zweites Mal das Vertrauen schenkt? Dass sich der Kunde diese Frage stellt, dazu sollte man es erst gar nicht kommen lassen.

Tackling this above-the-fold CSS issue

Performance Optimization is somewhat like housekeeping. If you don’t take care of it regularly, the shit piles up. My history of our web performance goes back almost five years now and what started as a blazin’ 94 once was now a 76 while mobile, which was never really good, dropped from the mid-seventies to the high-fifties. Even though I optimize all images and write as less code as possible.

I came across these horrifying numbers because one of our main competitors relaunched recently and while pointing at him and laughing at his numbers (52 Desktop, 51 Mobile) I had to admit that ours aren’t really great either.

Running the Erzgebirge-Palace through PageSpeed Insights spoiled two obvious issues: The long-avoided above-the-fold render-blocking stuff and the trust seal. But that will be a different story, we will focus on the render-blocking css for now.

The core layout for Erzgebirge-Palace is ten years old now and also it has clean markup which made reponsive retrofitting quite easy there is no build process or anything near to it. So the CSS is a little bit messy. Identifying the above-the-fold styles manually was not an option, but hey, Smashing Magazine tackled this issue already two years ago. I came across this article after I unsucessfully tried to run a simple gulp task with the critical plugin by Addy Osmani.

While gulp just spit errors into my console the grunt task by Ben Zörb worked right away and returned a pretty good result. I had to add some more code as there happen things on the page the plugin cannot be aware of as different headers during the holiday season and different headers for different languages. But in the end it was less work than I expected and the result gives me now 92 on Desktop and 91 on Mobile (also resolved the trust seal, though).

All numbers given are from Google PageSpeed Insights. While this tool is ok to do a quick check on your site’s performace you should rely on other tools when actually optimizing your website, my tool of choice here is Webpagetest.