Getting Started with Commerce
This walks through enabling the module, installing the bundled shop theme, importing demo data, and placing a test order end to end.
1. Enable the Commerce module
Commerce ships disabled by default. There are two ways to enable it:
- Settings β Modules β Commerce appears as a toggle card (because it is a
default_inactiveplugin). Turn it on. - Activate a shop theme β a theme that declares
[requires] commercetriggers a prominent "enable Commerce" banner in the admin; its Enable now button links to the module panel.
Enabling the module registers the product content type, the storefront routes (/cart, /checkout, /order-tracking, /my-account/orders), the admin Orders section, RBAC grants, and the payment settler. Disabling it removes all of that cleanly β the site returns to carrying no e-commerce trace.
Under the hood, toggling the module calls
RefreshActiveTheme(), which rebuilds the content registry and the router so the product type and routes appear/disappear immediately, without a restart.
2. Install the shop theme (shop-starter)
shop-starter is the bundled public reference theme: a compact single-page storefront with a split hero, category shortcuts, product grid, small trust section, and a responsive theme shell for the complete Commerce flow. Activate it from Appearance β Themes.
Because shop-starter declares [requires] commerce, activating it while Commerce is off surfaces the enable banner described above.
3. Import demo data
On the Themes page, shop-starter shows an Import demo data button (it implements DemoDataProvider). Importing seeds:
- Store + theme settings (identity, announcement, hero, product-section copy, footer, and optional social links).
- Four product categories and two tags.
- Six priced demo products with images downloaded into the media library.
Product prices live in the Commerce product_data table, not in core content. The seed carries them as _commerce_* content meta, and Commerce derives product_data from that meta on the generic seed.completed hook (and again on activation, so import-then-enable also works). See Theme Integration.
Enable Commerce before importing (or re-run activation after), so the price-sync listener is registered when the import fires.
4. Add or edit a product manually
Products are a normal content type. Under Content β Products, create or edit a product; the Commerce meta box adds:
| Field | Meaning |
|---|---|
| SKU | Stock-keeping unit |
| Price | Regular price (stored as integer minor units) |
| Sale price | Optional discounted price |
| Manage stock + Stock qty | Enables reservation/oversell protection |
| Tax class | For tax calculation |
| Weight | For shipping |
Saving writes to product_data (upsert) and refreshes product_lookup (the fast-catalog table). Prices are entered as decimals (19.99) and stored as minor units (1999).
5. Configure the store
- Content β Products meta boxes β per-product commerce fields.
- Plugins β Commerce β Settings β store currency, country, weight unit, flat shipping rate, unpaid-order TTL, and the offline bank-transfer details shown at checkout.
- Appearance β Themes β shop-starter β Theme settings β store identity, announcement, hero, product-section copy, footer contact, and optional social links.
6. Place a test order (offline gateway)
The built-in offline bank-transfer gateway needs no external setup, so you can close the loop immediately:
- Open a product on the storefront (
/store/<slug>), add it to the cart. - Go to
/cart, then Checkout. - Fill the address form, choose Bank transfer, and place the order.
- The order is created (status
on_hold) and the buyer sees the bank details plus an order-received page. - In the admin Orders β order detail, click Mark paid. This calls the settler, advances the order to
processing, commits the reserved stock, and queues the confirmation email.
To accept real online payments, configure the PayPal satellite β see Payments.
File map
| Area | Location |
|---|---|
| Contracts | core/commerce/ |
| Engine plugin | plugins/commerce/ |
| PayPal satellite | plugins/commerce-paypal/ |
| Shop theme | themes/shop-starter/ |
| Demo seed | themes/shop-starter/demo/data/seed.toml |
| Design notes | docs/design/commerce-*.md |
Next: Architecture.
