Two stores,one shop.


Shaped4 sold footwear through two separate stores: one for consumers, one for business customers. We merged them into a single shop with a single login, and built an app alongside it that lets them manage *delivery times* themselves. Per product, per audience and per language.
What we built
An existing Shopify environment taken over, tidied up and built on. From two themes to one, with everything B2B needs inside it.
Two stores, one theme
The consumer shop and the business environment were merged into one codebase, with one catalogue and one customer account. Sections and blocks can be switched on or off per audience, set by Shaped4 themselves in the theme editor.
Delivery time in every place
On the product page, in the basket, in the mini-cart and on the order page, every line says when it will be delivered. Partial deliveries too: three pairs tomorrow, two pairs in four weeks.
Bespoke Shopify app
A bespoke app in the Shopify admin where Shaped4 manages all the delivery time copy: shop-wide, per product, per audience and per language. No code, no ticket, just a screen that works like a spreadsheet.
Ordering the way a buyer wants to
An order table listing every size with SKU, stock, delivery time and line total. Alongside it a minimum order check, so an order that is too small never makes it to checkout.







From two shops to one
Two stores means maintaining everything twice, pushing every price change twice, and customers landing in the wrong shop. We merged the two themes file by file into one codebase, keeping everything that made the business environment distinct.
Instead of a second shop there is now a visibility layer: every section and block can be set to always, business only or consumer only. Business customers are recognised by the company attached to their account, so there is one login and no separate account environment.
A B2B store is not a second shop. It is the same shop, one that knows who walks in.
Delivery time as a promise
With footwear the delivery time is often the real difference: this pair is in Rijen, that pair comes out of the factory in four weeks. That belongs on more than the product page; it travels with the product into the basket and onto the order page.
That is exactly what we built. The right message is worked out from stock, quantity and audience, including for lines put in the basket by an external bulk-order app. In the Shopify checkout and the order emails the message stays out of sight; in our own theme it is there.
One approach we reversed along the way: a Shopify Function that appended the delivery time to the line title only worked on certain Shopify plans. The functionality stayed, the engineering underneath was replaced with something that works everywhere and reliably.
Where it stands today
One shop is live, in 14 languages, with a staging environment beside it. A change on the development branch goes to staging automatically, a change on main to production, and the work Shaped4 does in the theme editor always survives it.
For the translations we made our own migration tools that only add new copy and check first that nothing disappears or quietly changes. Delivery times, copy and visibility are managed by Shaped4 themselves now. We keep building what comes next.
Onder de motorkap
- Theme
- Two Shopify themes merged into one, with visibility per audience
- App
- NestJS with its own admin screen in the Shopify admin
- Business
- Shopify Companies, order table and minimum order quantity
- Languages
- 14 languages, with bespoke tooling for safe translation migrations