← All docs

Input types

What you can ask participants, what they experience, and what you get back. Every input is required by default — a page's continue button unlocks only once each input on it is answered. Adding allow-na: true to an input gives participants an explicit "Not applicable" checkbox: ticking it counts as an answer and stores not-applicable instead of a value.

Inputs are configured in the survey editor or in survey YAML. Give elements a stable id: — it becomes the field name your dashboard and exports key answers by (the editor does this automatically).

Voice — spoken stories

- type: input-voice
  id: story
  question: "What made you smile today?"
  allow-na: true

Participants record themselves (a minute or so), then review: they can listen back, edit the automatic transcript, re-record, or opt out of transcription entirely before recording — a checkbox they control. The recording alone satisfies the input; a typed transcript without audio does too.

You see the transcript in Stories and the audio is stored with the submission. Transcription runs on the operator's own servers — no third-party speech service. A survey may contain several voice inputs; each records and stores independently.

Text — free writing

- type: input-text
  id: hashtag
  question: "What would be the hashtag for your story?"
  multiline: true   # omit for a single line

A single line by default, a resizable paragraph box with multiline: true. Shown verbatim in Stories.

Multiple choice

- type: input-mcq
  id: fruit
  question: "Pick one fruit"
  options: ["apple", "banana", "cherry"]

Radio buttons by default (needs at least 2 options). Add checkboxes: true for multi-select — which also allows a single option, the "I agree" consent-gate pattern:

- type: input-mcq
  id: consent
  question: "Tick to confirm you agree to take part."
  options: ["I agree"]
  checkboxes: true

The dashboard shows answer counts as bars; clicking a bar filters the other visualizations.

Dyad — two-pole slider

- type: input-dyad
  id: energy
  question: "This experience left me..."
  options: ["energized", "drained"]   # exactly two poles

Participants place a marker between the two poles. The dashboard summarizes the distribution and mean.

Static elements

Not inputs — structure and context between questions:

- type: static-headline
  text: "Tell us your story"
- type: static-text
  body: "A paragraph of context for the next section."
- type: static-image
  src: "https://…/figure.png"
  alt: "Description for screen readers"
  caption: "Optional caption"

Survey-wide settings worth knowing

  • language: — one of 22 EU languages; all system copy around your content (buttons, recorder, validation, dates) follows it. Your questions render verbatim as written.
  • Pages: elements group into pages:; navigation buttons are injected automatically (override the label with button-label:).
  • One text input may carry main-input: true — the survey's centerpiece answer, used by AI participation to anchor the conversation (only valid on input-text).