Commerce architecture
Features described on this page require the Xperience by Kentico Advanced license tier.
Xperience’s commerce platform consists of five core areas that work together to support the full commerce lifecycle:
Product catalog
Products are modeled as Xperience content types, giving you full control over your catalog structure. There is no fixed SKU table – you define the content types, fields, and taxonomies that match your product domain.
The following storage strategies are available:
- Content hub – Store products as reusable content items, ideal for multi-channel scenarios or when products are not directly tied to website pages.
- Website channel – Store products as pages in a website channel, suitable when products need their own URLs and SEO metadata.
See Product catalog for modeling guidance and Example - product catalog for a complete implementation.
Price calculation
The IPriceCalculationService processes pricing through a configurable pipeline of sequential steps. Three calculation modes optimize for different scenarios:
- Catalog – Product listings and detail pages (unit prices and catalog discounts only)
- ShoppingCart – Cart display (adds order discounts, taxes, and totals)
- Checkout – Final calculation (adds shipping costs)
Each step in the pipeline can be replaced, extended, or reordered to implement custom pricing logic.
See Price calculation for the conceptual overview and Set up price calculation for implementation details.
Shopping cart and checkout
Shopping carts are persisted in the database as ShoppingCartInfo objects. The cart content (ShoppingCartData) is a free-form string column – you define and serialize your own cart data model.
The checkout process is fully developer-implemented. Xperience provides session management services (ICurrentShoppingCartRetriever, ICurrentShoppingCartCreator, ICurrentShoppingCartDiscardHandler) that handle cart identity for anonymous and authenticated users, but the checkout UI, validation, and payment integration are your responsibility.
See Checkout process for implementation guidance.
Order management
IOrderCreationService orchestrates the complete order creation workflow:
- Creates or retrieves customer records (linked to members or matched by email)
- Runs price calculation for final totals
- Persists order, order items, and address snapshots in a database transaction
- Sends notifications via email channels and the notifications system
See Create orders for the API reference and Customize order creation for mapper interfaces.
Promotions
The promotion engine supports two discount types:
- Catalog discounts – Apply to individual products (e.g., 10% off all items in a category)
- Order discounts – Apply to the entire order (e.g., $20 off orders above $100)
When multiple promotions compete, the system automatically selects the best discount for the customer. Promotions support automatic application or coupon code redemption. Custom promotion rules are implemented by developers and configured by business users in the Promotions application.
See Promotions for the complete promotions framework.
Data model
The commerce data model centers around orders and customers, with connections to the membership and content systems:
|
Object |
Description |
Key relationships |
|
|
A completed order with totals, status, and payment/shipping method references |
Links to |
|
|
Customer record (name, email, phone). Optionally linked to a member account. |
Optional |
|
|
Active shopping cart with free-form content data |
Optional |
|
|
Line item with snapshotted product name, price, and quantity |
Child of |
|
|
Billing/shipping address snapshot frozen at order time |
Child of |
|
|
Promotion definition with rules, scheduling, and coupon configuration |
Referenced by |
Scope and limitations
The commerce module is designed for content-driven stores where product information is managed alongside other website content. Be aware of the following design decisions:
- No built-in payment gateway – You integrate directly with your payment provider’s API.
- No default multi-currency support – Currency handling must be implemented as part of your custom solution.
- No built-in stock management – Stock tracking is implemented as a custom module.
These limitations are by design – the framework provides extensible foundations rather than opinionated defaults. These additional capabilities can be implemented through the customization points described above.
Integration with the Xperience platform
The commerce module connects to several core Xperience features:
- Content modeling – Products are content types with reusable field schemas and taxonomies.
- Membership – Customers can be linked to member accounts. Cart identity is managed for both anonymous and authenticated users.
- Email channels – Order status notifications are sent through email channels using configurable email templates.
- Notifications – Internal order notifications are delivered to admin users through the notifications system.
Core extensibility mechanisms
The framework exposes three primary patterns for customization:
- Open generic registration – Core services like
IPriceCalculationServiceandIOrderCreationServiceuse generic type parameters, allowing you to substitute custom request, result, and data types while preserving the framework’s orchestration logic. - Pipeline step replacement – The price calculation pipeline consists of 9 sequential steps. Any step can be replaced, and the entire pipeline can be reordered or extended to accommodate custom pricing logic.
- Mapper interfaces – The order creation service uses mapper interfaces (e.g.,
ICustomerInfoMapper,IOrderInfoMapper) that allow you to inject custom data during order creation without replacing the entire service. See Customize order creation.