Bridging the Gap: A Method for Managing a Physical and Online Store in Parallel


View of the gap between a subway car and a platformSmall brick and mortar stores run on a tight budget and often rely on open source software for managing inventory. I will discuss the setup I have made for a boutique that is running both a physical and online store.


If you extend an existing B&M store with an online shop, you will eventually run into a problem synchronizing your product inventory. Running two separate inventories may be a hassle, especially if you start moving products out of the store and into the online shop or vice versa.

A Simple Solution

Treat both inventories as one. The same item could be on display in both the physical and online stores. Better yet, use the physical store as the storage room for the online store — eliminating the need to pay rent for extra space.

Inventory items in a store.
The in-store items can be sold via the online shop at the same time.
(photo by Gastev on Flickr)

The biggest hurdle, using this solution, is the booking of a physical product sale to the online database. This would have to happen ASAP, so the same product can’t be bought twice (by separate customers in both realms). A possible way, would be to use a computer as the point of sales and book directly to the online database. I had an iMac connected to a USB receipt printer and cash drawer. However, this setup did not last. It requires the computer to be online in order to book a purchase. What happens when the internet connection is lost with a line of customers to attend to? Murphy would predict this to happen. Even a slow internet connection lengthens the purchasing process unnecessarily, and nobody likes to wait at the register. Optimally, the POS software could have a caching mechanism and then synchronize the purchases with the online shop as soon as it’s back online.

I have chosen to revert to the “non-software-reliant” way of tackling this problem: Use a classic cash register for handling the money transaction. It’s fast and reliable; The cash register does not need to know anything about the inventory. During the purchase process, note the numbers of the products being sold; Using pen and paper, in your head, whatever is fast (and reliable).

Speaking of product numbers. The inventory in the database is usually numbered continuously (e.g. the first product in the database is number 1, then number 2 and so forth). Tag the actual product with that number. The shop I have this solution running in hasn’t yet reached 5 digit product numbers. This makes the number easier to handle than a long EAN code.

Soon after a physical purchase, when all customers are attended to, connect to the administration section of the online shop and enter the product numbers that have been purchased. I will later discuss a module I programmed to streamline this process.

Working this way, the product numbers do have to be remembered/written twice (during the purchase and while synchronizing with the database), but it improves the customer experience by removing the time it takes to handle the software.

The Software

I use the open source software named Zen-Cart to manage the product inventory. It was, in my opinion, the best option when I first created the shop in 2006. There are many newer and better projects out there in the meantime, such as Magento, OFBiz, and Spree.

I adapted the Zen-Cart checkout process to allow client-side technologies such as Javascript and Flash to call it. I have also created a Zen-Cart module that books purchases based on a list of product numbers. It takes a few seconds to complete: for instance just enter “23, 612, 5, 1209” into the form and hit enter. Each purchase is entered into the database, as if it where bought online using the original checkout process.

The project is hosted on Google code. It will need some tweaking to work, so PHP and Javascript knowledge is required. Download the services here.


The described solution, where I moved the step of booking into the online database to the end of the purchase process, has worked well since it has been initiated in 2007. If anybody has an even simpler solution to run a physical and online store in parallel, please leave a comment.