> For the complete documentation index, see [llms.txt](https://docs.norrnext.com/norrcompetition/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.norrnext.com/norrcompetition/configuration/contest.md).

# Contest

Default settings for contests, entry forms, voting rules, anti-fraud checks, and verification codes.

The **Contest** tab defines default behaviors for entry submissions, voting mechanics, vote frequency limits, anti-fraud telemetry, and one-time verification codes (tokens). These settings act as global defaults and can be overridden within individual contest settings.

### Entry Form Options

* **Entry Count** (`app_forms_per_competition`) — Maximum number of entries a single contestant can submit to a contest (default: `1`).
* **Entry Approval** (`competition_apps_approve`) — Default moderation workflow for entries: *None* (all moderated), *New* (new submissions auto-approved), *Changed* (edits auto-approved), or *All* (no moderation).
* **Notification Emails** (`notification_emails`) — Email addresses to receive submission notifications when entry moderation is active.
* **Additional Photos** (`competition_multiple_photos`) — Enables uploading extra gallery photos displayed alongside the main photo or video entry.
* **Photos Limit** (`competition_multiple_photos_limit`) — Maximum number of additional gallery photos allowed per entry (default: `5`).
* **Total Entries Limit** (`competition_total_entries_limit`) — Global cap on the total number of approved entries allowed in the contest (`0` = unlimited).
* **Guest Entry Creator** (`competition_app_forms_user`) — Selects the default Joomla user account assigned as author when submissions by unregistered guests are enabled.
* **Captcha** (`appform_show_captcha`) — Shows captcha protection on the entry submission form for guest users (supports Joomla Captcha plugins, Turnstile, reCAPTCHA).
* **Contestant IP** (`competition_entry_form_ip`) — Stores the submitter's IP address with the entry for audit and anti-spam inspection in the backend.

### Voting Options

* **Enable Rating** (`enable_rating`) — Global toggle enabling voting functionality in active contests.
* **Vote Mode** (`vote_mode`) — Choose between two voting mechanics:
  * *Vote (Simple)* — Standard one-click vote incrementing the entry's vote counter by 1.
  * *Rating (Score)* — Star/score-based evaluation where voters submit a numerical rating.
* **Rating Max** (`rating_max`) — Defines the rating scale when *Vote Mode* is set to Rating: `1 - 5` stars or `1 - 10` stars.
* **Count Past Votes** (`count_past_votes`) — When enabled, votes cast in previous voting stages remain included in the current standings. When disabled, only votes cast within the current active voting period count (ideal for multi-stage tournaments).
* **Vote for Own Entry** (`vote_own_participant`) — Allows or forbids contestants from voting for their own entries.
* **Unvote Period** (`vote_unvote_period`) — Grace period in minutes during which a voter can retract or change their vote (`0` disables unvoting).
* **Vote Modal Confirmation** (`vote_modal_form`) — Displays a confirmation modal dialog before casting a vote: *Off*, *Guests only*, or *All voters*.

### Contest Voting Options

* **Max Votes per Contest** (`competition_allowed_votes`) — Total number of votes an individual voter can cast across the entire contest (`0` = unlimited).
* **Vote Frequency** (`cvote_frequency`) — Preset interval between votes in the contest: *No limit*, *1 hour*, *6 hours*, *12 hours*, *1 day*, *1 week*, *1 month*.
* **Custom Vote Frequency** (`cvote_frequency_custom`) & **Mode** (`cvote_frequency_mode`) — Custom interval value and unit (*seconds*, *minutes*, *hours*, *days*) overriding preset frequency.

### Entry Voting Options

* **Max Votes per Entry** (`participant_allowed_votes`) — Maximum number of votes a single voter can cast for the same entry (`0` = unlimited).
* **Vote Frequency** (`vote_frequency`) — Preset interval between repeat votes for the same entry: *1 hour*, *6 hours*, *12 hours*, *1 day (default)*, *1 week*, *1 month*.
* **Custom Vote Frequency** (`vote_frequency_custom`) & **Mode** (`vote_frequency_mode`) — Custom interval value and unit (*seconds*, *minutes*, *hours*, *days*).

### Voting Check Options (Anti-Fraud)

NorrCompetition features multi-layered voter identification to safeguard contests against voting manipulation:

* **Check IP** (`vote_check_ip`) — Checks the voter's IP address against existing vote records.
* **Check IP + Fingerprint** (`vote_check_ip_fingerprint`) — Evaluates the combined IP and browser device fingerprint (active when standalone IP check is disabled).
* **Check Fingerprint** (`vote_check_fingerprint`) — Evaluates client browser/device fingerprinting independently.
* **Check Cookie** (`vote_check_cookie`) — Sets a secure tracking cookie in the voter's browser.
* **Cookie Expiration** (`cookie_expire_time`) — Cookie validity duration in days (default: `365` days).
* **Tracking Data** (`vote_track_data`) — Logs detailed voter telemetry (User Agent, operating system, screen resolution, browser language, platform) to the Votes Log for forensic review.

### Verification Code Options (Vote Tokens)

Enforces vote confirmation via one-time verification codes (OTP) delivered via email (`plg_competition_token_email`):

* **Verification Code Required** (`vote_token_required`) — Enforces OTP verification: *Off*, *Guests only*, or *All voters*.
* **Code Length** (`vote_token_length`) — Number of digits in the generated verification code (range: `4` to `8`, default: `6`).
* **Code Expiration** (`vote_token_expires`) — Code lifetime in minutes before expiration (range: `5` to `60`, default: `15`).
* **Max Attempts** (`vote_token_max_attempts`) — Maximum failed verification code attempts before the session is locked (range: `3` to `10`, default: `5`).
* **Resend Cooldown** (`vote_token_resend_cooldown`) — Waiting period in seconds before a voter can request another code (range: `30` to `300`, default: `60s`).
* **Max Resends** (`vote_token_max_resends`) — Maximum code resend requests permitted per voting attempt (range: `1` to `5`, default: `3`).
* **Flood Window** (`vote_token_flood_window`) — Time window in seconds for rate-limiting verification requests (default: `3600s` / 1 hour).
* **Max Requests per IP** (`vote_token_max_per_ip`) — Maximum OTP generation requests allowed per IP address within the flood window (default: `10`).
* **Max Requests per Recipient** (`vote_token_max_per_recipient`) — Maximum OTP generation requests allowed per email address within the flood window (default: `5`).
