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 withbutton-label:). - One text input may carry
main-input: true— the survey's centerpiece answer, used by AI participation to anchor the conversation (only valid oninput-text).