Skip to main content

Form Builder

The builder lives at Dashboard → your server → Forms → New form (or Edit on an existing form). This page is the complete tour of what it can do.

Only managers (owner / admin) can create and edit forms. Reviewers can see them read-only.


Fields

Click Add field to open the field picker — an icon grid of every available type. Pick one and it's inserted; then set its label, description, placeholder, and whether it's required.

Text & contact

TypeNotes
Short textSingle line. Optional min/max length and regex pattern.
Long textMulti-line textarea.
EmailValidated as an email address.
URLValidated as a URL.
PasswordMasked input (e.g. an access code an applicant should type).
NumberNumeric, with optional min / max.
PhoneCountry dial-code selector (flag + code) plus a digits-only field; stored as +<dial> <number>.

Choices

TypeNotes
Single choiceRadio buttons, one answer.
Multiple choice / Multi-selectCheckboxes, zero or more answers.
DropdownA select menu — good for long option lists.
Yes / NoA boolean toggle. Each answer (Yes and No) can carry a points value for scoring.
ConsentA single checkbox (e.g. "I agree to the rules").
Age checkA single checkbox confirmation.

Each choice option can carry a points value for scoring.

Date & time

TypeNotes
DateStyled calendar popover (not the native browser picker).
TimeStyled hour / minute selector.
Date & timeCombined.

Ratings

TypeNotes
Star rating1–N stars (default 5).
NPSFixed 0–10 buttons.
Emoji scale1–5 emoji buttons.
SliderMin / max / step (default 0–100).

Rich inputs

TypeNotes
File uploadAny file, with a size and MIME limit. Stored securely (see Privacy).
Image uploadSame as file upload, restricted to images.
SignatureA canvas the applicant draws on; saved as a PNG via the upload pipeline.
MatrixA grid — rows × columns, one choice per row.
CalculatedA read-only field derived from other answers — see Calculated fields.

Layout blocks

Non-input blocks for structure — headings, descriptive text, dividers. They never count as answers and are never required.

Change a field's type

Picked the wrong type, or want to turn a short-text question into a dropdown? Use the type selector at the top of any field card to switch it in place. The field keeps its label, help text, position, and conditional logic; type-specific settings that no longer apply are reset (a note warns you when that happens). Options and matrix rows are kept when the new type also uses them (e.g. single choice to dropdown). Existing answers are never touched.


Multi-step pages

A form is a list of pages. With one page it's a single screen; add more and the builder renders a multi-step form with Next / Back buttons and a progress bar.

  • Add, remove, reorder, and title pages in the builder.
  • Each page validates its own required fields before Next advances.
  • A page whose fields are all hidden by conditional logic is automatically skipped.

Conditional logic

Every field can carry rules that react to other answers. A rule has an action, a target field, an operator, and a value:

  • Actions: show the field, hide it, make it required, or jump to a page (skip to).
  • Operators: equals, not equals, contains, greater than, less than, is empty, is not empty, … (8 in total).

Hidden fields are never validated and never required — visibility, progress, and validation all follow the same resolved path. Combined with skip to, you can branch the flow: "if you picked Staff, jump to page 3."


Scheduling

Each form can have an optional open / close window:

  • Opens at — before this time the form shows "Opens <time>" and rejects submissions.
  • Closes at — after this time it's closed. Within the last 24 hours before closing it shows an "Ending soon" banner.

Times are shown in each viewer's local timezone. Closed forms drop out of the public index automatically.

Countdown teaser

Turn on Countdown on the public hub (in the scheduling section) to build hype for a form that opens later. While the form is scheduled:

  • Its card on the public hub shows a live countdown to the opening time instead of a plain date.
  • The form page shows the same countdown and, the moment it opens, fires a confetti burst and reveals the form automatically.

Off by default — a scheduled form otherwise just shows its opening time.


One submission per person

By default, each signed-in applicant can have only one active submission per form. While their submission is still open (not yet at a terminal status), reopening the form sends them straight to its status page instead of a blank form, and the submit endpoint refuses a duplicate. Once a reviewer sets a terminal status (Accepted, Rejected, Withdrawn, or a custom terminal status) they can apply again.

  • It only applies to signed-in applicants — anonymous submissions can't be tied to a person.
  • Turn it off in the builder (the One active submission per person toggle) for forms that should accept repeated submissions, e.g. surveys or feedback.

