Skip to main content

Understanding Quiz Attempts

A Quiz Attempt is when someone takes (participates in) your quiz. This guide explains how participants join quizzes and what happens during an attempt.


How Attempts Work​

When a user wants to take your quiz, they need to:

  1. Identify themselves - Prove who they are
  2. Start an attempt - The system assigns them a unique session
  3. Answer questions - The system tracks each answer in real-time
  4. Submit the quiz - Their attempt ends and auto-grading begins
  5. See results - Scores are calculated immediately

Each attempt gets a unique Session Tokenβ€”a special identifier that keeps all their answers together.


Three Types of Participation​

Depending on your quiz's Access Type, participants join in different ways:

🌍 Public Quizzes - Join Freely​

Best for: Open quizzes, practice drills, viral surveys, or anyone-can-take scenarios.

How participants join:

Option 1: Use a Nickname (Alias)

  • User types in any name (e.g., "Alice" or "Quiz Master 123")
  • They start the attempt immediately
  • No credentials needed
  • ⚠️ Important: Each alias is treated as a new person. If "Alice" retakes the quiz with a different nickname, it counts as a different participant.

Option 2: Use Their Participant ID

  • Users who have taken quizzes before have a Participant IDβ€”a unique identifier
  • They can enter this ID to re-join and track their progress across multiple quizzes
  • Their score history and stats are linked to this ID
  • They can also use the same Participant ID on different quizzes (useful for progress tracking)

Example Flow:

  1. User visits a public quiz link
  2. They see: "Enter your name (alias) OR enter your Participant ID"
  3. If they type "Sarah", they start immediately as a new participant
  4. Next time, if they remember their Participant ID, they can enter it to link to their previous attempts

πŸ”‘ Shared Quizzes - Join with Access Code​

Best for: Classrooms, workshops, team events, or when you want controlled but flexible access.

How participants join:

  1. User receives an Access Code from you (6-digit code, e.g., A3F9K2)
  2. They enter the code to unlock the quiz
  3. Once unlocked, they join just like a Public Quiz:
    • Option A: Enter an alias (nickname) to start immediately
    • Option B: Use their Participant ID if they have one

Why use Shared?

  • You control who can access the quiz (they need your code)
  • Participants can still use aliases or IDs
  • Great for classroom quizzes where students need a code to prevent random people from joining

Example Flow:

  1. Teacher gives students the code: A3F9K2
  2. Student enters the code on the join page
  3. Student enters their name: "John Smith"
  4. Quiz starts immediately

πŸ”’ Private Quizzes - Restricted Access​

Best for: Certification exams, employee training, official assessments, or high-security scenarios.

Perfect for Organizations & Institutions

Private quizzes are ideal for:

  • Schools & Universities: Campus-wide exams, standardized testing, placement tests
  • Companies: Employee onboarding, compliance training, certification programs
  • Government Agencies: Civil service exams, licensing tests, national assessments
  • Educational Platforms: Third-party quiz systems without building infrastructure from scratch

Why QuizOxide for Large-Scale Exams?

Many quiz platforms crash or slow down when hundreds or thousands of users take an exam simultaneously. QuizOxide is built with Rustβ€”a programming language known for reliability and performanceβ€”making it capable of handling:

βœ… Thousands of concurrent users without performance degradation
βœ… National or regional exams with peak loads
βœ… Cost-effective scaling - no expensive infrastructure needed
βœ… Reliability-first architecture - built for mission-critical assessments

If you need a quiz system that won't fail during peak exam hours, QuizOxide provides a production-ready solution without the cost and complexity of building from scratch.

How participants join:

This requires pre-registration. As the quiz owner, you must create participants beforehand:

  1. You (the quiz creator) create a participant list with:

    • Participant ID: A unique username (e.g., emp_john_smith)
    • API Key: A secure password (e.g., sk_abc123xyz)
  2. You distribute these credentials to authorized users via email or your internal system

  3. User logs in with their ID and API Key to take the quiz

  4. Direct access only - Unlike Public/Shared, users cannot:

    • Join with an alias
    • Create their own credentials
    • Access the quiz without valid credentials

Why use Private?

  • Maximum securityβ€”only authorized people can take the quiz
  • Perfect for exams, certifications, or training with restricted access
  • Credentials are managed by you, not self-service

Example Flow:

  1. You create a participant: ID: emp_john_smith, Key: sk_abc123xyz
  2. You email John: "Your credentials are: ID=emp_john_smith, Key=sk_abc123xyz"
  3. John enters his ID and Key on the quiz page
  4. Quiz starts for John (nobody else can access with those credentials)

During the Attempt​

