Admin GuidesQuiz Authoring

Quiz & Assessment Authoring

Who this guide is for: Admins, Owners and Instructors (on the courses they are assigned to) building quizzes inside a course.

A quiz lives on a Quiz / Assessment module in a course. You add questions, mark the correct answers, set points, and configure the pass mark and attempt rules — all from the course editor. On a published course, click Start new version first: a published version is read-only.

Step 1 — Add a quiz module

  1. Go to Courses and open the course.
  2. On the Modules tab, add a module of type Quiz / Assessment.

Step 2 — Build the quiz

  1. On the quiz module row, click ▼ Manage Questions.
  2. If the module has no quiz yet, click Create quiz.
  3. Configure Settings:
    • Passing score (%) — the percentage required to pass.
    • Max attempts (0 = ∞) — 0 means unlimited.
    • Time limit (min) — leave blank for no limit.
    • Shuffle questions and Shuffle choices — randomize order per attempt.
    • Click Save settings.

Step 3 — Add questions

  1. Click Add question.
  2. Choose the Type, enter the Question text and configure the type’s answers:
Question typeAnswer rule
Multiple choice (one answer)Add 2–8 choices; select the single correct one
True / FalsePick whether True or False is correct
Multiple select (many answers)Add 2–8 choices; check all correct ones
Short answer (auto-graded)Add 1–8 accepted answers; the learner types their answer and it is marked correct if it matches any one of them
Essay (manually graded)No answers to configure — an instructor grades the submission
File upload (manually graded)No answers to configure — an instructor grades the uploaded file
  1. Set Points (1–10) for the question.
  2. Click Save question.

Short-answer questions (LMS-729)

A short-answer question is graded automatically the moment the learner submits — there is no instructor step, unlike Essay and File upload.

  1. Choose Short answer (auto-graded) as the type.
  2. Enter the question text.
  3. Under Accepted answers, list every spelling you will accept — one per row. Click Add accepted answer for alternates. Any one match scores the question’s full points; there is no partial credit.
  4. Under Matching, decide how strict the comparison is:
OptionDefaultEffect
Case-sensitive (“Ottawa” ≠ “ottawa”)OffWhen off, Ottawa and ottawa both match. Turn it on for answers where capitalisation is the point (a code, a chemical symbol).
Ignore extra spaces around and between wordsOnWhen on, leading/trailing spaces and doubled spaces between words are ignored. Turn it off only when spacing itself is part of the answer.

Writing good accepted answers:

  • List the realistic variants: Ottawa, City of Ottawa, Ottawa, Ontario.
  • Accents are significant. côté and cote are different words in French and do not match each other. If you will accept the unaccented spelling, add it as its own row.
  • Both spellings of a term (color / colour) each need a row.
  • A blank row is ignored, so an empty accepted-answer list is rejected on save.

Learners never receive the accepted answers before they submit — the list is stripped server-side. After submitting, the results page shows what they typed and, if they were wrong, the accepted answers.

Edit or delete any question from its row. Deleting a question removes it from the quiz (the learner’s past attempts are unaffected).

Knowledge checks — practice inside a lesson, not graded (LMS-1163)

A knowledge check is a short set of questions a learner answers at the end of a lesson to test their understanding. It gives instant feedback with the explanation, the learner can try again as often as they like, and nothing is recorded: no score, no attempt, no effect on completion or the certificate.

  1. Build the quiz as in Steps 1–3. Use multiple choice, true/false or multi-select questions, and write an explanation for each — the explanation is what the learner sees after answering. (Short-answer, essay and file-upload questions are not shown in a knowledge check.)
  2. On the quiz module row, click the edit button and tick Knowledge check, not graded. Required to complete the course turns off and cannot be turned back on while the box is ticked. Save.
  3. Open the lesson the check belongs to (an HTML lesson) and add a quiz block: choose the quiz module in Quiz module, then Add block. Put it last so learners read the lesson first.

Learners do not see the knowledge check as a separate module in the course outline — only inside the lesson. Untick the box to turn the module back into a graded quiz; nothing was recorded while it was a knowledge check, so there are no attempts to clean up.

Generate questions with AI (LMS-586)

Available only when your platform has AI features enabled. The button does not appear otherwise.

