A plugin that adds product review and moderation capabilities to your Medusa application, with built-in admin responses and review statistics.
This plugin is part of the Medusa Plugins Collection.
See a demo in our Medusa Starter
- Product reviews with ratings
- Review statistics and analytics
- Review moderation workflow (
approved
/pending
/flagged
) - Admin response management
- SDK for Store and Admin operations
- Install the plugin:
yarn add @lambdacurry/medusa-product-reviews
# or, if you're using yarn workspaces
yarn workspace my-app add @lambdacurry/medusa-product-reviews
- Add to
medusa-config.ts
:
module.exports = defineConfig({
plugins: [
{
resolve: '@lambdacurry/medusa-product-reviews',
options: {
defaultReviewStatus: 'pending', // OPTIONAL, default is 'approved'
},
},
],
});
- Run migrations:
yarn medusa db:migrate
For detailed SDK setup and configuration, refer to the @lambdacurry/medusa-plugins-sdk README.
// List product reviews
const { reviews, count } = await sdk.store.productReviews.list(
query: StoreListProductReviewsQuery,
headers?: ClientHeaders
);
// Create/Update a review
const review = await sdk.store.productReviews.upsert(
data: StoreUpsertProductReviewsDTO,
headers?: ClientHeaders
);
// Get review statistics
const stats = await sdk.store.productReviews.listStats(
query: StoreListProductReviewStatsQuery,
headers?: ClientHeaders
);
// List reviews
const { reviews, count } = await sdk.admin.productReviews.list(
query: AdminListProductReviewsQuery
);
// Update review status
const review = await sdk.admin.productReviews.updateStatus(
productReviewId: string,
status: 'pending' | 'approved' | 'flagged'
);
// Manage review responses
const review = await sdk.admin.productReviews.createResponse(
productReviewId: string,
data: AdminCreateProductReviewResponseDTO
);
await sdk.admin.productReviews.updateResponse(
productReviewId: string,
data: AdminUpdateProductReviewResponseDTO
);
await sdk.admin.productReviews.deleteResponse(
productReviewId: string
);
-
Creation: Reviews are set to:
-
approved
status by default -
pending
status ifdefaultReviewStatus: 'pending'
is set in plugin options
-
-
Moderation: Admins can:
- List and filter reviews
- Update review status (approve/flag)
- Manage responses (create/update/delete)
-
GET /admin/product-reviews
- List all reviews -
POST /admin/product-reviews/:id/response
- Add a response -
PUT /admin/product-reviews/:id/response
- Update response -
DELETE /admin/product-reviews/:id/response
- Delete response -
PUT /admin/product-reviews/:id/status
- Update status
-
GET /store/product-reviews
- List reviews -
POST /store/product-reviews
- Create/Update review -
GET /store/product-review-stats
- Get statistics
IMPORTANT: A running PostgreSQL instance is required. The plugin expects
DB_USERNAME
andDB_PASSWORD
environment variables to be set. If not provided, both default to "postgres".
Available scripts:
# Build the plugin
yarn build
# Development mode with hot-reload
yarn dev
# Publish to local registry for testing
yarn dev:publish
# Generate database migrations
yarn db:generate
After publishing the plugin locally by running yarn dev:publish, go to the root of your Medusa project and run the following commands:
cd path/to/your/medusa-application
yarn medusa plugin:add @lambdacurry/medusa-product-reviews
# If you are yarn with a monorepo, you may also need to run
yarn install
This plugin is compatible with versions >= 2.5.0
of @medusajs/medusa
.
MIT License