Marketplace domain model

Edit on GitHub

The following diagram demonstrates the core aggregates of the domain model of the Spryker Marketplace. The Marketplace is an add-on to your Spryker B2C or B2B project. It extends the existing Domain with Merchant and ProductOffer to enable sophisticated business models for your Marketplace application.

This model is intentionally simplified. Learn more about the core domain objects in Marketplace Merchant feature walkthrough and Product Offer feature walkthrough.

Domain Model


Merchant is a core Marketplace domain object. Merchant represents an entity of a third-party seller on a shop. In other setups, such as “big-box retail”, a Merchant can represent a branch of a chain of stores. Merchants use Merchant Portal to manage their profile, catalog, and sales.

To learn more about the Merchant entity, see Marketplace Merchant feature walkthrough.


Product is a B2C/B2B e-commerce domain object. Product represents some goods or services that a customer can buy in a shop. In the Marketplace, a Product can be owned by a Marketplace operator or can be created by a merchant.

To learn more about the Product entity, see Marketplace Product feature walkthrough.


ProductOffer is a Marketplace domain object. ProductOffer enables the assignment of a special price and stock to a Product. In the Marketplace, a Merchant can own a ProductOffer, and they define their prices and stock of Products.

Relation from ProductOffer to Merchant is optional. While ProductOffer is a core domain object for Marketplace, it can also be used for other non-Marketplace-related cases or even are non-Merchant-related.

To learn more about the Product Offer entity, see Marketplace Product Offer feature walkthrough.


Order is a B2C/B2B e-commerce domain object. It is another standard e-commerce domain object representing a transaction of buying some goods on a shop by a customer. In the Marketplace, an Order may contain items that multiple Merchants own. For this reason, merchants never have access to it. Only customers and Marketplace operators can access Order objects.


MerchantOrder is a Marketplace domain object. MerchantOrder is a composition of OrderItem, OrderTotal, OrderShipment, OrderCustomer objects, and other related to a particular merchant within one Order. MerchantOrder is the key entity that helps Merchants to fulfill Order objects. You can have different OMS flows for different Merchant objects so that each Merchant can process their MerchantOrder objects with the best flow. Merchant objects use the Merchant Portal application to fulfill MerchantOrder objects.

To learn more about the orders in the Marketplace, see Marketplace Order Management feature overview.