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).