一键导入
product-reviews-ratings
Collect, moderate, and display customer reviews with star ratings, aggregate scores, and structured data markup for Google rich results
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Collect, moderate, and display customer reviews with star ratings, aggregate scores, and structured data markup for Google rich results
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
Manage supplier invoices and vendor payments with automated receipt matching, payment scheduling, early discount optimization, and reconciliation workflows
Enable wholesale and B2B sales with company accounts, custom catalogs, quote workflows, purchase orders, and net payment terms
Predict future inventory needs using historical sales data, seasonal trends, and reorder points to prevent stockouts and overstock
Launch a multi-vendor marketplace with seller onboarding, commission rules, automated payouts via Stripe Connect, and vendor dashboards
Control which products appear first in collections using automated ranking rules, manual overrides, and performance-based sorting algorithms
Sync your catalog and inventory across your own site, Amazon, eBay, and wholesale channels to sell everywhere from one system
| name | product-reviews-ratings |
| description | Collect, moderate, and display customer reviews with star ratings, aggregate scores, and structured data markup for Google rich results |
| category | customer-crm |
| risk | safe |
| source | curated |
| date_added | 2026-03-12 |
| tags | ["reviews","ratings","ugc","moderation","schema-org","social-proof","star-rating","review-widget"] |
| triggers | ["product reviews","star ratings","review system","review moderation","review widget","aggregate ratings","customer reviews"] |
| tools | ["claude-code","cursor","gemini-cli","copilot","codex-cli","kiro","opencode"] |
| platforms | ["shopify","woocommerce","bigcommerce","custom"] |
| difficulty | intermediate |
Product reviews are the strongest social proof signal in e-commerce — products with 5+ reviews convert at 270% higher rates than products with none. Every major platform has review apps that handle collection, moderation, schema.org markup for Google star ratings, and verified purchase badging without custom code. Only build a custom review system if you need proprietary moderation logic, deep API integration, or review data in your own database.
AggregateRating markup to enable star ratings in Google Search results| Platform | Recommended Tool | Why |
|---|---|---|
| Shopify | Judge.me | Free plan includes unlimited reviews, photo reviews, verified purchase badges, schema.org markup, and post-purchase email requests |
| Shopify | Yotpo | More advanced features: Q&A, loyalty integration, Google Shopping reviews syndication — best for mid-market+ stores |
| WooCommerce | WooCommerce built-in reviews + WP Product Review plugin | WooCommerce has built-in star ratings; add WP Product Review for schema.org markup and verified purchase gating |
| WooCommerce | Judge.me for WooCommerce | Same feature set as the Shopify version; available as a WooCommerce integration |
| BigCommerce | Judge.me or Yotpo | Both available on the BigCommerce App Marketplace with full feature parity |
| Custom / Headless | Build review API | Required when reviews need to live in your own database with custom moderation logic |
Option A: Judge.me (recommended — free, full-featured)
Install Judge.me Product Reviews from the Shopify App Store
Judge.me automatically sends a post-purchase review request email after a configurable delay:
Configure review display:
Enable schema.org markup:
Configure verification and moderation:
Option B: Yotpo (mid-market and enterprise)
Testing schema.org markup: After enabling Judge.me or Yotpo schema output, validate with Google's Rich Results Test using your product page URL. Star ratings appear in Google Search within 1–2 weeks of indexing.
WooCommerce built-in reviews (free, basic):
Adding schema.org markup and enhanced display:
Automating review request emails:
Judge.me for WooCommerce:
Judge.me for BigCommerce:
BigCommerce built-in product reviews:
Yotpo for BigCommerce:
For headless storefronts, build a review pipeline with post-purchase trigger, moderation, Bayesian aggregate scoring, and schema.org output:
// lib/reviews.ts
// POST /api/reviews — accept review submission with signed token verification
export async function submitReview(req: Request, res: Response) {
const { token, productId, rating, title, body, authorName } = req.body;
// Validate signed token (generated in post-purchase email, prevents spam)
const tokenData = await verifyReviewToken(token);
if (!tokenData) return res.status(401).json({ error: 'Invalid or expired review token' });
const verifiedPurchase = await db.orderItems.exists({ orderId: tokenData.orderId, productId });
// Auto-moderation: spam score + profanity check
const spamScore = await checkSpam({ body, authorName, ip: req.ip });
const hasProfanity = await checkProfanity(body + ' ' + title);
const status =
spamScore > 0.8 ? 'spam' :
hasProfanity ? 'pending' :
verifiedPurchase ? 'approved' : 'pending';
const review = await db.reviews.create({
productId, orderId: tokenData.orderId, customerId: tokenData.customerId,
authorName, authorEmail: tokenData.email, rating, title, body,
verifiedPurchase, status, approvedAt: status === 'approved' ? new Date() : null,
});
if (status === 'approved') await updateProductRatingSummary(productId);
res.json({ reviewId: review.id, status });
}
// Bayesian aggregate: prevents a 2-review product with 5.0 outranking a 200-review product with 4.7
export async function updateProductRatingSummary(productId: string) {
const reviews = await db.reviews.findMany({ where: { productId, status: 'approved' } });
const rawAverage = reviews.length > 0
? reviews.reduce((sum, r) => sum + r.rating, 0) / reviews.length : 0;
const globalMean = await db.reviews.globalAverageRating();
const C = 5; // confidence weight — trust product's own average after 5+ reviews
const bayesianAverage = (C * globalMean + reviews.reduce((s, r) => s + r.rating, 0)) / (C + reviews.length);
await db.productRatingSummaries.upsert({ productId }, {
productId, reviewCount: reviews.length,
averageRating: Math.round(bayesianAverage * 10) / 10,
rawAverageRating: Math.round(rawAverage * 10) / 10,
});
}
// Emit schema.org AggregateRating JSON-LD — required for Google star ratings in search
export function buildProductSchema(product: Product, ratingSummary: { reviewCount: number; averageRating: number }) {
return {
'@context': 'https://schema.org',
'@type': 'Product',
name: product.name,
image: product.images.map(i => i.url),
description: product.description,
sku: product.sku,
offers: {
'@type': 'Offer',
price: (product.priceInCents / 100).toFixed(2),
priceCurrency: 'USD',
availability: product.inventoryQuantity > 0 ? 'https://schema.org/InStock' : 'https://schema.org/OutOfStock',
},
...(ratingSummary.reviewCount > 0 && {
aggregateRating: {
'@type': 'AggregateRating',
ratingValue: ratingSummary.averageRating.toFixed(1),
reviewCount: ratingSummary.reviewCount,
bestRating: '5',
worstRating: '1',
},
}),
};
}
// Trigger review request email 5 days after delivery
export async function triggerReviewRequest(orderId: string) {
const order = await db.orders.findById(orderId, { include: ['lineItems.product', 'customer'] });
const token = await createSignedReviewToken(orderId, order.customerEmail);
await reviewQueue.add(
'send-review-request',
{ orderId, email: order.customerEmail, token, products: order.lineItems.map(i => ({ productId: i.productId, name: i.product.name })) },
{ delay: 5 * 86400000, jobId: `review-request-${orderId}` }
);
}
All review apps need a moderation strategy before go-live:
In Judge.me:
In Yotpo:
For custom builds: auto-approve verified purchase reviews that pass spam and profanity checks; queue all others. Never skip moderation entirely — process the pending queue daily.
| Metric | Benchmark | Where to Find |
|---|---|---|
| Review collection rate | 3–8% of delivered orders | Judge.me Analytics → Email Performance |
| Products with 5+ reviews | Track % of active products | Judge.me → Insights |
| Average rating | 4.2–4.7 is healthy | Platform product listing page |
| Click-through rate from Google star ratings | Monitor in Google Search Console after schema is live | Search Console → Search Appearance → Rich Results |
| Problem | Solution |
|---|---|
| Star ratings not showing in Google Search | Ensure AggregateRating.reviewCount is ≥ 1 and schema is in the <head> as JSON-LD; test with Google's Rich Results Test |
| Review request sent before product delivered | Trigger the review email from the delivery webhook, not the ship event; add 5-day buffer after delivery |
| Spam reviews flood the moderation queue | Enable Akismet integration in WooCommerce or use Judge.me's built-in spam filter; auto-reject submissions with high spam scores |
| Duplicate reviews from the same customer | Judge.me and Yotpo enforce one review per verified purchase; for custom builds add a unique constraint on (customerId, productId) |
| Review photos slow the page | Judge.me and Yotpo automatically resize and serve photos via CDN; for custom builds resize to 200px thumbnails at upload time |