Configuration
All settings are available in the Control Panel under Stars → Settings. You can also override them in a config/stars.php file, which takes precedence and supports Craft’s environment variables.
Config File
<?php
return [
// Moderation
'defaultStatus' => 'pending', // 'pending' or 'approved'
'requireLogin' => false,
'allowAnonymous' => false,
// Rating
'maxRating' => 5, // 1-10
// Notifications
'enableNotifications' => true,
'notificationEmails' => '', // Comma-separated, blank = system email
// Anti-Spam
'enableHoneypot' => true,
'rateLimitMinutes' => 1440, // Per IP+entry. 0 = disabled
'minSubmissionTime' => 3, // Seconds. 0 = disabled
// Captcha
'captchaProvider' => 'none', // none | recaptcha_v3 | recaptcha_v2 | hcaptcha | turnstile
'captchaSiteKey' => '$CAPTCHA_SITE_KEY',
'captchaSecretKey' => '$CAPTCHA_SECRET_KEY',
'recaptchaThreshold' => 0.5, // reCAPTCHA v3 score threshold (0-1)
// Privacy — disable to avoid storing each piece of metadata
'captureIpAddress' => true, // Required for the per-IP rate limiter
'captureUserAgent' => true,
'captureReferrer' => true,
// Schema.org
'enableSchemaOrg' => true,
'schemaItemType' => 'Product', // Product, LocalBusiness, Book, etc.
// Features
'enablePros' => true,
'enableCons' => true,
'enableAdminResponse' => true,
// Comments
'enableComments' => true,
'commentsRequireLogin' => false,
'commentsAllowAnonymous' => false,
'maxCommentDepth' => 2, // 1 = no replies, 2 = one level, ...
];
Moderation & Rating
| Setting | Default | Description |
|---|---|---|
defaultStatus | pending | Status for new submissions: pending or approved |
requireLogin | false | Require a logged-in user to submit reviews |
allowAnonymous | false | Allow submissions without a name/email |
maxRating | 5 | Maximum rating value (1–10) |
Anti-Spam
| Setting | Default | Description |
|---|---|---|
enableHoneypot | true | Reject submissions that fill the hidden honeypot field |
rateLimitMinutes | 1440 | Minimum minutes between submissions per IP + entry. 0 disables |
minSubmissionTime | 3 | Minimum seconds a form must be open before submit. 0 disables |
Rate limiting is context-aware: reviews and comments count against their own tables.
Captcha
Stars ships with a pluggable captcha layer that applies to both reviews and comments. Choose a provider and supply its keys:
| Setting | Default | Description |
|---|---|---|
captchaProvider | none | One of none, recaptcha_v3, recaptcha_v2, hcaptcha, turnstile |
captchaSiteKey | empty | Public site key for the chosen provider |
captchaSecretKey | empty | Secret key for server-side verification |
recaptchaThreshold | 0.5 | Score threshold for reCAPTCHA v3 (0–1) |
Use craft.reviews.captcha() / craft.comments.captcha() to render the widget on the frontend. The legacy enableRecaptcha / recaptcha* settings still work and are mapped to reCAPTCHA v3.
Privacy
Each piece of submission metadata can be stored or discarded independently for GDPR-style data minimization. All default to true.
| Setting | Default | Description |
|---|---|---|
captureIpAddress | true | Store the submitter’s IP. Required for the per-IP rate limiter |
captureUserAgent | true | Store the browser user-agent string |
captureReferrer | true | Store the HTTP referrer |
Notifications, Schema & Features
| Setting | Default | Description |
|---|---|---|
enableNotifications | true | Email moderators on new submissions |
notificationEmails | empty | Comma-separated recipients. Blank uses the system email |
enableSchemaOrg | true | Output Review + AggregateRating JSON-LD |
schemaItemType | Product | Schema.org item type (Product, LocalBusiness, Book, etc.) |
enablePros | true | Allow structured pro lists on reviews |
enableCons | true | Allow structured con lists on reviews |
enableAdminResponse | true | Allow admin responses on reviews |
Reply notifications are also sent to the parent comment’s author, but only when the reply is created already approved. With the default defaultStatus of pending, replies are held for moderation and no reply notification is sent — set defaultStatus to approved if you want them.
Comments
| Setting | Default | Description |
|---|---|---|
enableComments | true | Enable the threaded comment system |
commentsRequireLogin | false | Require a logged-in user to comment |
commentsAllowAnonymous | false | Allow comments without a name/email |
maxCommentDepth | 2 | Maximum reply nesting (1 = no replies, 2 = one level, …) |