The AI drafts quiz questions from source text you provide — it never invents material beyond what you paste, and it never adds anything to the quiz on its own. You review every draft and choose which to keep.

  1. In the quiz builder, click Generate with AI.
  2. Paste the course document’s text into Source text (a few paragraphs at minimum). Long documents are split into sections automatically so questions cover the whole text, not just the opening pages.
  3. Choose how many Questions to draft (1–20) and the output Language (English or French).
  4. Click Generate draft questions and wait — longer documents take longer.
  5. Review the drafts: each shows the question, its type, and the correct answer(s). Untick any you don’t want, then click the add button (it reads Add 3 questions when three are ticked). Added questions become ordinary quiz questions you can edit like any other.

Good to know:

  • If you asked for fewer questions than the document has sections, a notice tells you part of the document was not examined — raise the question count or generate again with the remaining text.
  • Generated questions can be wrong or miss nuance. Verify each against the source before publishing — you are the author of record, the AI is a drafting assistant.
  • Your source text is processed in Canada (AWS ca-central-1) and is never used to train any model.

Import questions from a file — CSV, GIFT or AIKEN (LMS-749, LMS-873)

If your questions already exist outside the platform — generated with an AI tool, kept in a spreadsheet, or exported from Moodle or another question-authoring tool — you can upload them in one step instead of entering each one by hand. Three formats are accepted:

FormatFileWhere it comes from
CSV template.csvOur template (below) — any spreadsheet application
GIFT.gift or .txtMoodle’s question export (Question bank → Export → GIFT format) and most authoring tools
AIKEN.txtSimple multiple-choice files; Moodle and many tools export it
  1. In the quiz builder, click Import questions. The import panel opens.
  2. Leave File format on Detect automatically, or pick the format if you know it. Detection uses the file extension (.csv, .gift) and, for .txt files, the content: ANSWER: lines mean AIKEN, {…} answer blocks mean GIFT.
  3. Under Question file, choose your file (maximum 1 MB, 500 questions).
  4. Nothing is imported yet. The panel checks the file and shows:
    • the format it read,
    • how many questions are ready to import, and a preview list of them,
    • every question that will be skipped, with its row (CSV) or line (GIFT / AIKEN) number and the reason.
  5. If the preview is right, click the import button (it reads Import 12 questions for twelve). Otherwise click Cancel, fix the file, and choose it again. Changing File format re-checks the same file.
  6. Imported questions are added to the end of the quiz and are editable afterwards like any other question. The report stays on screen so you can fix the skipped questions and import a file containing just those.

Every format goes through the same checks — question text up to 2,000 characters, choices up to 500 characters, 2–8 choices (2–6 in the CSV template, which has six choice columns), one correct answer for single-answer multiple choice — so a question that would be refused in the builder is refused in the import too, with a reason.

CSV template columns

Click Download CSV template and open it in any spreadsheet application. It contains one example row per supported type. Fill in one row per question, keeping the header row unchanged.

ColumnRequiredNotes
typeYesmultiple_choice (or mcq), true_false (or tf), multi_select, short_answer, essay, file_upload
questionYesThe question text (max 2,000 characters)
choice_a … choice_fChoice types2–6 choices; leave unused columns blank. For True/False, leave blank to get standard True/False labels
correctYes (except essay / file upload)Multiple choice: one letter (B). Multi-select: letters separated by ; (A;C). True/False: TRUE or FALSE (VRAI/FAUX accepted). Short answer: accepted answers separated by ;
explanationNoShown as answer feedback (max 2,000 characters)
pointsNoWhole number 1–10; blank = 1

File rules: comma-separated CSV (semicolons are reserved for multi-value cells), quoted fields for text containing commas, maximum 500 questions per file. Column order does not matter and extra columns are ignored.

GIFT files

GIFT is Moodle’s plain-text format. Separate questions with a blank line (a question itself must not contain one). A sample file:

// Lines starting with // are comments and are ignored.
$CATEGORY: Geography

::Capital of Canada:: What is the capital of Canada? {
  =Ottawa#Right — the capital since 1857.
  ~Toronto#No, Toronto is the largest city.
  ~Vancouver
}

::Pacific:: The Pacific is the largest ocean on Earth. {T}

::Australia:: What is the capital of Australia? {=Canberra =Canberra ACT}

