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

SettingDefaultDescription
defaultStatuspendingStatus for new submissions: pending or approved
requireLoginfalseRequire a logged-in user to submit reviews
allowAnonymousfalseAllow submissions without a name/email
maxRating5Maximum rating value (1–10)

Anti-Spam

SettingDefaultDescription
enableHoneypottrueReject submissions that fill the hidden honeypot field
rateLimitMinutes1440Minimum minutes between submissions per IP + entry. 0 disables
minSubmissionTime3Minimum 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:

SettingDefaultDescription
captchaProvidernoneOne of none, recaptcha_v3, recaptcha_v2, hcaptcha, turnstile
captchaSiteKeyemptyPublic site key for the chosen provider
captchaSecretKeyemptySecret key for server-side verification
recaptchaThreshold0.5Score 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.

SettingDefaultDescription
captureIpAddresstrueStore the submitter’s IP. Required for the per-IP rate limiter
captureUserAgenttrueStore the browser user-agent string
captureReferrertrueStore the HTTP referrer

Notifications, Schema & Features

SettingDefaultDescription
enableNotificationstrueEmail moderators on new submissions (and reply authors on new replies)
notificationEmailsemptyComma-separated recipients. Blank uses the system email
enableSchemaOrgtrueOutput Review + AggregateRating JSON-LD
schemaItemTypeProductSchema.org item type (Product, LocalBusiness, Book, etc.)
enableProstrueAllow structured pro lists on reviews
enableConstrueAllow structured con lists on reviews
enableAdminResponsetrueAllow admin responses on reviews

Comments

SettingDefaultDescription
enableCommentstrueEnable the threaded comment system
commentsRequireLoginfalseRequire a logged-in user to comment
commentsAllowAnonymousfalseAllow comments without a name/email
maxCommentDepth2Maximum reply nesting (1 = no replies, 2 = one level, …)