@spree/docs 0.1.0 → 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/api-reference/store-api/errors.md +2 -2
- package/dist/api-reference/store-api/idempotency.md +1 -1
- package/dist/api-reference/store-api/localization.md +4 -4
- package/dist/api-reference/store-api/metadata.md +2 -2
- package/dist/api-reference/store.yaml +10576 -0
- package/dist/api-reference/storefront/authentication.md +2 -2
- package/dist/api-reference/tutorials/adyen-integration-guide-for-android.md +2 -2
- package/dist/api-reference/tutorials/adyen-integration-guide-for-ios.md +2 -2
- package/dist/api-reference/tutorials/quick-checkout-with-stripe.md +8 -8
- package/dist/api-reference/v2/introduction.md +2 -2
- package/dist/api-reference/webhooks-events.md +2 -2
- package/dist/developer/admin/admin.md +18 -18
- package/dist/developer/admin/components.md +1 -1
- package/dist/developer/admin/extending-ui.md +26 -26
- package/dist/developer/admin/helper-methods.md +2 -2
- package/dist/developer/admin/navigation.md +5 -5
- package/dist/developer/admin/tables.md +4 -4
- package/dist/developer/cli/quickstart.md +2 -2
- package/dist/developer/contributing/creating-an-extension.md +12 -12
- package/dist/developer/contributing/quickstart.md +1 -1
- package/dist/developer/core-concepts/addresses.md +11 -11
- package/dist/developer/core-concepts/adjustments.md +8 -8
- package/dist/developer/core-concepts/architecture.md +21 -21
- package/dist/developer/core-concepts/calculators.md +4 -4
- package/dist/developer/core-concepts/customers.md +9 -9
- package/dist/developer/core-concepts/events.md +5 -5
- package/dist/developer/core-concepts/inventory.md +5 -5
- package/dist/developer/core-concepts/markets.md +10 -10
- package/dist/developer/core-concepts/media.md +3 -3
- package/dist/developer/core-concepts/metafields.md +6 -6
- package/dist/developer/core-concepts/orders.md +14 -14
- package/dist/developer/core-concepts/payments.md +9 -9
- package/dist/developer/core-concepts/pricing.md +10 -10
- package/dist/developer/core-concepts/products.md +10 -10
- package/dist/developer/core-concepts/promotions.md +5 -5
- package/dist/developer/core-concepts/reports.md +2 -2
- package/dist/developer/core-concepts/search-filtering.md +7 -7
- package/dist/developer/core-concepts/shipments.md +13 -13
- package/dist/developer/core-concepts/slugs.md +3 -3
- package/dist/developer/core-concepts/staff-roles.md +7 -7
- package/dist/developer/core-concepts/store-credits-gift-cards.md +4 -4
- package/dist/developer/core-concepts/stores.md +15 -15
- package/dist/developer/core-concepts/taxes.md +11 -11
- package/dist/developer/core-concepts/translations.md +6 -6
- package/dist/developer/core-concepts/users.md +12 -12
- package/dist/developer/core-concepts/webhooks.md +8 -8
- package/dist/developer/create-spree-app/quickstart.md +5 -5
- package/dist/developer/customization/api.md +2 -2
- package/dist/developer/customization/authentication.md +2 -2
- package/dist/developer/customization/checkout.md +7 -7
- package/dist/developer/customization/decorators.md +24 -24
- package/dist/developer/customization/dependencies.md +1 -1
- package/dist/developer/customization/metadata.md +3 -3
- package/dist/developer/customization/permissions.md +1 -1
- package/dist/developer/customization/quickstart.md +9 -9
- package/dist/developer/customization/v4/checkout.md +3 -3
- package/dist/developer/customization/v4/deface.md +1 -1
- package/dist/developer/deployment/assets.md +1 -1
- package/dist/developer/deployment/aws.md +5 -5
- package/dist/developer/deployment/docker.md +2 -2
- package/dist/developer/deployment/environment_variables.md +1 -1
- package/dist/developer/deployment/render.md +5 -5
- package/dist/developer/getting-started/quickstart.md +2 -2
- package/dist/developer/how-to/custom-payment-method.md +6 -6
- package/dist/developer/how-to/custom-promotion.md +7 -7
- package/dist/developer/how-to/custom-report.md +3 -3
- package/dist/developer/how-to/custom-search-provider.md +4 -4
- package/dist/developer/multi-store/quickstart.md +1 -1
- package/dist/developer/multi-tenant/quickstart.md +1 -1
- package/dist/developer/sdk/authentication.md +1 -1
- package/dist/developer/sdk/configuration.md +1 -1
- package/dist/developer/sdk/store/markets.md +3 -3
- package/dist/developer/storefront/nextjs/customization.md +1 -1
- package/dist/developer/storefront/nextjs/quickstart.md +2 -2
- package/dist/developer/tutorial/admin.md +2 -2
- package/dist/developer/tutorial/extending-models.md +15 -15
- package/dist/developer/tutorial/file-uploads.md +1 -1
- package/dist/developer/tutorial/introduction.md +7 -7
- package/dist/developer/tutorial/rich-text.md +1 -1
- package/dist/developer/tutorial/testing.md +5 -61
- package/dist/developer/upgrades/3.7-to-4.0.md +1 -1
- package/dist/developer/upgrades/4.0-to-4.1.md +1 -1
- package/dist/developer/upgrades/4.10-to-5.0.md +1 -1
- package/dist/developer/upgrades/4.5-to-4.6.md +4 -4
- package/dist/developer/upgrades/4.8-to-4.9.md +1 -1
- package/dist/developer/upgrades/4.9-to-4.10.md +1 -1
- package/dist/developer/upgrades/5.0-to-5.1.md +1 -1
- package/dist/developer/upgrades/5.1-to-5.2.md +2 -2
- package/dist/developer/upgrades/5.2-to-5.3.md +2 -2
- package/dist/developer/upgrades/5.3-to-5.4.md +5 -5
- package/dist/developer/upgrades/quickstart.md +1 -1
- package/dist/integrations/integrations.md +10 -10
- package/dist/integrations/payments/adyen.md +1 -1
- package/dist/integrations/search/meilisearch.md +2 -2
- package/package.json +7 -2
- package/dist/developer/storefront/blocks.md +0 -285
- package/dist/developer/storefront/custom-css.md +0 -260
- package/dist/developer/storefront/custom-javascript.md +0 -166
- package/dist/developer/storefront/helper-methods.md +0 -1288
- package/dist/developer/storefront/links.md +0 -298
- package/dist/developer/storefront/pages.md +0 -163
- package/dist/developer/storefront/sections.md +0 -569
- package/dist/developer/storefront/storefront.md +0 -56
- package/dist/developer/storefront/themes.md +0 -161
- package/dist/developer/tutorial/page-builder.md +0 -487
- package/dist/developer/tutorial/seo.md +0 -332
- package/dist/developer/tutorial/storefront.md +0 -352
|
@@ -13,7 +13,7 @@ Markets → Countries → Zones → Tax Rates & Shipping Methods
|
|
|
13
13
|
↘ Addresses
|
|
14
14
|
```
|
|
15
15
|
|
|
16
|
-
- [**Markets**](
|
|
16
|
+
- [**Markets**](markets.md) group countries into selling regions with their own currency and locale
|
|
17
17
|
- **Countries** and **States** provide the geographic data for addresses
|
|
18
18
|
- **Zones** group countries or states together to define where tax rates and shipping methods apply
|
|
19
19
|
- **Addresses** tie a customer to a specific location, determining which zones — and therefore which taxes and shipping options — apply to their order
|
|
@@ -156,7 +156,7 @@ curl -X PATCH 'https://api.mystore.com/api/v3/store/carts/cart_xxx' \
|
|
|
156
156
|
|
|
157
157
|
## Countries
|
|
158
158
|
|
|
159
|
-
Countries are the foundation of Spree's geographic system. They connect to [Markets](
|
|
159
|
+
Countries are the foundation of Spree's geographic system. They connect to [Markets](markets.md), contain states, and belong to zones.
|
|
160
160
|
|
|
161
161
|
Each country includes metadata that drives address form behavior:
|
|
162
162
|
|
|
@@ -170,7 +170,7 @@ Each country includes metadata that drives address form behavior:
|
|
|
170
170
|
|
|
171
171
|
### Which Countries Are Available?
|
|
172
172
|
|
|
173
|
-
Only countries assigned to a [Market](
|
|
173
|
+
Only countries assigned to a [Market](markets.md) are available during checkout. This lets you control exactly where you sell.
|
|
174
174
|
|
|
175
175
|
|
|
176
176
|
```typescript SDK
|
|
@@ -229,7 +229,7 @@ For countries without predefined states, addresses accept a free-text `state_nam
|
|
|
229
229
|
|
|
230
230
|
## Zones
|
|
231
231
|
|
|
232
|
-
Zones group countries or states together for [tax](
|
|
232
|
+
Zones group countries or states together for [tax](taxes.md) and [shipping](shipments.md) rules. A zone is either **country-based** or **state-based**.
|
|
233
233
|
|
|
234
234
|
**Examples:**
|
|
235
235
|
- **EU VAT** (country zone) — Germany, France, Italy, Spain, ... → applies EU VAT rates
|
|
@@ -237,14 +237,14 @@ Zones group countries or states together for [tax](/developer/core-concepts/taxe
|
|
|
237
237
|
- **Domestic Shipping** (country zone) — US, CA → enables domestic shipping methods
|
|
238
238
|
|
|
239
239
|
When a customer enters their address at checkout, Spree matches it against zones to determine:
|
|
240
|
-
1. Which **tax rates** apply (see [Taxes](
|
|
241
|
-
2. Which **shipping methods** are available (see [Shipments](
|
|
240
|
+
1. Which **tax rates** apply (see [Taxes](taxes.md))
|
|
241
|
+
2. Which **shipping methods** are available (see [Shipments](shipments.md))
|
|
242
242
|
|
|
243
243
|
Zones are configured in the admin dashboard — storefront developers don't interact with them directly via the API.
|
|
244
244
|
|
|
245
245
|
### Tax Zones and Markets
|
|
246
246
|
|
|
247
|
-
Each [Market](
|
|
247
|
+
Each [Market](markets.md) resolves a tax zone from its default country. This means product prices display the correct tax treatment (inclusive or exclusive) before the customer enters an address — just from knowing their market.
|
|
248
248
|
|
|
249
249
|
## How It All Fits Together
|
|
250
250
|
|
|
@@ -259,7 +259,7 @@ Here's how geography flows through a typical checkout:
|
|
|
259
259
|
|
|
260
260
|
## Related Documentation
|
|
261
261
|
|
|
262
|
-
- [Markets](
|
|
263
|
-
- [Taxes](
|
|
264
|
-
- [Shipments](
|
|
265
|
-
- [Orders](
|
|
262
|
+
- [Markets](markets.md) — Multi-region commerce with currency, locale, and country grouping
|
|
263
|
+
- [Taxes](taxes.md) — How zones and addresses affect taxation
|
|
264
|
+
- [Shipments](shipments.md) — How zones and addresses affect shipping availability
|
|
265
|
+
- [Orders](orders.md) — Order billing and shipping addresses
|
|
@@ -5,7 +5,7 @@ description: How taxes, promotions, and other price modifications are applied to
|
|
|
5
5
|
|
|
6
6
|
## Overview
|
|
7
7
|
|
|
8
|
-
An Adjustment modifies the price of an [Order](
|
|
8
|
+
An Adjustment modifies the price of an [Order](orders.md), a [Line Item](orders.md#line-items), or a [Shipment](shipments.md). Adjustments can be positive (charges) or negative (credits).
|
|
9
9
|
|
|
10
10
|
```mermaid
|
|
11
11
|
erDiagram
|
|
@@ -31,7 +31,7 @@ erDiagram
|
|
|
31
31
|
|
|
32
32
|
**Key relationships:**
|
|
33
33
|
- **Adjustment** modifies prices on orders, line items, or shipments
|
|
34
|
-
- **Source** is where the adjustment comes from ([Tax Rate](
|
|
34
|
+
- **Source** is where the adjustment comes from ([Tax Rate](taxes.md) or [Promotion Action](promotions.md))
|
|
35
35
|
- **Adjustable** is what's being adjusted (Order, LineItem, or Shipment)
|
|
36
36
|
- Positive amounts are charges, negative amounts are credits
|
|
37
37
|
|
|
@@ -48,8 +48,8 @@ Adjustments are created by two sources:
|
|
|
48
48
|
|
|
49
49
|
| Source | Example | Typical Amount |
|
|
50
50
|
|--------|---------|----------------|
|
|
51
|
-
| [Tax Rate](
|
|
52
|
-
| [Promotion Action](
|
|
51
|
+
| [Tax Rate](taxes.md) | Sales tax, VAT | Positive (charge) |
|
|
52
|
+
| [Promotion Action](promotions.md) | Coupon discount, free shipping | Negative (credit) |
|
|
53
53
|
|
|
54
54
|
## Adjustment Attributes
|
|
55
55
|
|
|
@@ -101,7 +101,7 @@ curl 'https://api.mystore.com/api/v3/store/orders/or_abc123?expand=items,shipmen
|
|
|
101
101
|
|
|
102
102
|
## Related Documentation
|
|
103
103
|
|
|
104
|
-
- [Promotions](
|
|
105
|
-
- [Taxes](
|
|
106
|
-
- [Shipments](
|
|
107
|
-
- [Orders](
|
|
104
|
+
- [Promotions](promotions.md) — Promotion-based adjustments
|
|
105
|
+
- [Taxes](taxes.md) — Tax adjustments
|
|
106
|
+
- [Shipments](shipments.md) — Shipping adjustments
|
|
107
|
+
- [Orders](orders.md) — How adjustments affect order totals
|
|
@@ -7,7 +7,7 @@ description: How Spree's core models, APIs, and packages work together
|
|
|
7
7
|
|
|
8
8
|
Spree is a commerce engine built around interconnected models that represent the core concepts of commerce: products, orders, payments, and shipments. It adapts to your stack — use it as a headless API for any frontend, embed it into an existing application, or scale it from a single storefront to a global multi-vendor marketplace.
|
|
9
9
|
|
|
10
|
-
> **INFO:** Spree supports PostgreSQL, MySQL, and SQLite. PostgreSQL is recommended for production. [Learn more about database configuration](
|
|
10
|
+
> **INFO:** Spree supports PostgreSQL, MySQL, and SQLite. PostgreSQL is recommended for production. [Learn more about database configuration](../deployment/database.md).
|
|
11
11
|
|
|
12
12
|
## Core Commerce Flow
|
|
13
13
|
|
|
@@ -53,15 +53,15 @@ flowchart TB
|
|
|
53
53
|
|
|
54
54
|
**How it works:**
|
|
55
55
|
|
|
56
|
-
1. **Catalog** — [Products](
|
|
56
|
+
1. **Catalog** — [Products](products.md) have [Variants](products.md#variants) (SKUs) with prices and inventory tracked at [Stock Locations](inventory.md#stock-locations)
|
|
57
57
|
|
|
58
|
-
2. **Shopping** — Customers add Variants to their cart, creating an [Order](
|
|
58
|
+
2. **Shopping** — Customers add Variants to their cart, creating an [Order](orders.md) with Line Items
|
|
59
59
|
|
|
60
|
-
3. **Checkout** — The Order collects [Addresses](
|
|
60
|
+
3. **Checkout** — The Order collects [Addresses](addresses.md), calculates [Shipping](shipments.md) options, and processes [Payments](payments.md)
|
|
61
61
|
|
|
62
|
-
4. **Fulfillment** — [Shipments](
|
|
62
|
+
4. **Fulfillment** — [Shipments](shipments.md) are created from Stock Locations, tracking individual [Inventory Units](inventory.md#inventory-units)
|
|
63
63
|
|
|
64
|
-
5. **Pricing & Adjustments** — [Taxes](
|
|
64
|
+
5. **Pricing & Adjustments** — [Taxes](taxes.md) and [Promotions](promotions.md) create [Adjustments](adjustments.md) that modify order totals
|
|
65
65
|
|
|
66
66
|
## Core Model Relationships
|
|
67
67
|
|
|
@@ -110,16 +110,16 @@ Spree exposes two REST APIs, both under API v3:
|
|
|
110
110
|
|
|
111
111
|
| API | Purpose | Authentication |
|
|
112
112
|
|-----|---------|----------------|
|
|
113
|
-
| [**Store API**](
|
|
113
|
+
| [**Store API**](../../api-reference/introduction.md) | Customer-facing — cart, checkout, products, account | Publishable API key + JWT |
|
|
114
114
|
| **Admin API** | Operational — manage products, orders, customers, settings | Secret API key |
|
|
115
115
|
|
|
116
|
-
Both APIs use [prefixed IDs](
|
|
116
|
+
Both APIs use [prefixed IDs](../../api-reference/introduction.md) (e.g., `prod_86Rf07xd4z`, `or_m3Rp9wXz`), flat JSON request/response structures, and full TypeScript types via the [@spree/sdk](../sdk/quickstart.md).
|
|
117
117
|
|
|
118
|
-
Events from both APIs can trigger [Webhooks](
|
|
118
|
+
Events from both APIs can trigger [Webhooks](webhooks.md) to notify external systems in real time.
|
|
119
119
|
|
|
120
120
|
## Multi-Store Architecture
|
|
121
121
|
|
|
122
|
-
Spree supports [multiple stores](
|
|
122
|
+
Spree supports [multiple stores](../multi-store/quickstart.md) from a single installation. Each Store can have:
|
|
123
123
|
|
|
124
124
|
- Its own domain and branding
|
|
125
125
|
- Different currencies and locales
|
|
@@ -135,10 +135,10 @@ Spree is designed to be customized without modifying core code. The main extensi
|
|
|
135
135
|
|
|
136
136
|
| Mechanism | Use Case | Documentation |
|
|
137
137
|
|-----------|----------|---------------|
|
|
138
|
-
| **Events & Subscribers** | React to order completion, payment, shipment events | [Events Guide](
|
|
139
|
-
| **Webhooks** | Notify external systems of changes | [Webhooks Guide](
|
|
140
|
-
| **Dependencies** | Swap out services (tax calculation, shipping estimation) | [Dependencies Guide](
|
|
141
|
-
| **Decorators** | Modify existing model/controller behavior (use sparingly) | [Decorators Guide](
|
|
138
|
+
| **Events & Subscribers** | React to order completion, payment, shipment events | [Events Guide](events.md) |
|
|
139
|
+
| **Webhooks** | Notify external systems of changes | [Webhooks Guide](webhooks.md) |
|
|
140
|
+
| **Dependencies** | Swap out services (tax calculation, shipping estimation) | [Dependencies Guide](../customization/dependencies.md) |
|
|
141
|
+
| **Decorators** | Modify existing model/controller behavior (use sparingly) | [Decorators Guide](../customization/decorators.md) |
|
|
142
142
|
|
|
143
143
|
> **INFO:** For most customizations, prefer **Events** and **Dependencies** over Decorators. They're easier to maintain and won't break during upgrades.
|
|
144
144
|
|
|
@@ -163,15 +163,15 @@ Spree is distributed as a set of packages:
|
|
|
163
163
|
|
|
164
164
|
| Package | Purpose |
|
|
165
165
|
|---------|---------|
|
|
166
|
-
| [`@spree/sdk`](
|
|
167
|
-
| [`@spree/next`](
|
|
166
|
+
| [`@spree/sdk`](../sdk/quickstart.md) | TypeScript SDK for Store API and Admin API |
|
|
167
|
+
| [`@spree/next`](../storefront/nextjs/spree-next-package.md) | Next.js integration — server actions, caching, cookie-based auth |
|
|
168
168
|
|
|
169
169
|
> **INFO:** For headless commerce, you only need the `spree` package. Build your customer-facing frontend with any technology (Next.js, Nuxt, mobile apps) using the Store API and SDK.
|
|
170
170
|
|
|
171
171
|
## Related Documentation
|
|
172
172
|
|
|
173
|
-
- [Products](
|
|
174
|
-
- [Orders](
|
|
175
|
-
- [Payments](
|
|
176
|
-
- [Shipments](
|
|
177
|
-
- [Customization Quickstart](
|
|
173
|
+
- [Products](products.md) — Product catalog and variants
|
|
174
|
+
- [Orders](orders.md) — Order lifecycle and state machine
|
|
175
|
+
- [Payments](payments.md) — Payment processing
|
|
176
|
+
- [Shipments](shipments.md) — Shipping and fulfillment
|
|
177
|
+
- [Customization Quickstart](../customization/quickstart.md) — How to extend Spree
|
|
@@ -44,9 +44,9 @@ erDiagram
|
|
|
44
44
|
|
|
45
45
|
**Key relationships:**
|
|
46
46
|
- **Calculator** computes amounts for various features
|
|
47
|
-
- Used by **[Tax Rates](
|
|
48
|
-
- Used by **[Shipping Methods](
|
|
49
|
-
- Used by **[Promotion Actions](
|
|
47
|
+
- Used by **[Tax Rates](taxes.md)** to calculate tax amounts
|
|
48
|
+
- Used by **[Shipping Methods](shipments.md)** to calculate shipping costs
|
|
49
|
+
- Used by **[Promotion Actions](promotions.md)** to calculate discounts
|
|
50
50
|
- Calculators store preferences (rates, percentages, etc.) for their calculations
|
|
51
51
|
|
|
52
52
|
Spree makes extensive use of the `Spree::Calculator` model and there are several subclasses provided to deal with various types of calculations flat rate, percentage discount, sales tax, VAT, etc. All calculators extend the `Spree::Calculator` class and must provide the following methods:
|
|
@@ -69,7 +69,7 @@ The following are descriptions of the currently available calculators in Spree.
|
|
|
69
69
|
|
|
70
70
|
### Default Tax
|
|
71
71
|
|
|
72
|
-
For information about this calculator, please read the [Taxes](
|
|
72
|
+
For information about this calculator, please read the [Taxes](taxes.md) guide.
|
|
73
73
|
|
|
74
74
|
### Flat Percent Per Item Total
|
|
75
75
|
|
|
@@ -137,9 +137,9 @@ curl -X POST 'https://api.mystore.com/api/v3/store/customer/password_resets' \
|
|
|
137
137
|
```
|
|
138
138
|
|
|
139
139
|
|
|
140
|
-
The optional `redirect_url` parameter specifies where the password reset link in the email should point to. The token will be appended as a query parameter (e.g., `https://myshop.com/reset-password?token=...`). If the store has [Allowed Origins](
|
|
140
|
+
The optional `redirect_url` parameter specifies where the password reset link in the email should point to. The token will be appended as a query parameter (e.g., `https://myshop.com/reset-password?token=...`). If the store has [Allowed Origins](allowed-origins.md) configured, the `redirect_url` must match one of them.
|
|
141
141
|
|
|
142
|
-
This fires a `customer.password_reset_requested` event with the reset token in the payload. If you're using the `spree_emails` package, the email is sent automatically. Otherwise, subscribe to this event to send the reset email yourself (see [Events](
|
|
142
|
+
This fires a `customer.password_reset_requested` event with the reset token in the payload. If you're using the `spree_emails` package, the email is sent automatically. Otherwise, subscribe to this event to send the reset email yourself (see [Events](events.md)).
|
|
143
143
|
|
|
144
144
|
### Step 2: Reset Password
|
|
145
145
|
|
|
@@ -210,8 +210,8 @@ Authenticated customers have access to these resources:
|
|
|
210
210
|
|
|
211
211
|
| Resource | Description |
|
|
212
212
|
|----------|-------------|
|
|
213
|
-
| [**Addresses**](
|
|
214
|
-
| [**Orders**](
|
|
213
|
+
| [**Addresses**](addresses.md#customer-address-book) | Billing and shipping addresses with default selection |
|
|
214
|
+
| [**Orders**](orders.md#order-history) | Past order history |
|
|
215
215
|
| **Credit Cards** | Saved credit cards for checkout |
|
|
216
216
|
| **Payment Sources** | Other saved payment methods (PayPal, Klarna, etc.) |
|
|
217
217
|
| **Store Credits** | Balance assigned by the store, usable at checkout |
|
|
@@ -220,11 +220,11 @@ Authenticated customers have access to these resources:
|
|
|
220
220
|
|
|
221
221
|
## Guest Checkout
|
|
222
222
|
|
|
223
|
-
Customers don't need to register to purchase. Guest checkout uses an order token (`X-Spree-Token`) to identify the cart. See [Orders — Cart](
|
|
223
|
+
Customers don't need to register to purchase. Guest checkout uses an order token (`X-Spree-Token`) to identify the cart. See [Orders — Cart](orders.md#cart) for details.
|
|
224
224
|
|
|
225
225
|
## Related Documentation
|
|
226
226
|
|
|
227
|
-
- [Addresses](
|
|
228
|
-
- [Orders](
|
|
229
|
-
- [Authentication](
|
|
230
|
-
- [Staff & Roles](
|
|
227
|
+
- [Addresses](addresses.md) — Customer address management
|
|
228
|
+
- [Orders](orders.md) — Order history and checkout
|
|
229
|
+
- [Authentication](../customization/authentication.md) — Custom authentication setup
|
|
230
|
+
- [Staff & Roles](staff-roles.md) — Admin users and permissions
|
|
@@ -279,7 +279,7 @@ Spree::Events.publish(
|
|
|
279
279
|
|
|
280
280
|
## Event Serializers
|
|
281
281
|
|
|
282
|
-
Event payloads are generated using the same [Store API V3 serializers](
|
|
282
|
+
Event payloads are generated using the same [Store API V3 serializers](../../api-reference/introduction.md) used by the REST API. This means webhook payloads and API responses share the same schema, making it easy to reuse types in your integrations.
|
|
283
283
|
|
|
284
284
|
### How Serializers Work
|
|
285
285
|
|
|
@@ -618,7 +618,7 @@ The base class also provides helper methods:
|
|
|
618
618
|
|
|
619
619
|
## Related Documentation
|
|
620
620
|
|
|
621
|
-
- [Webhooks](
|
|
622
|
-
- [Customization Quickstart](
|
|
623
|
-
- [Decorators](
|
|
624
|
-
- [Checkout Flow](
|
|
621
|
+
- [Webhooks](webhooks.md) - HTTP callbacks for external integrations
|
|
622
|
+
- [Customization Quickstart](../customization/quickstart.md) - Overview of all customization options
|
|
623
|
+
- [Decorators](../customization/decorators.md) - When to use decorators vs events
|
|
624
|
+
- [Checkout Flow](../customization/checkout.md) - Using events in checkout customization
|
|
@@ -5,7 +5,7 @@ description: Stock locations, stock items, stock movements, and inventory tracki
|
|
|
5
5
|
|
|
6
6
|
## Overview
|
|
7
7
|
|
|
8
|
-
Each [Variant](
|
|
8
|
+
Each [Variant](products.md#variants) has a `StockItem` that tracks its inventory at a specific location. A variant can have multiple stock items if it's available at multiple stock locations.
|
|
9
9
|
|
|
10
10
|
When products are sold or returned, individual `InventoryUnit` records track each unit through the fulfillment process.
|
|
11
11
|
|
|
@@ -68,7 +68,7 @@ erDiagram
|
|
|
68
68
|
- **Stock Item** → Tracks quantity (`count_on_hand`) for a specific Variant at a specific Stock Location
|
|
69
69
|
- **Stock Movement** → Records changes to Stock Item quantities (purchases, returns, transfers)
|
|
70
70
|
- **Stock Transfer** → Moves inventory between Stock Locations, creating Stock Movements at source and destination
|
|
71
|
-
- **Inventory Unit** → Represents individual units in [Orders](
|
|
71
|
+
- **Inventory Unit** → Represents individual units in [Orders](orders.md) and [Shipments](shipments.md)
|
|
72
72
|
|
|
73
73
|
## Inventory Management
|
|
74
74
|
|
|
@@ -186,6 +186,6 @@ If you don't need to track inventory, you can disable it:
|
|
|
186
186
|
|
|
187
187
|
## Related Documentation
|
|
188
188
|
|
|
189
|
-
- [Products](
|
|
190
|
-
- [Shipments](
|
|
191
|
-
- [Orders](
|
|
189
|
+
- [Products](products.md) - Product and variant management
|
|
190
|
+
- [Shipments](shipments.md) - How inventory relates to shipments
|
|
191
|
+
- [Orders](orders.md) - How inventory is allocated to orders
|
|
@@ -5,7 +5,7 @@ description: Multi-region commerce with Markets — bundle geography, currency,
|
|
|
5
5
|
|
|
6
6
|
## Overview
|
|
7
7
|
|
|
8
|
-
Markets let you segment a single [Store](
|
|
8
|
+
Markets let you segment a single [Store](stores.md) into distinct geographic regions, each with its own currency, locale, and set of countries. For example, an international store might define:
|
|
9
9
|
|
|
10
10
|
- **North America** — USD, English, ships to US and Canada
|
|
11
11
|
- **Europe** — EUR, German, ships to DE, FR, AT, NL
|
|
@@ -193,7 +193,7 @@ curl 'https://api.mystore.com/api/v3/store/locales' \
|
|
|
193
193
|
```
|
|
194
194
|
|
|
195
195
|
|
|
196
|
-
See [Localization](
|
|
196
|
+
See [Localization](../../api-reference/store-api/localization.md) for details on how to pass locale, currency, and country headers in API requests.
|
|
197
197
|
|
|
198
198
|
## Tax Behavior
|
|
199
199
|
|
|
@@ -204,15 +204,15 @@ The `tax_inclusive` flag on a market controls how prices are displayed and calcu
|
|
|
204
204
|
|
|
205
205
|
Each market also resolves a **tax zone** from its default country. This zone determines which tax rates apply when browsing products — before the customer enters a shipping address. Once the customer provides an address at checkout, the actual shipping address takes over for tax calculation.
|
|
206
206
|
|
|
207
|
-
See [Taxes](
|
|
207
|
+
See [Taxes](taxes.md) for details on tax zones and rates.
|
|
208
208
|
|
|
209
209
|
## Pricing Integration
|
|
210
210
|
|
|
211
|
-
Markets integrate with the [Pricing](
|
|
211
|
+
Markets integrate with the [Pricing](pricing.md) system, enabling market-specific pricing through **Price Lists** with a **Market Rule**. This lets you set different prices for the same product in different markets — beyond just currency conversion.
|
|
212
212
|
|
|
213
213
|
For example, you could price a product at $29.99 in North America and €24.99 in Europe, rather than relying on exchange rate conversion.
|
|
214
214
|
|
|
215
|
-
See [Pricing — Price Rules](
|
|
215
|
+
See [Pricing — Price Rules](pricing.md#price-rules) for details on configuring market-specific price lists.
|
|
216
216
|
|
|
217
217
|
## Setting Up Markets
|
|
218
218
|
|
|
@@ -243,8 +243,8 @@ current_store.markets.create!(
|
|
|
243
243
|
|
|
244
244
|
## Related Documentation
|
|
245
245
|
|
|
246
|
-
- [Stores](
|
|
247
|
-
- [Pricing](
|
|
248
|
-
- [Addresses](
|
|
249
|
-
- [Localization](
|
|
250
|
-
- [Translations](
|
|
246
|
+
- [Stores](stores.md) — Multi-store setup and configuration
|
|
247
|
+
- [Pricing](pricing.md) — Price Lists, Price Rules, and the Pricing Context
|
|
248
|
+
- [Addresses](addresses.md) — Countries, States, and Zones
|
|
249
|
+
- [Localization](../../api-reference/store-api/localization.md) — Locale, currency, and country headers in API requests
|
|
250
|
+
- [Translations](translations.md) — Resource and UI translations
|
|
@@ -152,7 +152,7 @@ Spree supports two storage service types:
|
|
|
152
152
|
| Public storage | Product images, logos, taxon images | S3 public bucket, CDN |
|
|
153
153
|
| Private storage | CSV exports, digital downloads | S3 private bucket |
|
|
154
154
|
|
|
155
|
-
> **INFO:** For production deployments, use cloud storage (S3, GCS, Azure) instead of local disk storage. See [Asset Deployment](
|
|
155
|
+
> **INFO:** For production deployments, use cloud storage (S3, GCS, Azure) instead of local disk storage. See [Asset Deployment](../deployment/assets.md) for configuration details.
|
|
156
156
|
|
|
157
157
|
## Best Practices
|
|
158
158
|
|
|
@@ -163,5 +163,5 @@ Spree supports two storage service types:
|
|
|
163
163
|
|
|
164
164
|
## Related Documentation
|
|
165
165
|
|
|
166
|
-
- [Products](
|
|
167
|
-
- [Deployment — Assets](
|
|
166
|
+
- [Products](products.md) — Product catalog and media
|
|
167
|
+
- [Deployment — Assets](../deployment/assets.md) — Storage and CDN configuration
|
|
@@ -5,7 +5,7 @@ description: Add custom structured data to products, orders, and other resources
|
|
|
5
5
|
|
|
6
6
|
## Overview
|
|
7
7
|
|
|
8
|
-
Metafields provide a flexible, type-safe system for adding custom structured data to Spree resources. Unlike [metadata](
|
|
8
|
+
Metafields provide a flexible, type-safe system for adding custom structured data to Spree resources. Unlike [metadata](../customization/metadata.md) which is simple JSON storage, metafields are schema-defined with strong typing, validation, and visibility controls.
|
|
9
9
|
|
|
10
10
|
Use metafields for:
|
|
11
11
|
|
|
@@ -87,7 +87,7 @@ Metafields support three visibility levels via the `display_on` attribute:
|
|
|
87
87
|
|
|
88
88
|
Metafields can be attached to most Spree resources including Products, Variants, Orders, Line Items, Taxons, Payments, Shipments, Gift Cards, Store Credits, and more.
|
|
89
89
|
|
|
90
|
-
> **INFO:** Custom resources can also support metafields. See the [Customization Quickstart](
|
|
90
|
+
> **INFO:** Custom resources can also support metafields. See the [Customization Quickstart](../customization/quickstart.md) for details.
|
|
91
91
|
|
|
92
92
|
## Namespaces
|
|
93
93
|
|
|
@@ -178,10 +178,10 @@ When editing a resource (e.g., a product), metafields appear in a dedicated sect
|
|
|
178
178
|
|
|
179
179
|
**Use Metadata** for external system IDs, tracking attribution, or simple write-and-forget data.
|
|
180
180
|
|
|
181
|
-
> **WARNING:** Product Properties are deprecated and will be removed in Spree 6.0. For new projects, always use Metafields. For existing projects, plan to migrate using the [migration guide](
|
|
181
|
+
> **WARNING:** Product Properties are deprecated and will be removed in Spree 6.0. For new projects, always use Metafields. For existing projects, plan to migrate using the [migration guide](../upgrades/5.1-to-5.2.md#3-migrate-to-metafields-or-keep-using-properties).
|
|
182
182
|
|
|
183
183
|
## Related Documentation
|
|
184
184
|
|
|
185
|
-
- [Metadata](
|
|
186
|
-
- [Products](
|
|
187
|
-
- [Events](
|
|
185
|
+
- [Metadata](../customization/metadata.md) — Simple key-value metadata
|
|
186
|
+
- [Products](products.md) — Product catalog
|
|
187
|
+
- [Events](events.md) — Subscribe to metafield events
|
|
@@ -49,11 +49,11 @@ erDiagram
|
|
|
49
49
|
```
|
|
50
50
|
|
|
51
51
|
**Key relationships:**
|
|
52
|
-
- **Line Items** link orders to [Variants](
|
|
53
|
-
- **[Shipments](
|
|
54
|
-
- **[Payments](
|
|
55
|
-
- **[Adjustments](
|
|
56
|
-
- **[Addresses](
|
|
52
|
+
- **Line Items** link orders to [Variants](products.md#variants) (what was purchased)
|
|
53
|
+
- **[Shipments](shipments.md)** handle fulfillment from stock locations
|
|
54
|
+
- **[Payments](payments.md)** track payment attempts and their states
|
|
55
|
+
- **[Adjustments](adjustments.md)** apply taxes, promotions, and shipping costs
|
|
56
|
+
- **[Addresses](addresses.md)** store billing and shipping information
|
|
57
57
|
|
|
58
58
|
## Order Attributes
|
|
59
59
|
|
|
@@ -288,13 +288,13 @@ curl 'https://api.mystore.com/api/v3/store/orders/or_xxx?expand=items,shipments,
|
|
|
288
288
|
|
|
289
289
|
## Line Items
|
|
290
290
|
|
|
291
|
-
Line items represent individual products in an order. Each line item links to a [Variant](
|
|
291
|
+
Line items represent individual products in an order. Each line item links to a [Variant](products.md#variants) and tracks the quantity and price at the time of purchase.
|
|
292
292
|
|
|
293
293
|
When a variant is added to an order, the price is locked on the line item. If the variant's price changes later, existing orders are unaffected.
|
|
294
294
|
|
|
295
295
|
## Adjustments
|
|
296
296
|
|
|
297
|
-
[Adjustments](
|
|
297
|
+
[Adjustments](adjustments.md) modify an order's total — promotions decrease it, taxes and shipping increase it. Adjustments can be applied at the order level, the line item level, or the shipment level.
|
|
298
298
|
|
|
299
299
|
## Payment States
|
|
300
300
|
|
|
@@ -316,13 +316,13 @@ When a variant is added to an order, the price is locked on the line item. If th
|
|
|
316
316
|
| `shipped` | All shipments have been shipped |
|
|
317
317
|
| `backorder` | Some inventory is on backorder |
|
|
318
318
|
|
|
319
|
-
For more details, see [Shipments](
|
|
319
|
+
For more details, see [Shipments](shipments.md) and [Payments](payments.md).
|
|
320
320
|
|
|
321
321
|
## Related Documentation
|
|
322
322
|
|
|
323
|
-
- [Payments](
|
|
324
|
-
- [Shipments](
|
|
325
|
-
- [Addresses](
|
|
326
|
-
- [Promotions](
|
|
327
|
-
- [Checkout Customization](
|
|
328
|
-
- [Events](
|
|
323
|
+
- [Payments](payments.md) — Payment processing and payment sessions
|
|
324
|
+
- [Shipments](shipments.md) — Fulfillment and shipping rates
|
|
325
|
+
- [Addresses](addresses.md) — Billing and shipping addresses
|
|
326
|
+
- [Promotions](promotions.md) — Discounts and coupon codes
|
|
327
|
+
- [Checkout Customization](../customization/checkout.md) — Customizing the checkout flow
|
|
328
|
+
- [Events](events.md) — Subscribe to order events (e.g., `order.completed`)
|
|
@@ -107,7 +107,7 @@ erDiagram
|
|
|
107
107
|
```
|
|
108
108
|
|
|
109
109
|
**Key relationships:**
|
|
110
|
-
- **Payment** tracks each payment attempt against an [Order](
|
|
110
|
+
- **Payment** tracks each payment attempt against an [Order](orders.md)
|
|
111
111
|
- **Payment Method** defines how payments are processed (Stripe, Adyen, PayPal, Check, etc.)
|
|
112
112
|
- **Payment Session** manages the gateway-side payment lifecycle (e.g., Stripe PaymentIntent, Adyen Session)
|
|
113
113
|
- **Payment Setup Session** manages saving payment methods for future use without an immediate charge (e.g., Stripe SetupIntent)
|
|
@@ -652,11 +652,11 @@ Spree will verify the result with the provider and create a saved payment source
|
|
|
652
652
|
|
|
653
653
|
Spree team maintains several payment gateway integrations. All of these gateways are **fully PCI compliant**, using native gateway SDKs, meaning no sensitive payment data is stored or processed through Spree.
|
|
654
654
|
|
|
655
|
-
- [Stripe](
|
|
655
|
+
- [Stripe](../../integrations/payments/stripe.md) — Stripe integration, supports all Stripe payment methods, including credit cards, bank transfers, Apple Pay, Google Pay, Klarna, Afterpay, and more. Also supports quick checkout.
|
|
656
656
|
|
|
657
|
-
- [Adyen](
|
|
657
|
+
- [Adyen](../../integrations/payments/adyen.md) — Adyen integration, supports all Adyen payment methods, including credit cards, bank transfers, Apple Pay, Google Pay, Klarna, and more.
|
|
658
658
|
|
|
659
|
-
- [PayPal](
|
|
659
|
+
- [PayPal](../../integrations/payments/paypal.md) — Native PayPal integration, supports PayPal, PayPal Credit, and PayPal Pay Later.
|
|
660
660
|
|
|
661
661
|
## Payment Events
|
|
662
662
|
|
|
@@ -684,14 +684,14 @@ Spree publishes events throughout the payment lifecycle that you can subscribe t
|
|
|
684
684
|
| `payment_setup_session.failed` | Setup failed |
|
|
685
685
|
| `payment_setup_session.canceled` | Setup was canceled |
|
|
686
686
|
|
|
687
|
-
See [Events](
|
|
687
|
+
See [Events](events.md) for more details on subscribing to events.
|
|
688
688
|
|
|
689
689
|
## Related Documentation
|
|
690
690
|
|
|
691
|
-
- [Build a Custom Payment Method](
|
|
692
|
-
- [Orders](
|
|
693
|
-
- [Checkout Customization](
|
|
694
|
-
- [Events](
|
|
691
|
+
- [Build a Custom Payment Method](../how-to/custom-payment-method.md) - Step-by-step guide to creating your own payment gateway integration
|
|
692
|
+
- [Orders](orders.md) - Order management and state machine
|
|
693
|
+
- [Checkout Customization](../customization/checkout.md) - Customizing the checkout flow
|
|
694
|
+
- [Events](events.md) - Subscribe to payment events
|
|
695
695
|
|
|
696
696
|
## Key Services
|
|
697
697
|
|
|
@@ -5,11 +5,11 @@ description: Prices, Price Lists, Price Rules, and the Pricing Context — Spree
|
|
|
5
5
|
|
|
6
6
|
## Overview
|
|
7
7
|
|
|
8
|
-
Spree's pricing system supports both simple single-currency pricing and advanced multi-currency, rule-based pricing through Price Lists. Every [Variant](
|
|
8
|
+
Spree's pricing system supports both simple single-currency pricing and advanced multi-currency, rule-based pricing through Price Lists. Every [Variant](products.md#variants) can have multiple prices — a base price per currency, plus additional prices from Price Lists that apply conditionally based on rules like geography, customer segment, or quantity.
|
|
9
9
|
|
|
10
10
|
## Prices
|
|
11
11
|
|
|
12
|
-
Each variant has one or more `Price` records — one per currency. The API automatically returns the correct price based on the current currency and [Market](
|
|
12
|
+
Each variant has one or more `Price` records — one per currency. The API automatically returns the correct price based on the current currency and [Market](markets.md) context.
|
|
13
13
|
|
|
14
14
|
| Attribute | Description | Example |
|
|
15
15
|
|-----------|-------------|---------|
|
|
@@ -55,7 +55,7 @@ curl 'https://api.mystore.com/api/v3/store/products/spree-tote?expand=variants'
|
|
|
55
55
|
|
|
56
56
|
Price Lists allow you to create different pricing strategies based on various conditions. This enables advanced pricing scenarios like:
|
|
57
57
|
|
|
58
|
-
- **Market-based pricing** — different prices for different [Markets](
|
|
58
|
+
- **Market-based pricing** — different prices for different [Markets](markets.md) (e.g., North America vs Europe)
|
|
59
59
|
- **Regional pricing** — different prices for different geographic zones
|
|
60
60
|
- **Wholesale/B2B pricing** — special prices for business customers
|
|
61
61
|
- **Volume discounts** — tiered pricing based on quantity purchased
|
|
@@ -90,7 +90,7 @@ Price Rules define conditions that must be met for a Price List to apply. Spree
|
|
|
90
90
|
|
|
91
91
|
| Rule | Description | Use Case |
|
|
92
92
|
|------|-------------|----------|
|
|
93
|
-
| **Market Rule** | Matches based on the current [Market](
|
|
93
|
+
| **Market Rule** | Matches based on the current [Market](markets.md) | Regional pricing across markets |
|
|
94
94
|
| **Zone Rule** | Matches based on the customer's geographic zone | Country or state-level pricing |
|
|
95
95
|
| **User Rule** | Matches specific customer accounts | VIP customers, wholesale accounts |
|
|
96
96
|
| **Customer Group Rule** | Matches members of customer groups | Loyalty tiers, membership pricing |
|
|
@@ -124,7 +124,7 @@ Applies based on quantity purchased. Supports `min_quantity` and `max_quantity`
|
|
|
124
124
|
| Bulk Tier 1 | 10–49 | $8.50 |
|
|
125
125
|
| Bulk Tier 2 | 50+ | $7.00 |
|
|
126
126
|
|
|
127
|
-
> **INFO:** Custom Price Rules can be created for specialized pricing logic. See the [Customization Quickstart](
|
|
127
|
+
> **INFO:** Custom Price Rules can be created for specialized pricing logic. See the [Customization Quickstart](../customization/quickstart.md) for details.
|
|
128
128
|
|
|
129
129
|
## Pricing Context
|
|
130
130
|
|
|
@@ -133,7 +133,7 @@ When resolving prices, Spree considers the full context of the request:
|
|
|
133
133
|
| Context | Source | Description |
|
|
134
134
|
|---------|--------|-------------|
|
|
135
135
|
| Currency | Market or request header | The currency to price in |
|
|
136
|
-
| Market | Customer's country | The [Market](
|
|
136
|
+
| Market | Customer's country | The [Market](markets.md) for market-based rules |
|
|
137
137
|
| Zone | Customer's address | The geographic zone for zone-based rules |
|
|
138
138
|
| Customer | JWT authentication | The logged-in customer for user-based rules |
|
|
139
139
|
| Quantity | Cart line item | The quantity for volume-based rules |
|
|
@@ -157,7 +157,7 @@ Each Price List contains prices for specific variants and currencies. Products c
|
|
|
157
157
|
|
|
158
158
|
## Related Documentation
|
|
159
159
|
|
|
160
|
-
- [Products](
|
|
161
|
-
- [Markets](
|
|
162
|
-
- [Taxes](
|
|
163
|
-
- [Promotions](
|
|
160
|
+
- [Products](products.md) — Products, Variants, and base prices
|
|
161
|
+
- [Markets](markets.md) — Geographic regions with currency and locale
|
|
162
|
+
- [Taxes](taxes.md) — Tax categories, tax rates, and zones
|
|
163
|
+
- [Promotions](promotions.md) — Discount-based pricing via promotion rules
|