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.
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():
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.
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:
disputeconversation
Both are granted by default. To restrict them, override the permissions in the
onServerServicesInit lifecycle hook:
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).