docs/developer/core-concepts/stores.mdx
The Store is the central model in Spree. Every resource — products, orders, markets, payment methods, taxonomies — is scoped to a store. Most setups use a single store, but Spree supports multi-store configurations where each store operates independently with its own catalog, branding, and checkout.
erDiagram
Store ||--o{ Market : "has many"
Store ||--o{ Order : "has many"
Store }o--o{ Product : "has many"
Store }o--o{ PaymentMethod : "has many"
Store }o--o{ ShippingMethod : "has many"
Store ||--o{ Taxonomy : "has many"
Store ||--o{ StockLocation : "has many"
Store {
string name
string code
string url
boolean default
string customer_support_email
}
Market {
string name
string currency
string default_locale
}
Product {
string name
string status
}
Order {
string number
string state
}
| Attribute | Description |
|---|---|
name | Store name, displayed in the browser title and throughout the site |
code | Unique identifier for the store |
url | Primary URL of the store |
meta_description | SEO description |
meta_keywords | SEO keywords |
seo_title | Custom SEO title |
customer_support_email | Email for customer support inquiries |
mail_from_address | Sender address for transactional emails |
logo_image_url | URL to the store's logo |
facebook, twitter, instagram | Social media links |
payment_methods | Payment methods available in this store |
Use the store endpoint to get the current store's configuration — useful for rendering logos, SEO metadata, and footer content:
<CodeGroup>const store = await client.store.get()
// {
// name: "My Store",
// url: "https://mystore.com",
// logo_image_url: "https://cdn.mystore.com/logo.png",
// customer_support_email: "[email protected]",
// payment_methods: [{ id: "pm_xxx", name: "Stripe", kind: "card" }],
// ...
// }
curl 'https://api.mystore.com/api/v3/store/store' \
-H 'Authorization: Bearer pk_xxx'
Markets let you segment your store into geographic regions, each with its own currency, locale, and set of countries. For example, a single store can have:
See the Markets guide for details.
Each store has its own set of resources. This means products, orders, and promotions in one store are completely separate from another.
| Resource | Relationship |
|---|---|
| Markets | A store has many markets, each defining a geographic region with its own currency and locale |
| Orders | An order belongs to one store |
| Products | A product can be available in multiple stores |
| Payment Methods | A payment method can be available in multiple stores |
| Shipping Methods | A shipping method can be available in multiple stores |
| Taxonomies | A taxonomy belongs to one store |
| Promotions | A promotion can apply to multiple stores |
To run multiple stores from a single Spree installation, see the Multi-Store guide. Each store gets its own domain, branding, catalog, and checkout — while sharing the same admin dashboard and infrastructure.