As an international music mail order company, Thomann has customers all over the world. If you want, you can order a guitar from Oslo, a drum set from Brisbane or a piano from Geneva. So when it comes to ordering, our system has to master a whole array of challenges: For example, it has to assign the right package size, standardize address details or check whether express delivery is possible. In short, our customers have to be able to choose the right shipping service provider for each order. To cater to these complex needs, we have carefully optimized our system this year. So as a full-stack developer, I was kept busy.
Let's say a customer wants to order a guitar from Thomann. They have various options for doing so: They can use the website, the mobile site or the app. They search for the right model, put it in the shopping cart, enter the payment method and postal address – the order is complete. It's all very simple, you might think. In fact, the order process is extremely convenient for Thomann customers. But for everything to run smoothly, a lot is happening behind the scenes, especially when the customer is based abroad. If the guitar is shipped to Oslo or the keyboard to London, this complicates the order process because different delivery conditions are present in each country. Our goal is to give our customers as many options as possible, no matter where they live. We want them to be able to choose which company will handle the delivery (the technical term is "carrier"). Plus, they should be able to see how much the delivery will cost, how long it will take and how the product will be transported – in real time, of course.
Major work on the system
To ensure the above, we had to make major changes to our system. Previously, there were no options to choose from when placing an order. Customers could only see the expected shipping costs. They didn't get any information about which carrier was transporting their package – whether it was DHL, UPS, Swiss Post or another provider. Customers often used the comment function to tell us their "preferred carrier". We then had to manually enter the carrier request into the system - which was of course very cumbersome. With our new system, we wanted to avoid this constant back and forth between the customer and our customer service. The order process should work more smoothly. We developed a new system and then tested it live environment.
First however, we had to determine the biggest areas needing improvement. One of these was the handling of address entries. Sometimes customers enter their shipping addresses in a way that neither we nor the carriers can process. These customers then cannot have their shipping costs calculated, which is of course a shame. If we or the carrier cannot determine freight costs, then we cannot offer shipping. After all, the customers should not be confronted with higher freight costs after the fact. Therefore, we only offer shipping options if we are 100% sure that it will work out.
Shipping to other countries can be tricky in particular. This is because each country has different conditions – on the one hand, certain carriers do and on the other hand, it’s often about address formats. The carriers need a precise address format for proper delivery. If certain parameters are missing, then the delivery company cannot accept the order because the address is not "carrier-compliant." To use UPS Express we need the complete address information - with street, city, postal code and so on. However, we know that customers' address information for certain countries often contain very specific sources of error. For example, Saudi Arabia has a very special postal system. The address format is as follows: Part 1 - hyphen - Part 2. If the customer leaves out the hyphen in the address, UPS Express will not accept it and we can't offer this option. The customer enters what appears to be the correct address, doesn't get the option and doesn't understand why. In the case of certain, frequently occurring format errors, we can help a little by formatting the address afterwards which doesn't always work tough. That was the first challenge.
Express shipping and freight forwarding as challenges
The second challenge was to optimize freight forwarding. We have some very large items that are shipped by forwarding companies, for example pianos or harps. We have a pool of shipping companies that work for us. Before shipping, we don't know which freight forwarder will eventually ship the item. Which forwarding company is used depends on many factors - in the end, the shipping control center decides. Because we didn't know this in advance, we could never display a shipping option in the customer interface. Instead, we displayed the standard shipping costs and a small note that the order would be shipped via freight forwarding. Customers were supposed to provide their phone number for any queries. That didn't work out so well. The third challenge was to improve express shipping. In general, it only makes sense to offer the "express shipping" option if the product to be dispatched is actually already available and not if it arrives at the warehouse in three days. So we had to be able to check availability during the order process.
Moreover, we wanted to improve our communication with customers. If an order option was not available at the time, this should be as transparent as possible for customers. The system should then display the error message that the respective carrier had provided us with. However, we tended to want to avoid customers receiving error messages at all. Of course, this presupposes that the system recognizes at an early stage if a delivery to a particular country is not possible for example. The system should then take action and correct the output.
In short, there was plenty to do. In September 2019, we began the preparation work for the system conversion. An important foundation of our shipping business is finding the optimal package sizes for Thomann products. After all, the product range is not only huge, but also highly differentiated: It ranges from plectrums to Fender guitars to grand pianos. However, we can't just tell a shipping company like UPS that we're shipping a Fender guitar: We have to tell them what size each package is. So the first big task was to "recreate" our shipping process. To determine average package sizes for specific product categories, we looked at Thomann's historical shipping data - going back to early 2004. Based on this data, we can now say which product is most likely to end up in which package size. However, it's not about packing mathematically perfectly - but realistically, i.e. with room to maneuver. The aim is to ensure that neither we nor the customer have to pay extra because the package was calculated too tightly.
30 different box sizes
At Thomann, there are 30 different cardboard box sizes - from small envelopes to huge packages. The shipping history provided us with interesting findings. We found that the package that is used most often is 100 centimeters wide, 100 centimeters high and 28 centimeters deep. In second place was a package with a minimally smaller volume and the dimensions 140cm x 44cm x 44cm. Once we had all the data, we integrated it into the system and started testing.
We chose a typical procedure, the A/B testing, also called "split testing". Basically, A/B testing is about testing two versions of a website or app against each other in order to decide which one is better received by users. This acceptance can be measured in the "conversion rate" for example – in this case, this is the proportion of users who actually make a purchase. Our A/B test ran from the beginning of October 2019 to mid-February 2020. During this period, there were a total of three test iterations in which we examined the new feature - i.e. the expanded order options. The basic question was: Is the feature accepted and perceived as a benefit, or does it confuse customers and lead to purchase cancellations? We wanted to know the following: How do users interact with the new version? Do they interact with it at all? And how does it affect conversions?
Three iterations
The first iteration of testing took place in October 2019. We had selected four countries for the A/B test: the USA, France, Sweden and Finland. 10% of all customers in these countries got to see the version with the new feature in our online store. The form with the shipping service provider selection was integrated into the order process by default. In this first iteration, we primarily wanted to find out how the feature was received. To do this, we measured the changes in various conversions, such as the purchase completion rate and the interactions with the shipping provider selection widget. This was a first test for normal operation. By the way, we programmed the new widget using React, a JavaScript software library.
The second iteration ran from October to December 2019, again with 10% of customers in the four countries mentioned above. However, the new feature was present in both Version A and Version B. The difference was: In A, the widget with the new feature was collapsed, whereas in B it was already expanded, hence much more visible. The two versions were evenly distributed. In this iteration, we collected feedback from customers and from various Thomann departments. Among other things, we were wondering how the logos of the DHL partners should be displayed, how the user interface should look like and whether we could extend the UPS Express offer to other countries. After each tweak, we measured a number of conversions: interactions with the widget, orders with the shipping provider changed and, of course, purchase completion. All of this was measured for the two test groups with the widget collapsed and expanded.
For the third iteration (December to February 2019) we added a few more countries – Mexico, Hong Kong, Australia and the United Arab Emirates. We now showed the new feature to 100% of all store visitors – again with the collapsed/expanded versions. In this last iteration, we also eagerly collected feedback to be able to fine-tune several details. These included the discount on UPS Express, more meaningful error messages, more accurate shipping times and more consistent communication throughout the store. Once more we measured interactions with the widget, orders with the shipping provider changed and purchase conversion rates.
Fine-tuning is the way to success
Over the entire test period we were able to track very closely how the conversion rate was changing. For example, in the first iteration we noticed that conversions were declining, so we gradually improved the feature until the conversion curve went up. Since March 2019, the new system has been online for the whole world on all our platforms.
Of course, new challenges crop up all the time. During the Covid crisis for example, we were temporarily able to ship our products to France with very specific carriers only. Adding this into the system was quite straightforward: Our shipping team is in constant contact with all carriers and can change certain parameters (transit time, price, carrier) in the system via our internal tool within minutes. In fact, pricing in Covid times is also a particular challenge. Usually we have flat rates on a carrier-by-carrier basis – meaning we know what a standard UPS shipment to Israel costs, for example. But Covid has eliminated these standard shipping methods. At the moment, we can only ship to certain countries by express. It is all the more important that we communicate this to our customers. That was much easier with the new system too.
Conclusion: An order system should run smoothly and it should offer the most flexible shipping options possible. We were able to include both of these factors in our project. Which doesn't mean that we are done: We will continue to closely monitor and improve our order system.
The team
Many Thomann departments contributed to the success of the project, including in-house IT, the Hotline Team, Logistics and a team of export specialists. The Web Team including Full-Stack developers Francesco Schrüffer, Fabian Hesse, Sebastian Reuther and Heiko Terfloth, Project Manager Julia Manger and Agile Coach Dominic Burucker