Quiz & scoring

Give choice options a points value and MSK Forms scores each submission automatically. Yes / No fields join the same system: give the Yes and the No answer their own points in the field editor.

  • The score is the sum of points across the chosen options, computed server-side (the client preview is never trusted).
  • Forms where no option has points stay score-less — nothing changes for non-quiz forms.
  • The score shows in the submissions table and on the submission detail page.
  • The score is also available to automations under the reserved field Score — e.g. "if Score ≥ 80 → Accepted" for auto-acceptance.

Calculated fields

A Calculated field derives its value from other answers with a formula:

  • Syntax: {fieldId} placeholders plus + - * / ( ) and numbers — e.g. {price} * {qty}.
  • Reference resolution: Number/Rating → the value; Single choice → the option's score; Multi-select → the sum; booleans → 1 / 0; empty/unknown → 0.
  • The value is computed server-side and stored with the answers — the client preview is never authoritative.
  • It renders as a read-only live preview; it's never editable or required.

In the builder you write the formula in a textarea and click chips to insert referenceable fields.


A/B testing

Pro feature

A/B testing requires a Pro subscription.

Split-test a form's copy:

  • Define variants in the builder — each with a name, a weight, and optionally an overriding title and/or description.
  • The public page assigns a variant stickily (a cookie, otherwise weighted-random) and shows that variant's copy.
  • Views are tracked on mount; conversions are tracked when the form is submitted with that variant.
  • A results page (per form) shows Views / Submissions / Conversion-% and marks the leader once a variant has ≥ 10 views.

Automations

Pro feature

Automations require a Pro subscription.

Per-form when-then rules. On submission, the first rule whose conditions all match is applied:

  • Conditions use the same field-condition form and operators as conditional logic, AND-combined (an empty condition set always matches).
  • Action (v1): set the submission to a target status.

Because the action runs through the same status-change path as a manual review, it cascades everywhere: the status event, the applicant DM, webhooks, and the live status page. The classic use case is auto-acceptance: "if Score ≥ 80 → Accepted", which (with an accepted role configured) also hands out the Discord role.


Per-form overrides

Some guild-wide settings can be overridden on a single form:

  • Review channel — post this form's new-submission embeds to a specific channel instead of the guild default.
  • Accepted role(s) — grant these role(s) on acceptance instead of (or in addition to) the guild default. Multiple roles are supported (comma-separated).

See Discord Bot for how these drive the review workflow.


Categories

Group your forms into categories — e.g. In-game jobs vs Staff applications. Manage them under Dashboard → your server → Categories (managers only): add, rename, recolor, and reorder. Then pick a category for each form in the builder.

Categories drive the grouping on your public form hub — applicants see your forms split into sections, with uncategorized forms under Other forms. See Branding & Custom Domains → Public form hub.


Import & export (JSON)

Pro feature

Importing and exporting a form definition requires a Pro subscription.

Move a form between servers, keep a backup, or reuse a template:

  • Export — download a form's definition (its structure and settings, not its submissions) as a JSON file from the Forms list.
  • Import — upload a JSON file as a new form, or replace an existing form's content from a file. Imported as new, the slug is reused (and de-duplicated if already taken); on replace, the form keeps its current public link. The form's category travels with the file by name and is recreated on the target server if missing.

Saving & going live

  • Save stores the form as a draft.
  • Set the status to Live to start accepting submissions (subject to any schedule).
  • Delete removes a form and its submissions (cascade), including any uploaded files.

Preview before you publish. Every form has a Preview action (managers, opens in a new tab) that renders the exact public form — branding, multi-step flow, all field types — for any status, including drafts. Preview validates and lets you walk the pages like the real thing, but never submits.

Free plan limit

The Free plan allows up to 3 forms per server, and Pro features (CSS, automations, A/B, custom domain) are stripped or gated for Free guilds. See Plans & Limits.


info

Next: Submissions & Review — what happens after applicants hit submit.