Life as a ecommerce shop owner
Lars and Lasse from DuGlemmerDetAldrig invites you back behind the stage in a fast-growing ecommerce company that are about to go international. How does their technical platform serve as the foundation for the business and what tools and abilities does it take, to maintain an agile development-flow when growing +100% pr. year? The talk will most likely include insights into:
· Umbraco/uCommerce and Business Intelligence
· Supplementing tools for marketing, conversion rate optimization etc
· The technical setup including the team setup now and what they are aiming for the coming years
View transcript
VideoDays, WebinarSpots, RawMode, Thomas Madsen-Mygdal, 넘 똥 Thank you. Thank you. Thank you. Thank you. Thank you. Thank you. Thank you. Thank you. Thank you. Thank you. Thank you. Thank you. Thank you. Thank you. Thank you. Thank you. Thank you. Thank you. Thank you. Thank you. Thank you. Thank you. Thank you. Thank you. Thank you. Thank you. It was a great experience. as a gift, but I'm choosing to book it instead just for me personally. Actually, I can see I want to go just by myself, lonely wolf getting drunk. Typing in my info, this is a pretty traditional e-commerce checkout. If it was a gift, you have the option to sort of personalize the gift card with a message and stuff like that. Choose if you wanted the gift box or whatever. This is just book the date and pay. The order is completed now. I get a sort of voucher for the experience, for the wine tasting. I get an order confirmation, of course, and I get a booking confirmation. So everything in our shop is done, and now the booking goes into our custom-built booking system, which we call East Booking, and you can see now it's listed on that event, Wine Tasting in Aarhus. Actually, last year. I think it's a pretty old demo, but yeah, that's the basics of it. Yeah, and the booking system is a separate system that we built, especially for like after figuring out what direction we wanted to head, that we didn't just want to be a gift card site. Exactly. Yeah. We started with experience gifts. You can't book the experience. You go to the site or to the shop, and you buy an experience gift, and then you sort of have to, you get, there's a joke that when you get an, maybe it doesn't work in English, but in Danish, you say that you get an experience gift, but actually you get like a task, because it's gave of a gift, and upgave is a task. And so it's a hassle to sort of deal with these gifts, and we want to make it really, really easy. So instead of, for instance, I get a wine tasting as a gift, I don't have to talk with the supplier. I can just go to the same site as it was bought. And then just book it. Really easy and without any pain or struggle. And of course, if I experience any pain with it or friction, I can call the customer service all day long. Yes. And actually, yeah, like I said, the last year we sort of figured out what we want to do, and now our competitors are starting to also see that maybe it's a good way to go. Also. In terms of the UI, I'm just, I included this because it happened two weeks ago. This is how our front page looks like it lists the products. I'll get back to that. And this is our competitor, a major business that just launched this two years, two weeks ago. And maybe you can see the resemblance. So that's pretty cool. And we're going to relaunch it even better in maybe a few months, and then they're way behind again. So no worries. And now to one of the big topics, how to sell these experiences with tech. And as I mentioned, we're really IT heavy, and we think if you have to win this battle in Denmark, but also in other countries, we have to win it primarily on the tech side. So this is kind of a sketch that I did explaining how our main setup works. We don't just have one umbrella. We have a number of smaller sites or entities. In the middle, you see the DGGA, which is the main webshop or the e-commerce site that we have. It's actually comprised of two different websites. It's the .net Umbrako site running as an API that's consumed by an Angular front end. The two different parts are completely separated. They're running on different domains even. We made the backend in a restful manner to be able to support easier, like, taking the frontend, and if we want to build an app at some point, then we didn't want to, like, have to rebuild the entire solution if you wanted to change something. And having done this, the frontend is much easier to actually iterate and test out new things because it's completely separated from the backend, so we can test out different layouts and designs without ever touching the backend at all, so there's no, like, we don't worry that we're going to break something if we change the frontend. Other than that, we have a partner site, which is, like, the bottom right here, where our suppliers... And when they receive a gift card, like, Leslie goes and redeems his wine tasting, he brings his gift card, the suppliers then go either using an iOS app or an iOS app, they can redeem the gift card using a scanner that we have in the app, or they can just go to the website and punching some codes, verify it, and say, yeah, it's good, and then redeem it, and they will have their money within 14 days or something like that. So we built these small... Sites to be able to support the different kinds of tasks that you would, like, do whenever you're... If you're a supplier or if you're a customer or if you're our support representative sitting in the backend. So we're building the tools that makes our lives easier and their lives easier as well because we don't want to clutter the partner site with all different kinds of stuff that they don't need, so we don't want to, like, put them into a new back-end or... Build something on top of a bracket that could break, or if we want to launch in another country but want to do it separately, then we wouldn't have to maintain two partner sites or do something crazy. We want to have the, like, build it in a, you could say, a small, like, component-based setup where you can swap components wherever you want to without worrying about the rest of the setup. We thought about this, like, from almost the beginning. We relaunched the entire site two years ago. And this is where we really started thinking about how can we do this and how can we maintain scalability also if we want to, like, split out some things later on if we want to. Now, in five years when the Danish market is, yeah, when we've kept that, then we want to sell that off and go somewhere else. Then we can do that because we don't have any data issues. We can just sell those two websites and we're done. Other than that, we have the e-booking system, which is a kind of new addition. We launched it in, I can't remember if it's January this year or last year. This year, I think. The booking system. Last year. Last year, okay. A lot of stuff going on. But, yeah, we built a booking system that was mainly for people dealing with experiences. We built it so that it integrates with our site, of course, but we want our suppliers to be able to use our booking system even without being a customer or being on our site. One of the things that, I guess, our... Our sales, our account managers found out while actually talking with the suppliers is that many people, they have their bookings and they manage them with Excel or Post-it notes or Google Calendar. And that stuff just never works out. So, we built them a booking system and it's tailored to handle experiences and the way that you deal with experiences. And, of course, made an integration with our system and in the future, an integration with whatever shopping system they're using to sell their own experiences. If they... They are selling them. The booking system is built from scratch in .NET. There's no CMS or anything on it. It's, again, an API and an Angular site. And in the future, also an iOS app. If you want to maintain your bookings and you're out in the field and you don't have anything like any connection or something, then we want to be able to support whatever our customers need. And customers being suppliers and this thing. So, other than that, we have three different, I guess, content projects or two different content projects which are running on WordPress. Just to be totally different than the other sites. We have a magazine with a lot of articles or posts about the different experiences we deal with. Also, anything related to experiences in general. We write about it, review some of our stuff. Getting people... From outside and have them do guest posts and stuff like that. And an HQ, which is an internal site with documentation, all that kind of stuff. Yep. And, like I said in the beginning, we wanted to sort of... We don't want to be a traditional e-commerce company that has to every day put things in boxes and ship them. So, we tried to build a more or less automated flow. An automated business. And I tried to illustrate it with this sort of flow illustration. So, the numbers on the top of the different steps is how much time we use on it manually. And it's in hours. So, the first thing that happens when an order comes in is, of course, the experience is purchased by a customer. That's handled in Dombraco and Ucommerce in the shop part. Then the experience is, in most cases, is booked also. That goes into the e-booking. Our own booking system. Then the order file for the day is sent to our printing partner, our printing house. That happens once daily. And it takes about 25 minutes. 15 minutes. Sorry? 15 minutes. Yeah. Yeah. 15 minutes. Exactly. 15 minutes. We do that on a site we call the cockpit, which is sort of another site where we collect all our settings and stuff. Also, not to break stuff, which works really well. But... So, the print file and stuff, we get that from the cockpit. That's sent to the shipping house. The shipping house takes care of the rest, actually. They print the gift card with the personalized message. They pack the stuff. Maybe they pack it in a gift box if the customers have booked that or ordered that. And they also put in chocolate and stuff like that. And then the gift card is shipped. And we don't do any of that. We could do it. And maybe... We will to save money. But right now, this works out really, really well. And we have a good partner for it. Then the bottom line is whenever the... If you have a gift card and don't do it via our booking system, then, of course, you go to the supplier of the experience. And then you get the experience. So, in order for the supplier to get their money, they need to redeem the gift card. So, they do that on our partner site. That process involves Ucommerce. Our partner site and maybe our app. We have an app for our partners where they can sort of scan the gift cards. That is also automatically happening. And then the last part is paying the suppliers. Right now, we do that every 14 business days, two times monthly, more or less. And that's almost manual process. And it takes four hours. So, sort of the whole process, also the sort of monthly recurring tasks is... There's not many hours in sort of the operations part of the business. And that's also why most of the people working in the company is working on... We really try to have everybody working on growth and not on the operations side. Of course, customer service is also operations, but it's also growth because it's the retention of the customers. Yes. So, that's the flow. We use a great deal of different tools. And we have software. We use to actually run our site. And this is just a number of them. Just to tell what the different... Like how our setup is actually built. We, of course, use Umbraco on the main website. And we use Ucommerce as our shopping or order handling system. And we use both Umbraco and Ucommerce on our main system simply because building an entire shopping system from scratch is... It's just... A waste of time in most cases unless you are building something that is extremely customized. Even our setup is extremely customized, but not in a way that at the time we started building it, it would make sense to actually start building everything. We've started taking a few things like out of Ucommerce and started building our own components. We're using Redis cache for the products and in the future the baskets and stuff like that. And categories simply to optimize different... The different content stuff that we have. All our product search is handled by Elasticsearch. For our internal development process, we use Jira as a project management tool pretty much. All our code is stored in Bitbucket. And we use TeamCity for continuously deployments and continuous integrations. Then we started using TeamWeek a while ago. We switched over from... The old school Gantt diagram. Started using TeamWeek in our team for planning the different weeks. We have a... Les and I have a small 10-minute meeting every Monday where we plan for the next... The coming week and the next two weeks pretty much. Then we revise the week that we just went into if there's stuff that we need to move around. That works really well for us. And then Slack has become an integral part of our business actually for the entire team. Because we totally... We used a lot of emails before and we used... Skype and I don't know what else we used. But now I think all internal communication is handled with Slack. And that's great. File sharing as well pretty much. Yeah. Yep. So this is the actual physical server setup that we have. The users or customers, they go from the bottom and going up. From the internet through a firewall, of course. And then the interesting parts are the two larger circles. We have a setup on the left which is actually... We start out getting the users through a load balancer. Which is essentially a small server that says where do we want to route our users. Then we have two different servers serving the content that we have. We only actually have one of them active at a time. Because this makes us able to... When we deploy something new... All of our deployment processes... Is automated. So whenever we deploy... We merge something into a release branch or into an actual release. Then it will automatically be deployed to our live environment. Then it will be deployed to the server that is not currently active. So that we internally can do some final testing. And see if we missed something on our staging environment. And then every once in a while we have a script running that will check if there is a new build. Or if there is a new build being published on the inactive server. And it will automatically start throwing users to the inactive server. And start shutting down the old version of the site. So we can do deployments 10 times a day if we want to. In the past... Actually in the past as in yesterday. We had issues with... Every time we published something... Our site would have to be recycled in the app pool. And it would take 10-15 minutes. The site was completely up and running again. And that made it really hard to actually do any kind of... Agile development if you would say. Because we were very much bound to only deploying in low season. Nights. Yeah. Or during the night or something like that. Because especially in May. Which is one of our pretty good months. Revenue wise. We weren't able to do anything at all. Weren't able to publish anything. So we built this new setup to be able to actually... Move a lot faster. Which is required if we want to grow as much as we do. Because we are a small company compared to our competitors. And that's what's helped us gain the market share that we have. Is that we are able to test things. And we are able to develop things way faster than they are. About 15 months. I think I guess we have a head start so far. And now hopefully even more. On the right side we have a Linux server. Which is dealing with the Releas and Elasticsearch. Nothing very fancy there. And then we have a content server serving all the images. The PDF files. Pretty much all the static content that we have on our site. Because when we have two different servers that are serving content. We need to have somewhere else for all the static content that we have. Because otherwise we would have files laying all over the place. And it would be a mess. So this is what our... Physical server setup looks like. And in reality the two big bubbles are actually running on one virtual server right now. But we are going to be splitting that out within the next few weeks. Yep. Yes. And this is my team as I call it. I'm a bit of everything. I'm doing some front end. Not as much anymore. I'm doing a lot of Angular. I'm doing a lot of C Sharp. And whatever. Back end code that we need. I'm also trying to help out the other guys whenever needed. Then we have Leo. Which was our second employee in the development team. I think he's been with us since 2013. And he's been doing pretty much all of our front end since then. He's from the Philippines. We've actually never met him. And we spoke with him on Skype for the first time three months ago. And he's been with us since 2013. Otherwise. He's been purely written. And it's worked pretty well. In August last year we hired Jonathan as our first actual back ender. That wasn't me. And he's primarily working on the DGDA back end. Which is the e-commerce side. The money side. And he's taking over many of the tasks that I've been having. But where I didn't have enough time. Because I was focused on all the different things that we were doing. So he's focused on that project alone. And that's helped a lot. In the past almost a year now. Then in January this year we hired Vangelis. Actually he was hired into another project. But he was too good to let go. So he was hired as a freelancer at first for this other project. And then we decided to hire him to start being the lead developer on our booking system. And he's been working pretty much full time on that for the past month or two. And that's actually... It's helped a lot. Because then the entire booking system and all the other projects have been on my shoulders so far. And you see that. Yeah. So it really helps us scaling up the development team. Because it helps us move even faster. And as you can see none of us are placed in the same country. So every day we do a 15 minute stand up meeting. Where we go over whatever happened yesterday. What is going to happen. What happened today. Do we have any issues. Are any of us blocked by each other. Do we need someone else to do stuff for us before we can move on. And other than that we use Hangouts. Google Hangouts or Skype calls if we need to discuss something more in depth. Otherwise we just handle everything on Slack and in Jira. And then the last one. We're actually looking for another developer for our team. So if there's any candidates out here come talk to us. Yeah. The ebooking system was sort of. We started building it just as a sort of plug into our ecommerce site. And only used it for ourselves. We're doing that of course because it's economically pretty interesting in the long run. But also because it allows us to get a lot more clients on the booking system. And in that way sort of make sure that we always have a competitive system. Instead of only looking at our own needs. So it's sort of a really important part of our core. The core of the business that we want to open up as a recurring revenue model. To make it even better. And of course to earn money on that as well. So that's a pretty interesting product that we are starting up now. And yeah. We'll need another developer for that also. To make it work probably. A bit about the life as an ecommerce owner also includes a lot of tools and apps. We use tools and apps for automation and growth also. I just want to go through some of them. Maybe you guys can use them for yourself or for clients or whatever. The first one is Visual Website Optimizer. It's a software as a service business actually. But a software or tool that lets you do split testing. A-B split testing or multivariant split testing. Really easy. Of course implemented into our ecommerce site. An example of this is that maybe. I think it was three months ago. I had a thesis that a hypothesis that if we sort of the way we rank or sort our products. We have more than 200 experiences. When you go to a site you just get them all. So it's really important which experiences you get first. And that goes for all ecommerce business. There are maybe Kompletis here which is electronic ecommerce business. They have I guess thousands of products. It's really important which product you show the customers first. Because you can't hit them with 10 products. And then still sort of make sure that they are on your shop. They'll just bounce. So you need to hit them with the right products first and foremost. So my thesis was that if we included the conversion rate on product page level. Into our sort of weighted sorting of the products. That would increase our overall conversion rate. And that took some building from last primarily. Because the conversion rate on a product page. You don't get that number in Google Analytics. Because Google Analytics don't know which product page. Like which URL belongs to which product. So you have to do that calculation yourself. And we did that. We don't have that much time. So maybe you don't have to dive into the technique. I guess I'll just explain the idea pretty quick. We build our own ranking mechanism or algorithm. And it includes these six different ranking factors. And they are all added together in a weighted average. And the weighting scores are the ones defined here. And we started out the test at least. We started out with having the conversion rate ranking factor. The one in the bottom. As one of the most important ones in that calculation. And we did the split test. Based on the numbers for the variant A. Is the new sorting. And the control is the sort of control version. The old one. We did in the end of the test. We did more visits to the new variant than the old. That's why there are more visits. The 49,000. There's more visits to the new variant than the control. But overall it increased our. It actually started out. And for a while it said between 20 and 30% increase in conversion rate. But it ended out steadying out on 8%. And I would have wished for 20%. But 8% is still really, really important. And for small businesses like ours. With numbers for this year. That means 1.2 million extra in revenue. In Danish krona of course. So a pretty cool test. That wasn't that hard to implement. But of course you have to do some thinking about what you want to test. But Visual Web Tide Optimizer is a really good tool for that. And we try to split test all the time. At least have one test running all the time. Or only one test. Sorry. Another tool is Senddesk. Many of you know it. It's a customer service tool. Just really quick how we use that. The top left corner is our contact form on our customer service site or page. You type in your request. It goes into Senddesk. Where you sort of have it like an email. But as a ticket. Most of you know that. I'm sure. And then you sort of answer the customer. When the case is closed. You solve it. And automatic email goes to the customer. Where we just ask. Are you satisfied? And there's two links. One in green says yes I'm satisfied. One in red that says no I wasn't satisfied. Then they click on yes or no. And they can elaborate on their answers if they want to. So we have the overview at the bottom right corner. And right now our score is 93%. Which is of course way way too low. But yeah. We'll get it better. We also do a lot of email marketing. We use campaign monitor right now. Maybe we'll change that. Campaign monitor goes. We want to do more segmented email marketing. And campaign monitor doesn't really allow us to do that the way we want to. But for now we use that. An important flow within. Or an important aspect of our email marketing. Is our automated flows. When you go to our site. You get an overlay asking if you want 10% discount. On your first experience. You can type no. Discount is not something for me. Or yes give me the 10%. If you type in yes. You'll go into our sort of chain of email. Where the first one says. Din rabet kod. Which is your discount code. It goes out right away. And then seven days later. You get a reminder about the discount code. And then a year later. We just started with that. But a year later. You get a sort of like. An anniversary for our relationship with you. This is an old chain set up. I think maybe two years ago. We are about to optimize it now. And we can do a lot of optimizing. But it works really well as it is now. For the last period. I think it's maybe. I don't know 14 days or something. That one email. Like the first one. Your discount code. Has generated 110,000 krone in revenue. More than that. More or less automatically. And of course. It's like. Would the customer have bought anyway? Maybe they would. But maybe they wouldn't. And now we have them in the system. And they get the full chain. And everything is good. And we do that with campaign monitor. Of course integrated into our shop. The discount. We do that in Ucommerce. And the marketing foundation in Ucommerce. And. A bit about sort of business intelligence. For small businesses. We use dashboards. Of course. To sort of highlight the important numbers. Right now. We have this one. On a big flat screen at the office. It lists like how many visits on the site right now. How many transactions on that time of the day. Revenue. Revenue of the month. How many booking products we have. In terms of products with. We don't have our own booking system. Which is 27. Does it also flick up here? Yeah. A bit. Okay. And a lot of other important numbers. Most of this data is something we can get from the different services we use. So that is Google Analytics. Or directly from our shop. What we want to do now is build new dashboards that goes overall. But also for our customer service for instance. A lot of data which is stored somewhere. We don't know where yet. And sort of is then calculated and then shown on dashboards. So that is sort of next level. An example of that is the one that says profit. I want that box to contain yesterday's profit. And that is not just like the revenue. And then we put away our cost. That is including all the spend we did have on marketing. The salary expense. The salary expenses. Everything. So you can see when you meet into the office today. Then you can see what we made or didn't make yesterday. And that is a really important number if you want to sort of be more bottom line focused. Which we have to be now. So I am really looking forward to getting that number. And it is a good example because it will include a lot of different data sources. And some sort of working with that data or data mining on our own. And right now we are sort of figuring out how to do that. And where to store it and stuff like that. But I have no idea. So Lars will deal with that. But I am looking forward to having it done. And we are also building one for customer service. Which among others include our products where we don't have many upcoming dates in the booking system. So they can reach out to the suppliers and get new dates. That is a key factor for the conversion rate. That we have a lot of dates of course. That will highlight that. Which new supplier we have. So they can reach out to them and introduce themselves and stuff like that. And we are also going to do one on the development side. Yep. I will just make it quick since we are running out of time. After having employees under myself. I spend a lot of time managing stuff. So one of my. It is actually the pie chart. And the pie chart is going to be a diagram showing how I spend my time. Because I still want to be able to do some actual development. Because that is pretty much what makes us move forward. Other than that we need to be able to show the other guys in the company what we are working on. Where we are with the different projects. So we are going to pull in some stuff from Jira. Like what we have selected for development. What is in progress and what is done. Other than that. I want to have a team summary. So I know what everybody is working on right now. What they have been working on this week and the past week. And how many cases they currently have assigned. If somebody has 15 cases assigned. Then maybe we need to start offloading him somehow. And then the bottom part. The bottom left is what version is currently running on our server. And which of the green or blue server set up is the active one right now. So which one that we shouldn't touch if we want to do some testing. Then we want to log the top five slowest API requests that we have. And log them over time. And maybe have like a monthly average. Because if we haven't. Like if our product list suddenly starts being insanely slow. Then we know that we have to fix that. Because lowering the response time of our site is crucial to having a decent service. And a decent conversion rate. Not lowering. Not lowering is crucial. Yeah. Okay. I think maybe the point with all these is that we have grown a lot the last year. And now we really have to go next level in terms of the business inside. Because as I said earlier. We were three people a year ago. And everybody sort of knew what was going on. And we didn't have departments. So teams. We have that now. So we really want to take it to the next level. And as you see right now it's just drafts. But we are sort of. We want to execute on it really quickly. And maybe actually do it in the weekend. Because it's really important. Yeah. And of course also a dashboard for the sales teams. So for every team and one overall. And as I said. And that was right. We don't really have time to talk about what we're building the next 12 months. But it's a lot. And it's really interesting. One of the features I'm really excited about is building. We call it an AI experience butler. So instead of just showing all the products. Just show the products that fits the scenario that the specific user is in. And that involves sort of asking questions. So using a lot of technical intelligence to. And cohorts to sort of serve the right products. And that's. I think that could be a game changer for the industry. And also for us as a business. So we're looking forward to. Yeah. Going with that. But that's a big project of course. Yeah. A lot of other interesting stuff. And the good thing about being a small company like us is that we get new ideas all the time. So we need to be able to sort through the ideas. And scrap the good ones. And scrap the bad ones. And get along with the good ones. So we don't necessarily know what we're going to be working on for the next 12 months. Yeah. We don't. Exactly. Yep. That's it. Any questions? And if you have any questions afterwards or just want to get in touch. Just email us. Reach out. Any questions? Nope. Easy. Awesome. Thanks. Thank you. Yep. Any questions? I mean. So. Thank you. Thank you. Thank you. Thank you. Thank you. Thank you. Thank you. Thank you. Thank you. Thank you. Thank you. Thank you. Thank you. Thank you. Thank you. Thank you. Thank you. Thank you. Thank you. Thank you. Thank you. Thank you. Thank you. Thank you. Fantastic. Thank you. Thank you. Thank you. Thank you. Thank you.