
Shopify stores for four markets
Theme codebase for all stores
Weeks from kick-off to go-live
Four markets, four stores, one theme
For KA-EX, a Swiss sports nutrition brand, we built four standalone Shopify stores serving the US, Switzerland, the EU and the UK.
All four run from one theme codebase. They replace the previous WordPress/WooCommerce shops, connect to the ERP and, in the US and Swiss stores, offer subscriptions and bundles with dynamic prices.
We covered the concept, theme and module development, integrations and the migration. All four stores are live.
From WooCommerce to Shopify, one market at a time
KA-EX ran each of its markets on a separate WordPress/WooCommerce shop, linked to service providers through interfaces. The client’s own team had adapted the front end, and the sites had stayed largely unchanged for years.
The goal was a single Shopify front end for every market. A newly introduced ERP was to act as the central system for master data, and marketing was to maintain the Shopify stores itself. The focus was on good UX and a fast route to purchase.
The project ran in three phases: concept, implementation and rollout, followed by service and further development. The start date was fixed because of system changes running in parallel on the client side. To spread the risk, we staged the go-live: Switzerland and the US went first, the EU and the UK followed. Each go-live came about eight weeks after kick-off, and both dates were met.
Our part of the project
We took on the Shopify concept, the development of the theme and modules, the integrations and the migration. Design, content, tracking, marketing tools and the ERP connector came from the client’s partners.



Four stores, one theme
In the concept phase we weighed Shopify Markets against separate stores and chose four standalone stores, a multi-store setup. That gives every market its own legal texts, billing, tracking and ERP connector. The drawback is maintenance effort, because every new feature has to reach all the stores. The central theme code takes care of that.
All Shopify stores share one theme codebase. It starts from a purchased premium theme that we moved into a Git-based setup: one repository, one branch per store. Changes go through pull requests, and pipelines roll the development theme out to the live theme automatically. Changes made in the theme editor stay in sync with the repository. New features are built once and carried over to the other stores.
We write custom code only where the theme falls short. That produced a marquee banner, hero tags, a trust block on the product page, a product slider and global testimonials as a metaobject. The KA-EX team maintains them through the theme editor and metafields, without code.
Why not Markets?
Markets combines several countries in one store and works well when legal texts, billing, tracking and ERP are largely the same everywhere. At KA-EX they differ by market, so we built separate stores.
ERP integration and migration
Each Shopify store connects to the central ERP (Odoo) through its own ERP connector. The connector comes from the ERP partner (Twio); we installed it together and tested it against a test instance first. Every product in Shopify corresponds to one article in the ERP, matched by SKU. The ERP leads on master data and prices, while marketing maintains the descriptions in Shopify. An order travels from the store to the ERP and on to dispatch.
The migration began with the products, which were imported first. For customers and orders, a custom script converted the export from the old shops into Shopify’s import format, once initially and once more as a delta on go-live day. Redirects were built from the Search Console export, the sitemaps and links in customer emails, and KA-EX reviewed them. Where a URL has no successor, the store returns a clean 404 instead of redirecting to the homepage.
The go-live sequence
The old shop went into maintenance mode, the DNS TTL had been lowered in advance, and a backup and the delta import ran. Then we switched the DNS and ran test orders in every market through to dispatch.

