Multi-store and multisite
This page is for merchants, agencies and developers who plan more than one store front: several brands, countries or languages. Exponential serves several sites from one installation through siteaccesses (Setting up several sites in one installation). The shop works in that setup, but some of its data is shared by every site on the same database, and that decides the design.
Contents
Shared and separate
Shop data lives in database tables, not per site. Siteaccesses on one database share:
| Shared | Note |
|---|---|
| Orders, order numbers, statuses and the status list | ezorder has no site column; one order list, one number sequence |
| VAT types, VAT rules, product categories | One tax setup |
| Currencies and exchange rates | One currency list |
| Discount groups and rules | One set |
| Customers (user accounts) | One user base, unless sites use separate user trees and policies |
| Products | Shared or separate, as you place them in the content tree |
| The Store dashboard | Figures for all sites together |
Baskets belong to sessions, so they follow the visitor's session on the site they shop on.
What can differ per siteaccess
Settings in settings/siteaccess/<siteaccess>/ override the installation's for that site
(Shop settings walkthroughs,
Per-site settings and logs):
| Can differ | Setting or place |
|---|---|
| Default currency | shop.ini [CurrencySettings] PreferredCurrency |
| Basket address name | shop.ini [BasketSettings] BasketViewName |
| Redirect after add to basket | site.ini [ShopSettings] RedirectAfterAddToBasket |
| Shop and order mail templates, product pages | the siteaccess's design (Per-brand designs) |
| Sender and shop address of the order mail | site.ini [MailSettings] |
| Language of the store | the siteaccess's languages (Multilingual businesses) |
Workflows and triggers are stored in the database and are the same for all sites. If two sites need different payment providers, select both gateways in the payment event and let the customer choose, or write an event that selects by site.
Telling orders apart
Because orders carry no site, decide how staff tell them apart:
- separate product folders per site, so the products on the order show where it came from;
- the order currency, when each site sells in its own currency;
- a field added by your own shop account handler or an event on the after trigger of
shop_checkoutthat records the siteaccess (Shop account handlers).
Three designs
| Design | Fits | Watch out for |
|---|---|---|
| One store, several languages | One business, one tax setup | Prices and options per translation (Catalog modeling in depth) |
| Several brand fronts, one business | Shared stock and staff, one accountant | One order list for all brands; tell orders apart as above |
| Separate businesses or tax setups | Different companies, VAT registrations or providers | Use separate installations or databases; shared tables cannot be split later without work |
Checklist
- To do: Decide per item of the "Shared" table whether sharing is acceptable.
- To do: Set per-site currency, mail sender and templates in siteaccess settings.
- To do: Decide how staff recognize a site's orders before launch.
- To do: Test a full order on every site (Testing a store).
Related pages
- Multi-site brands
- One installation, many sites
- Multi-brand checklist
- Free documentation: this page is free to copy, translate and improve under the GNU FDL 1.3.
Become an Exponential Partner
Partners share their information, provide funding, contribute back and develop the products with us, and that is how Exponential grows. A partner website and dashboard are planned for mid-2027: please become a partner today to speed up our growth rate and land new features faster.