Overview
The Store is the top-level tenant in Spree. Every resource — products, orders, channels, markets, taxonomies — belongs to exactly one store. A store owns its channels (online, POS, wholesale, …), its markets (region/currency/locale), and its product catalog.Store Attributes
Fetching Store Information
Store configuration is exposed through the Admin API. Use the store endpoint to read the current store’s settings — name, URL, branding, and email addresses:sk_xxx) or a Bearer JWT — a publishable key cannot reach it.
Channels vs. Markets
Two different ways to split a store, often confused:- Sales Channels segment selling surfaces — Online Store, POS, Wholesale, marketplace integrations. They control product visibility, order attribution, and per-channel routing rules.
- Markets segment geography and currency — North America (USD/en), Europe (EUR/de), UK (GBP/en). They control which currency, locale, and tax rules apply to a given customer.
Storefront access defaults
The store sets the fallback for storefront access gating — whether anonymous visitors may browse, see prices, or must sign in first — viastorefront_access (public, prices_hidden, login_required) and the companion guest_checkout control. Each channel inherits these unless it sets its own value, so you can gate a whole store or just one channel (e.g. a login_required wholesale channel on an otherwise public store). The full behavior of each mode and how the Store API enforces it lives in Channels → Storefront Access Gating.
Store Resources
Each store owns its own resources. Products, orders, channels, markets, and taxonomies in one store are independent from another.Running Multiple Storefronts
If you need one Spree backend to serve multiple distinct merchant brands — different domains, different catalogs — there are two patterns:- Multiple channels under one store (recommended for most cases) — model each storefront as a Sales Channel. Products are scoped per-channel via publications, orders carry the channel that originated them, and routing/pricing can differ per channel. This is the supported pattern in core Spree 5.5+.
- Multiple isolated stores (tenants) in one app — full data isolation, only recommended if you’re building a SaaS platform or a multi-tenant application. Each store can have different staff members, payment methods, shipping methods, and branding. This is supported by the Spree Multi Tenant extension, which is a separate gem from core Spree.
Related Documentation
- Channels — Selling surfaces (Online, POS, Wholesale, …)
- Markets — Multi-region commerce within a store
- Products — Product catalog
- Orders — Order management and checkout
- Wholesale Portal — A gated B2B storefront surface built on channel access gating
- Admin SDK — TypeScript client for the Admin API used to read and update store configuration

