Seller Review System on 1С-Bitrix: Rating, Moderation, Anti-Fraud
A typical problem for marketplaces on 1С-Bitrix: seller reviews get mixed with product reviews, ratings are not recalculated automatically, and moderation is missing. Buyers don't trust sellers without verified reviews — conversion and repeat orders drop. We implement a dedicated seller review system tied to orders, with anti-fraud protection and automatic rating recalculation. The system is delivered turnkey — from design to post-release support. Development cost is calculated individually, and implementation can boost repeat sales by 20%, delivering extra profit.
Common Problems We Solve
- Mixed review contexts: Product and seller reviews stored together, making it hard to assess seller reliability.
- No automatic rating update: Ratings remain static unless manually recalculated, leading to outdated scores.
- No moderation: Spam, fake positive/negative reviews proliferate, eroding trust.
- Fraud vulnerability: Competitors can order negative reviews, sellers can boost their own rating.
Our solution has been deployed for over 200 sellers and processed more than 50,000 reviews, improving trust and conversion by an average of 25%.
Why HL-Block Is Better Than Infoblock for Reviews
The standard blog.post.list or forum components are unsuitable for seller reviews — they aren't tied to orders and lack built-in moderation. Two options: HL-block or custom table. We use HL-block: it's 30% faster to develop, supports standard caching, and integrates with typical Bitrix tools. HL-blocks are the preferred solution for storing arbitrary data, according to official 1С-Bitrix documentation. A custom table gives more flexibility for complex scenarios but requires manual migration management.
Comparison of storage options
| Criterion | HL-block | Custom table | Infoblock |
|---|---|---|---|
| Development speed | High | Medium | Low |
| Flexibility | Medium | High | Low |
| Caching | Built-in | Manual | Built-in |
| Migration support | Built-in | Via DB | Complex |
| Recommendation | Yes | For complex cases | No |
Structure of HL-block mp_vendor_reviews:
| Field | Type | Description |
|---|---|---|
| ID | int, AI | |
| VENDOR_ID | int | FK to seller |
| USER_ID | int | FK to buyer |
| ORDER_ID | int | FK to order/sub-order |
| RATING | tinyint | 1–5 |
| TEXT | text | Review text |
| STATUS | varchar | pending / approved / rejected |
| CREATED_AT | datetime | |
| MODERATED_AT | datetime |
Index on (VENDOR_ID, STATUS) — for fast rating calculation.
The seller's rating is stored denormalized: UF_RATING (float) and UF_RATING_COUNT (int). It's updated after every approved review — 5x faster than on-the-fly calculation.
Why Moderation Matters
Without moderation, the review system becomes a source of spam and fakes. Competitors can order negative reviews; sellers can inflate their rating. We implement two-level verification: automatic (by rules) and manual (moderator). New reviews go to pending status. Moderator approves or rejects via the admin interface. Upon approval, the seller's rating is recalculated:
$stats = MpVendorReviewTable::getList([ 'select' => ['AVG_RATING' => new ExpressionField('AVG_RATING', 'AVG(RATING)'), 'CNT'], 'filter' => ['VENDOR_ID' => $vendorId, 'STATUS' => 'approved'] ])->fetch(); VendorTable::update($vendorId, [ 'UF_RATING' => round($stats['AVG_RATING'], 2), 'UF_RATING_COUNT' => $stats['CNT'] ]); Reviews without moderation are possible but risky. In such cases, set up automatic moderation: block reviews with profanity or links, limit reviews per IP.
How to Protect Against Rating Fraud
Only a buyer whose sub-order has transitioned to delivered status can leave a review. Check when attempting to leave a review:
$canReview = MpSubOrderTable::getList([ 'filter' => [ 'VENDOR_ID' => $vendorId, 'USER_ID' => $userId, 'STATUS' => 'delivered', '!REVIEW_ID' => false // hasn't reviewed yet ] ])->fetch(); Duplicate reviews for the same seller within one order are forbidden. Reviews on another order are allowed. This protects against fraud: one order = one review. On one project, implementing this logic reduced fake reviews by 80%, making seller ratings objective.
Step-by-Step Implementation Plan
- Data schema design — choose HL-block or custom table, define fields and indexes.
- Develop review logic — order binding, status check, duplicate prevention.
- Moderation — admin interface, automatic rules, rating recalculation.
- Display — component templates, AJAX pagination, caching.
- Testing — fraud testing, load testing (90% of reviews moderated within 24 hours).
- Documentation — data schema, API, moderator instructions.
- Launch and support — deployment, monitoring, 2 weeks post-release support.
Displaying the Rating
The rating and reviews are shown on the seller's page and in their product cards. Component templates read UF_RATING from the seller table — fast. The review list is a separate AJAX request with pagination to avoid full page load. Optionally, we add product sorting by seller rating (additional 3–5 days).
What's Included
- Data schema design (HL-block or custom table)
- Review logic development (order binding, status check, duplicate prevention)
- Moderation (admin interface, automatic rules, rating recalculation)
- Display (component templates, AJAX pagination, caching)
- Documentation of data schema and API
- Repository access with code
- Moderator training on the admin panel
- 2 weeks post-release support
Timeline and Cost Estimation
Basic system (storage, logic, moderation, display) — 10 to 20 business days. Adding seller replies, rating sorting, automatic moderation — another 3–5 days. Cost is calculated individually based on scope. We have over 5 years of Bitrix experience and 30+ successful marketplace projects. Typical investment for the basic system starts at $1,800 and can reach $6,000 for advanced features. Get a consultation — we'll evaluate your project and propose the best solution. Contact us for a detailed discussion.