::Borders:: Which countries border France? {
  ~%50%Spain
  ~%50%Belgium
  ~%-100%Portugal
  ####Portugal borders Spain, not France.
}

::Tectonics:: Explain how tectonic plates create mountain ranges. {}

Canada's capital is {=Ottawa ~Toronto} in Ontario.

How each GIFT construct is imported:

GIFTImported asNotes
{=right ~wrong ~wrong}Multiple choice (one answer)Answers keep their order
{~%50%A ~%50%B ~%-100%C}Multiple selectAllowed only when there is no = answer and the positive weights add up to 100 %. Every positively weighted answer is correct; the question is scored all-or-nothing, like any multiple-select question
{T} {TRUE} {F} {FALSE}True / False
{=answer =other answer}Short answerEach = answer is an accepted answer
{}Essay (manually graded)
Text {=a ~b} more text.Multiple choice”Missing word” format: the gap is shown as _____ in the question
::title::—Dropped; questions have no separate title
[html] [markdown] [plain] [moodle]—[html] is reduced to plain text (tags removed, entities decoded); the others are kept as written
####general feedbackExplanationShown to the learner after they submit
=answer#feedbackExplanationUsed only when there is no #### general feedback: the feedback written on the correct answer(s). Feedback on wrong answers is not imported — questions have one explanation, not one per choice
{T#wrong-answer feedback#right-answer feedback}ExplanationThe right-answer feedback
~%-50%wrong (negative weight)A wrong answerThere is no negative marking
\~ \= \# \{ \} \: \\The literal character\n is a line break
$CATEGORY:—Ignored

These GIFT question types have no equivalent here, so the question is skipped and reported — never silently dropped:

GIFTReported as
Matching — {=Canada -> Ottawa =France -> Paris}”matching questions (->) are not supported”
Numerical — {#1857}, {#3.14:0.01}, {#3.1..3.2}”numerical questions ({#…}) are not supported”
Partial credit — =%50% on a one-answer or short-answer question, or multi-answer weights that do not add up to 100 %“partial-credit weights (%50%) are not supported…”
Text with no {…} block (a Moodle description)“no answer block {…}”
Two or more {…} blocks in one question (embedded / cloze)“more than one answer block {…}”

Points: GIFT has no points field — every imported question is worth 1 point. Change it afterwards in the builder if needed.

AIKEN files

AIKEN holds single-answer multiple-choice questions only:

What is the capital of Canada?
A. Toronto
B. Ottawa
C. Vancouver
ANSWER: B

Quelle ville est la capitale du Québec?
A) Montréal
B) Québec
C) Trois-Rivières
ANSWER: B
  • The question text is everything before the first option (it may span several lines).
  • An option is a capital letter, then . or ), a space, and the text.
  • ANSWER: gives the letter of the correct option and ends the question. A blank line between questions is optional.
  • Files saved on Windows (CRLF line endings) or with a UTF-8 BOM, and accented French text, import as-is. Save the file as UTF-8.

Import troubleshooting

MessageCauseFix
”The file format wasn’t recognized”Detection found no CSV header, no GIFT {…} block and no AIKEN ANSWER: linePick the format under File format, or check the file is the one you meant
”The file is too large — maximum 1 MB”The file is over 1 MBSplit it into several files
”The file is missing required columns”CSV header row was edited or the file isn’t comma-separatedRe-download the template; keep type, question, correct in the header
”unknown question type”The CSV type cell isn’t one of the supported valuesUse the exact type names from the table above
”multiple choice (one answer) allows only one correct answer”Several correct answers on a one-answer question (CSV: several letters; GIFT: several =; AIKEN: several letters after ANSWER:)Use multi_select (CSV) or ~%50% weights (GIFT), or keep one answer
”a correct letter points at an empty choice”CSV correct names a choice column that’s blankFill the choice cell or change the letter
”missing the ANSWER: line”An AIKEN question’s options are not followed by ANSWER: XAdd the line
”the ANSWER letter does not match any option”ANSWER: E when the options stop at D, or ANSWER: followed by a wordUse the letter of one of the options
”no lettered options…”AIKEN text followed by a blank line or ANSWER: with no A. / B) options — often a title line at the top of the fileRemove the stray line, or add the options
”could not be read — check the braces…”A GIFT { without its }, an unterminated ::title, or answer text not starting with = or ~Fix the braces; escape a literal { } = ~ # : with a backslash
”too many choices (max 8)“A GIFT or AIKEN question with 9 or more answersSplit the question or remove choices
Questions skipped, others importedPer-question validation failed for those onlyFix the reported questions and import a file containing just them

