Documentation menu

Quiz block

A scored, multi-question quiz: add a Quiz block, then drop Quiz question children into it, each with its own multiple-choice options and a correct answer. It's the studio's tool for lead-scoring quizzes, knowledge tests, and personality-style "what's your result" sends where the outcome actually depends on what the recipient answers.

How it works

Unlike poll and rating, a quiz has no link-based tier-2 fallback — a multi-question, multi-option combination can't be enumerated as a set of plain GET links the way a single poll vote can. So the mailed HTML's only interactive path is a real in-email <form method="post"> posting directly to MailInApp's interactions endpoint, wrapped in a kinetic-only tier: every question renders as a labeled radio group, and submitting posts every answer in one shot without leaving the inbox. Wherever that kinetic form is CSS-hidden (Outlook, or any client that can't post an in-email form), mail instead shows a single always-visible "Take the quiz" button that opens the same quiz on the hosted live view — there, the live view page itself is the quiz, so it renders just the bare working form with no extra wrapping button of its own.

Scoring happens entirely server-side. On submit, the interactions endpoint re-reads the quiz block's own answer key from the project's stored tree and checks each submitted answer against it — a client-reported score is never trusted. The result is written onto the event as { answers, score, total, bucket }, where bucket is "pass" or "fail" depending on whether (correct / total) * 100 cleared the block's configured pass score. If you set a Redirect after submit to a path on the live view, that redirect carries the score and total back as query parameters so the results page can show a results banner — the pass/fail message you configured, not a generic thank-you. Leaving redirect blank (or setting anything that isn't a site-relative path starting with /) falls back to the quiz block's own default results page.

If the project's survey has closed (a close date or response cap reached — evaluated only on the hosted live view, since mailed HTML is static at send time and never closes), the quiz block instead renders its title and each question's prompt as plain, non-interactive text, with a "This survey is closed to new responses" note.

Configurable fields on the Quiz block itself:

  • Title and Submit label (default "See my score") — plus title's own color and font size.
  • Pass score — the minimum percent-correct (0–100) a recipient needs to land in the "passed" bucket.
  • Message when passed / Message when not passed — the two results copy blocks shown depending on the computed bucket.
  • Redirect after submit — an optional site-relative path to send the recipient to after scoring; see above for how score/total ride along.
  • Background color, padding, border, border radius on the card.
  • Text-style overrides for the title, the question text, answer options, the submit button, and each results message independently.

Each Quiz question child carries its own Question text, a list of Options, and a Correct answer that must match one of the options exactly (case-sensitive, verbatim string match) — a mismatch means that question can never be scored correct.

Examples

Subject

How well do you know our products? Take the quiz

A software vendor can run a "what's your automation maturity level?" lead-scoring quiz gated behind a passing threshold, with the pass-score message pointing qualified leads to a demo-booking link and the fail-score message pointing everyone else to nurture content instead — see Engagement & loyalty for more on using interactive content to qualify and re-engage a list. A course provider can send a short knowledge check before a live session so instructors know where the room stands going in. A "which product line is right for you" personality-style quiz can use the pass/fail split as a simple two-way branch — recommend Product A above the threshold, Product B below it — without building real per-answer branching logic, since the copy for each bucket is exactly what the two results messages are for.

What the static fallback looks like

<div style="margin:12px 0;background-color:transparent">
  <p style="margin:0 0 10px;font-weight:700;font-size:18px;color:#111827">
    Test your knowledge!
  </p>
  <!-- kinetic <form> posting to /api/interactions omitted — hidden from
       Outlook and any client that can't post an in-email form -->
  <div style="text-align:center;margin-top:8px">
    <a href="https://mailinapp.com/v/eyJhbGci..."
       style="display:inline-block;padding:10px 20px;background-color:#4f46e5;
              color:#ffffff;border-radius:6px;text-decoration:none;
              font-size:14px;font-weight:600">
      Take the quiz
    </a>
  </div>
</div>

This is the always-visible fallback: a single button into the hosted live view, where the same quiz renders as a real, working <form> — there's no per-question or per-answer link tier the way poll and rating have.