Subscriptions and bundles with dynamic prices
KA-EX wanted bundles and subscription models. The subscription engines are third-party apps, and our part is everything around them. We integrated and styled the widget and customer portal in the theme, built the operating logic and the price display, and wrote a maintenance concept for the KA-EX team.
The subscription app for the US (Loop) offers longer terms only as a separate variant. So we built a custom variant selector: it hides the default variant picker, offers its own selection and updates the widget through the app’s API. It is controlled per collection and metafield.
The bundle buy box is a theme block with a metaobject. Prices, strike-through prices and the daily price appear dynamically from the Shopify product and its selling plans, and a single product template carries every subscription product.
The Swiss store runs a second subscription app (Kaching) on the same operating logic: metafields and a theme switch control what is displayed. Two apps, one operating logic. When an app writes its changes straight into theme files, we merge them into our own development in a controlled way.
Maintained through fields, not code
The KA-EX team maintains the content of each subscription option through fields in the store, and a maintenance guide shows how.
Country logic, data protection and withdrawal
Whoever opens one of the stores lands in the store for the right market automatically: a geolocation app (Orbe) redirects between the stores. Shopify’s native market redirect is switched off in all stores, and markets must not overlap between stores.
Amazon reviews load as an embed (Elfsight) only after consent has been given in the cookie banner. Until then a content blocker with a placeholder stands in, and a button reopens the cookie banner. The texts are editable, the blocker can be switched off per store and comes from one central snippet, and the fonts load locally rather than from external servers.
EU Directive 2023/2673 provides that consumers must be able to withdraw from contracts concluded online through a clearly visible withdrawal function and receive an acknowledgement that states the date and time. We implemented the withdrawal button with a Shopify form and a Flow that sends the acknowledgement, timestamp included, automatically, plus a dedicated withdrawal page linked in the footer. Two options had been designed and one is implemented.
One currency per store
Each store has its own market and its own currency: US dollars, Swiss francs, euros and pounds sterling.
Technology, not legal advice
This describes our technical implementation and is not legal advice. What applies to a particular store is for the merchant to clarify with their legal counsel.
Quality, releases and collaboration
Every change takes the same route: we develop locally, open a pull request and have a second person review it. The product owner then tests, feedback goes into a loop, and a change counts as done only after sign-off. Testing happens on staging, live is for maintenance only, and new versions go live through a release pipeline at a scheduled time.
Quality also covers what is not obvious at first glance. We fixed Google Search Console findings and structured data, adjusted the H1 logic for the collection hero, added a privacy checkbox to the newsletter form and styled the standard notifications.
Several parties worked on the project: besides KA-EX and ourselves, the agency for design and content (WeCatch), a partner for tracking and marketing tools (Ad Union) and the ERP partner. We met for a weekly on Mondays, held close check-ins in between, and approvals ran through comments in Figma. The stores belong to KA-EX, we stay on as a collaborator, and maintenance guides cover metafields and metaobjects.
After the rollout
The work did not end with the rollout: service and further development followed, for example on subscriptions, bundles and the withdrawal button.
Let's discuss your vision with us
Digit-One built four standalone Shopify stores for KA-EX, serving the US, Switzerland, the EU and the UK from one shared theme codebase. The work included the migration from WordPress/WooCommerce, the ERP integration, country redirects, subscriptions and bundles with dynamic prices in the US and Swiss stores, and the EU withdrawal button. Design and content came from the client’s agency.
At KA-EX, the products were imported first, then customers and orders: a script converts the export into Shopify’s import format, once initially, once as a delta on go-live day. Redirects come from the Search Console export, sitemaps and links in customer emails, and URLs without a successor return a clean 404. Go-live day brings maintenance mode, a backup, the DNS switch and test orders per market, then customers reset their passwords.
It depends on how different the markets are. If each needs its own legal texts, billing, tracking and ERP connector, a multi-store setup with separate stores makes sense, though it needs more maintenance. For KA-EX we built four standalone stores and offset that effort with one central theme codebase.
With a shared codebase and a fixed routine: one repository, one branch per store, changes through reviewed pull requests, and pipelines that deploy automatically. New features are built once and carried over to the other stores, and changes made in the theme editor stay in sync with the repository.
Through a connector that links Shopify to the ERP. At KA-EX each store has its own connector, installed together with the ERP partner and tested against a test instance first. Products and articles are matched one to one by SKU, the ERP leads on master data and prices, and orders flow from Shopify to the ERP and on to dispatch.
The subscription engine comes as an app, and everything around it is built in the theme. At KA-EX we integrated the widget and customer portal, built the bundle buy box as a theme block with a metaobject, and showed prices, strike-through prices and the daily price dynamically from the product and its selling plans. Two apps, for the US and Switzerland, share one operating logic.
With a clearly visible withdrawal function that acknowledges receipt with date and time, as EU Directive 2023/2673 provides. At KA-EX we implemented a Shopify form with a Flow that sends the acknowledgement automatically, plus a dedicated withdrawal page linked in the footer. This is not legal advice.
By loading them only after consent has been given in the cookie banner. At KA-EX a content blocker shows a placeholder until then, and a button reopens the cookie banner. The texts are editable, the blocker can be switched off per store and comes from one central snippet, and the fonts load locally. This is not legal advice.



