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:
- Identify themselves - Prove who they are
- Start an attempt - The system assigns them a unique session
- Answer questions - The system tracks each answer in real-time
- Submit the quiz - Their attempt ends and auto-grading begins
- 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:
- User visits a public quiz link
- They see: "Enter your name (alias) OR enter your Participant ID"
- If they type "Sarah", they start immediately as a new participant
- 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:
- User receives an Access Code from you (6-digit code, e.g.,
A3F9K2) - They enter the code to unlock the quiz
- 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:
- Teacher gives students the code:
A3F9K2 - Student enters the code on the join page
- Student enters their name: "John Smith"
- Quiz starts immediately
π Private Quizzes - Restricted Accessβ
Best for: Certification exams, employee training, official assessments, or high-security scenarios.
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:
-
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)
- Participant ID: A unique username (e.g.,
-
You distribute these credentials to authorized users via email or your internal system
-
User logs in with their ID and API Key to take the quiz
-
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:
- You create a participant:
ID: emp_john_smith,Key: sk_abc123xyz - You email John: "Your credentials are: ID=emp_john_smith, Key=sk_abc123xyz"
- John enters his ID and Key on the quiz page
- 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:
- Question 1: "What is 2+2?"
- User first answers: "5" (incorrect)
- User realizes mistake, re-answers: "4" (correct)
- System uses: "4" (the latest answer)
- Previous answer "5" is kept in history but marked as outdated
- 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:
- The system marks all previous answers with
is_latest = false - The new answer is marked with
is_latest = true - Score calculations and leaderboards only use answers where
is_latest = true - 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
999or 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.