One model, two targets. A single
Review entity (id prefix rev) covers
both product and seller reviews. A reference discriminator decides which one
a given review is about. There is no separate product-review or seller-review
table.Key features
- Product & seller reviews: one rating model, discriminated by a
referencefield. - Order-backed: every review is linked to the order that earned it, with one review per target per order.
- Moderation lifecycle: reviews start
pendingand are moderated topublishedorrejected. - Store responses: a store can attach a single public response to each of its reviews.
- Aggregate ratings: average ratings computed per product and per seller for storefront display.
- Customer notes: an optional free-text note alongside the numeric rating.
Get started
Learn how the domain fits together.The review model
The single review entity, its rating, notes, and status.
Product vs seller reviews
The reference discriminator and the links that anchor each review.
Ratings & moderation
The status lifecycle, store responses, and aggregate ratings.
Examples
Build against the Review domain in your own code.Create a review
Run
createReviewWorkflow from a route or script.Moderate a review
Publish, reject, and delete reviews in code.
Respond to a review
Attach a store’s response with
respondReviewWorkflow.Aggregate ratings
Compute average ratings for products and sellers.
Resources
Data models, links, workflows, service methods, and events for the Review domain.Data models
The
Review entity and its fields.Links
How reviews link to products, sellers, orders, and customers.
Workflows
Create, update, respond, and delete workflows.
Service
Module service methods, including aggregate-rating helpers.
Events
Running side effects as reviews change.