Skip to main content
Version: 3.x

Gezy Marketplace

This extension adds marketplace features (merchants, offers, conversations, disputes, RMA) on top of the Gezy connector.

The extension brings the following marketplace modules to a Gezy-powered storefront:

  • Merchants: dedicated merchant pages with profile, ratings and catalog.
  • Offers: multi-merchant offers on product pages, including an offer-aware cart.
  • Conversations: buyer/merchant messaging.
  • Disputes and RMA: post-order claim management.
  • Marketplace-aware checkout, search and order detail.
info

The Conversations and Disputes features must be enabled on the Gezy backend to work. On the storefront side they are available by default; you can restrict them per customer through the conversation and dispute permissions (see the Permissions section below).

Prerequisites​

The marketplace extension is a feature layer on top of the Gezy connector. You must have a working Gezy installation before adding it.

Installation​

Install the package:

$ pnpm install @front-commerce/gezy-marketplace@latest

Setup​

Update your front-commerce.config.ts to register the extension after gezy():

front-commerce.config.ts
import { defineConfig } from "@front-commerce/core/config";
import themeChocolatine from "@front-commerce/theme-chocolatine";
import gezy from "@front-commerce/gezy";
import gezyMarketplace from "@front-commerce/gezy-marketplace";
import storesConfig from "./app/config/stores";
import cacheConfig from "./app/config/caching";

export default defineConfig({
extensions: [
themeChocolatine(),
gezy({ storesConfig }),
gezyMarketplace(),
],
stores: storesConfig,
cache: cacheConfig,
configuration: {
providers: [],
},
});

The extension does not require its own environment variables: it reuses the Gezy connector configuration.

info

gezyMarketplace() must be registered after gezy().

Per-customer cache strategy (optional)​

If your marketplace prices vary per customer, you can scope CatalogProductPrices accordingly by registering the PerGezyCustomer cache strategy provided by @front-commerce/gezy. See the Gezy caching strategies reference for the setup details.

Permissions​

gezyMarketplace() registers two permissions on every authenticated session, used by the marketplace UI to gate the "My disputes" and "My messages" sections:

  • dispute
  • conversation

Both are granted by default. To restrict them, override the permissions in the onServerServicesInit lifecycle hook:

front-commerce.config.ts
export default defineConfig({
// ...
unstable_lifecycleHooks: {
onServerServicesInit: async (_services, _request, _config, user) => {
const isB2BCustomer = isB2BCustomer(user); // TODO Implement your own custom logic here

user.permissions.addPermission("dispute", isB2BCustomer, {
priority: 10,
});
user.permissions.addPermission("conversation", isB2BCustomer, {
priority: 10,
});
},
},
});

See the Permissions guide for more details on the API (priority, serverOnly, client-side checks).