While taking a quiz, the system:

  • Tracks every answer - Each response is recorded with a timestamp
  • Allows answer changes - Participants can re-answer the same question multiple times
  • Uses the latest answer - If a participant changes their answer, only the most recent submission is counted for scoring
  • Enforces time limits - If you set a time limit, the system monitors it
  • Auto-submits on deadline - Depending on your submission mode:
    • Soft Limit: Attempt auto-submits when time expires (user can see warning)
    • Hard Limit: Attempt auto-submits immediately when time expires (user cannot continue)
  • Sends real-time updates - If using leaderboards, scores update as people submit

How Answer Changes Work​

Important: The system always uses the latest answer for each question.

Example:

  1. Question 1: "What is 2+2?"
  2. User first answers: "5" (incorrect)
  3. User realizes mistake, re-answers: "4" (correct)
  4. System uses: "4" (the latest answer)
  5. Previous answer "5" is kept in history but marked as outdated
  6. Score calculated with: Only the latest answer ("4")

Why this matters:

  • βœ… Users can correct mistakes during the quiz
  • βœ… Only the final choice counts toward their score
  • βœ… Leaderboards reflect the latest scores, not first attempts
  • βœ… All answer history is preserved for review, but only the latest is "active"

Technical Detail (for transparency): When a new answer is submitted for the same question:

  1. The system marks all previous answers with is_latest = false
  2. The new answer is marked with is_latest = true
  3. Score calculations and leaderboards only use answers where is_latest = true
  4. Previous answers remain in the database for auditing purposes

Max Attempts​

You can limit how many times a single participant can take the quiz.

How it works:

  • Set to 1: Each participant gets one shot (exam mode)
  • Set to 3: Each participant can retake up to 3 times (practice + 2 retakes)
  • Set to 999 or higher: Effectively unlimited (practice quizzes)

Latest Attempt Policy​

Important: When a participant retakes a quiz, the system uses their latest (most recent) attempt for all calculations.

Example:

  • Attempt 1: Score 60%, Time 10 minutes
  • Attempt 2: Score 80%, Time 8 minutes
  • Attempt 3: Score 70%, Time 12 minutes

What counts:

  • βœ… Leaderboard shows: Attempt 3 (70%, 12 minutes) - the latest attempt
  • βœ… Ranking based on: Latest score and time, not the best
  • βœ… Displayed score: 70% (latest), not 80% (best)

Why latest, not best?

This design choice ensures:

  • Consistency: Everyone is ranked by the same criteria (latest attempt)
  • Prevents gaming: Users can't "freeze" a lucky high score by not retaking
  • Real-time fairness: Leaderboards reflect current participant performance
  • Skill progression: Shows whether users improve or decline over retakes

All attempts are saved: Previous attempts remain in the database for review and analysis, but only the latest submitted attempt is used for leaderboards and rankings.

Important Notes:

  • βœ… For Public Quizzes: The limit tracks Participant IDs

    • User "Alice" (alias) retaking as "Alice2" (new alias) = counts as different people, no limit applied
    • User with Participant ID retaking = counts against their limit
  • βœ… For Shared Quizzes: Same as Public (tracks Participant IDs, not aliases)

  • βœ… For Private Quizzes: The limit is strict per credentials (cannot bypass)


Attempt Lifecycle​

1. Participant Joins
↓
2. Attempt Starts (Session Token assigned)
↓
3. Questions Displayed
↓
4. Participant Answers Questions
↓
5. Timer Expires OR User Submits β†’ Attempt Auto-Submits
↓
6. Results Calculated & Stored
↓
7. Leaderboard Updated (if enabled)

Session Tokens & Resuming​

When a participant starts an attempt, they get a Session Tokenβ€”a unique code (e.g., ses_xyz123.456).

What is it for?

  • Keeps their answers safe
  • Allows them to resume if they reload the page
  • Used to identify their attempt when submitting answers

Important:

  • Participants should NOT share their session token
  • It expires after auto-submission or manual submission
  • If a participant loses their token, they cannot resume (they'll need to restart as a new attempt)

Viewing Attempt Results​

After submission:

  • Participant sees: Their score, which questions they got right/wrong, and their rank (if leaderboard is enabled)
  • You (quiz creator) see: All participant data in your dashboard, including:
    • Time taken
    • Answers submitted
    • Score
    • Timestamp
    • Any notes or metadata

Common Questions​

Q: Can someone retake a Private quiz with a different name?
A: No. Private quizzes require specific credentials you created. They can only use those exact credentials.

Q: If a Public quiz participant starts with an alias, can they see their old attempts?
A: No. Aliases are one-time identities. They should use their Participant ID to link attempts.

Q: What happens if a participant's time runs out in a Hard Limit quiz?
A: Their attempt is immediately submitted with whatever answers they've already given. They cannot add or change answers.

Q: Can I change the max attempts after publishing?
A: Yes. You can update it anytime. It affects future attempts, not past ones.