Choosing between a product that works everywhere and one that does what you want isn't a choice that any retailer wants to make. Retailers moving online might find the software they used in-store doesn't provide what they need when opening an online store, or that physical sales in Australia aren't quite the same as what's expected in France. What can you do? Starting with all new products and processes is risky. How are you meant to know what you need before you even start?
We've been down this path a few times with different retailers who have some combination of physical and online stores and we've found that a balance of predictability and flexibility are some of the most important things. Everything else can be built from these solid foundations.
Over the past couple years we've been working with a large global retail company who operates in many countries physically and also has a strong online store. They decided it was time to change their in-store Point of Sale (“POS”) system globally to make it easier to manage their current and future operations – and had already found the new Point of Sale system they wanted to use. Great!
From one point of view the new POS system was perfect. The in-store experience was able to be tailored to each country's laws and culture while still allowing them to administer the software consistently as an organisation. From another perspective, the new POS system was lacking reporting inclusive of data from the online store.
So we arrived at a choice. Do you choose the product that works everywhere and sacrifice some of the functionality that you'd like to have? Or do you have a less tailored experience in-store for the sake of simplifying global operations?
In this case, the answer was neither. We don't have to sacrifice one for the other, because of one of the two foundations we are balancing: flexibility.
We decided to create the flexibility we needed by taking advantage of good data access. The new POS system had an API that allows us to tell it about customers and transactions that occurred elsewhere. Doing this would allow us to include those transactions in the reports being generated.
This was a solid idea, but we first needed to confirm whether the other system would be flexible, too.
Unfortunately, the existing online store did not provide good data access. It was messy, and we couldn’t subscribe to data in realtime. That said, it was still reliable and did it’s core job (online sales) well. So, we decided to still leverage the data from the online store – but in a more limited way. We decided to periodically export the data and send it to the new POS system.
This is a gross oversimplification and there is a lot that went into that discovery and decision: temporary databases to hold the exported data, filtering, deduplicating, auto-scaling cloud infrastructure, middleware APIs, message queues, and more – each topic worthy of a blog post in itself.
With the decision made, and the customer happy, we started to build it.
We started with an unhelpful system that could do one thing: export its data on command. So that's what we got it to do. Once every 24 hours the online store exports its data, we read that data, and find any transactions or customers created or updated within the last 24 hours – which we then send to the new in-store POS system.
What we ended up with was a single source of truth inside the new POS system, albeit slightly delayed, where all customers and transactions are able to be reported on. As an online customer your purchase is known in store, globally, less than 24 hours after you made it. It's fantastic for the brand. Imagine buying something online, receiving it a day later and, for whatever reason, needing to take it to a store. You could walk into your nearest store and they could help you knowing all the details as if it was done in that very store yesterday.
This is an ongoing process, it takes a while to migrate a world's worth of data (10s of millions of records), but it's chipping away predictably and allowing us to plan the remaining work in phases with a regular cadence. It's become quite smooth now and we're confident in the solution that’s being rolled out worldwide.
The daily exports also continue to operate reliably today. They can be tweaked to happen more frequently if the business finds that a 24 hour delay is too long – but for now it's providing the required information in a reasonable timeframe.
The integration between these two systems inspired further ideas about how to get even more insight out of the data – and how we can better serve the customers in store. Having access to complete data in a flexible way allows for amazing insight into trends in sales (due to season, campaign effectiveness, market segments, and more).
We're looking forward to working with this customer in the future, and facilitating their growth and greater understanding of their own customers.