Configuration reference

FieldWhereNotes
Passing scoreQuiz settings1–100 %
Max attemptsQuiz settings0 = unlimited
Time limitQuiz settingsMinutes; blank = none
Shuffle questions, Shuffle choicesQuiz settingsPer-attempt randomization
Knowledge check, not gradedModule edit (quiz modules)Practice inside a lesson: instant feedback, unlimited retries, nothing recorded, never required, not listed in the outline
Question typeAdd/Edit questionmultiple_choice / true_false / multi_select / short_answer / essay / file_upload
PointsAdd/Edit question1–10 per question
Accepted answersAdd/Edit question (short answer)1–8 rows; any one match scores full points
Case-sensitiveAdd/Edit question (short answer)Default off
Ignore extra spacesAdd/Edit question (short answer)Default on

Reordering questions

Question order is pedagogy, not decoration — a warm-up first, the hard case last — so the order you see in the builder is the order a learner gets (unless the quiz shuffles, see below).

Each question row has ↑ and ↓ buttons. They are ordinary buttons, so the order can be changed from the keyboard and is announced by a screen reader; the button at each end of the list is disabled rather than hidden, so the controls do not move under your pointer as you work down a list.

Each move saves immediately. The whole order is written, not a single swap, so two people reordering the same quiz at once end up on one of the two orders rather than on a broken one.

Shuffle overrides order. If the quiz has Shuffle questions on, the order here is the authoring order and each learner still gets a random one. Turn shuffle off if the sequence matters.


Reviewing attempts

The Attempts panel sits under the question list, and it answers the question a score cannot: what did they actually write? On a published course, where the question builder is read-only, open it with the Attempts button on the quiz module’s row.

Each row is one attempt — the learner, which attempt it was, when it started, when it was submitted, how long it took, and the score with pass or fail. An attempt still in progress is shown as such and cannot be opened: there is nothing final to review yet.

View answers expands one attempt into its questions, in quiz order:

ShownNotes
Their answerThe choices they selected, resolved to the choice text, or their typed answer. Coloured by correctness.
Correct answerOmitted for essay and file-upload questions, which have no single correct answer
Instructor feedbackWhatever was written when the answer was graded

A question the learner skipped is listed with “(no answer given)” rather than being left out — a skipped question is information.

File-upload answers show the filename as a button. Clicking it mints a download link that expires after 15 minutes; the link is never embedded in the page, and a file that failed the malware scan is refused.

Who can see attempts

Reviewing someone else’s answers needs the same reporting permission as the rest of the analytics, and it is narrowed twice over:

RoleSees
Owner, AdminEvery attempt
InstructorAttempts on the quizzes of the courses they are assigned to
Group AdminAttempts by members of their assigned groups
ManagerAttempts by people in their reporting chain

A Group Admin with no groups assigned sees nothing, rather than everything.

The same panel appears on Analytics → Learner Drill-Down, per course, for the times the question starts from a person rather than from a quiz.


Troubleshooting

SymptomCauseFix
”Add at least two choices”Fewer than two non-empty choicesAdd more choices
”Add at least one accepted answer.”A short-answer question was saved with every accepted-answer row blankType at least one accepted answer
Learners marked wrong despite a correct-looking answerThe accepted list is missing that variant, or the case-sensitive option is onAdd the variant as a new accepted answer, or turn off case-sensitivity
An accented answer is marked wrongAccents are significant and are never foldedAdd the unaccented spelling as an additional accepted answer
”Mark at least one choice correct”No correct answer selectedSelect/check the correct choice(s)
A knowledge check does not appear in the lessonThe quiz module is flagged, but no quiz block points at itAdd a quiz block to the lesson and choose the module
A learner sees a full quiz instead of instant feedbackThe module is not flagged as a knowledge checkEdit the module and tick Knowledge check, not graded
Manage Questions button missingModule isn’t a Quiz / Assessment type, or the course is published and no draft is open (the row then shows only Attempts)Use a Quiz / Assessment module; on a published course click Start new version