Skip to main content
Use Mercur to govern one shared product catalog and control which stores are allowed to sell what. Master-data governance lives here. The Catalog domain keeps products as a single shared source of truth, controls access to it through an allowlist over who may sell each product, and holds every submission to an approval lifecycle before it goes live. On top of that governance layer it holds master products, variants, categories, collections, tags, and types. A store never owns a product. It sells against a shared master product through an offer.
Catalog = Medusa’s Product module + Mercur’s marketplace layer. Products, variants, categories, and collections are Medusa’s native Product module. Mercur adds the product_seller allowlist (which stores may sell a product), the draftproposedpublished / rejected status lifecycle, and its own product workflows. Products are shared master products, not seller-owned, and a store sells one via an offer.

Key features

  • Shared master data: products live in one catalog, not owned by any store. Creating a product adds it to the shared catalog.
  • Allowlist access control: the product_seller link governs which stores may sell a given master product.
  • Approval governance: a draftproposedpublished / rejected lifecycle, with vendor-created products defaulting to proposed.
  • Attribution, not ownership: the creator of an unreviewed submission is recorded for audit, but the product still belongs to the shared catalog.
  • Native Medusa structure: variants, categories, collections, tags, and types come straight from Medusa’s Product module.
  • Sold via offers: a store lists a master product by creating an offer that carries its SKU, price, and inventory.

Get started

Learn how the domain fits together.

Master products

The shared catalog, why products aren’t seller-owned, and submission attribution.

The store allowlist

The product_seller link that controls who may sell a product.

Status lifecycle

Draft, proposed, published, and rejected, plus how products move between them.

Variants & categories

Variants, categories, collections, tags, and types from Medusa’s Product module.

Examples

Build against the Catalog domain in your own code.

Create a master product

Run createProductsWorkflow from a route or seed script.

Allowlist stores

Grant and revoke a store’s right to sell a product in code.

Publish or reject

Move a proposed product to published or rejected.

Resources

Data models, workflows, service methods, and events for the Catalog domain.

Data models

The Product, ProductVariant, ProductCategory, and the product_seller table.

Links

How the catalog links to sellers, offers, attributes, and media.

Workflows

Mercur’s product create, review, and allowlist workflows.

Service

Medusa’s Product module service, resolved with Modules.PRODUCT.

Events

Events emitted as products are created and reviewed.