Skip to main content

Questionnaire Task

Version: v1 (current)

A flexible survey and assessment tool for collecting self-report data, demographic information, and structured responses from participants.

Overview

The Questionnaire task provides a comprehensive system for administering surveys, psychological assessments, demographic forms, and any structured collection of participant responses. It supports multiple question types (multiple choice, scales, text input, etc.), conditional logic, validation rules, and branching.

Unlike behavioral tasks that measure performance, questionnaires capture subjective experiences, personal information, attitudes, symptoms, and self-reported characteristics. They're essential for correlating behavioral data with individual differences, screening participants, and collecting contextual information.

The task is commonly used for:

  • Demographic surveys: Age, education, language, medical history
  • Psychological assessments: Depression (BDI), anxiety (GAD-7), personality (Big Five)
  • Task ratings: Difficulty, effort, motivation, strategy use
  • Screening: Eligibility criteria, exclusion factors
  • Manipulation checks: Verify experimental manipulations worked
  • Debriefing: Post-study experience and feedback

Why Researchers Use This Task

  1. Individual Differences: Correlate task performance with traits, symptoms, demographics
  2. Participant Characterization: Describe sample characteristics
  3. Screening: Determine eligibility or group assignment
  4. Subjective Experience: Capture ratings of difficulty, confidence, engagement
  5. Validated Scales: Administer standardized psychological assessments
  6. Mixed Methods: Combine quantitative behavior with qualitative self-report

Current Implementation Status

Fully Implemented:

  • ✅ 12 question types: scale, numeric, text, textarea, mcq, multi, dichotomous, date, slider, matrix, ranking, image_choice
  • ✅ Required and optional questions
  • ✅ Validation rules (min/max length for text, min/max value for numeric)
  • ✅ Conditional display logic (eq/neq/gt/lt operators)
  • ✅ Multi-page questionnaires (questions_per_page setting)
  • ✅ Progress tracking (progress bar with percentage)
  • ✅ Matrix/grid questions (fully implemented)
  • ✅ Visual Analog Scales / sliders (fully implemented)
  • ✅ Randomized question AND option order
  • ✅ Per-question response time tracking
  • ✅ RTL support
  • ✅ Image-based choice questions
  • ✅ Ranking questions
  • ✅ Question templates (Demographics, Likert-5, Likert-7, VAS, Yes/No)
  • ✅ Import/Export questions as JSON
  • ✅ Flat CSV-ready data export

Configuration Parameters

Questionnaire Structure

ParameterTypeDefaultDescription
Titlestring''Questionnaire title
Randomize QuestionsbooleanfalseRandomize question presentation order
Show ProgressbooleanfalseDisplay progress bar during participation
Show Question NumbersbooleantrueDisplay Q1, Q2... numbering
Questions Per Pagenumber0Questions per page (0 = all on one page)
Questionsarray[]Array of question objects

Question Object Structure

{
id: "q1", // Unique identifier
type: "mcq", // Question type
text: "What is your age range?", // Question text
required: true, // Must be answered
options: [ // For option-based types (mcq, multi, dichotomous, ranking, image_choice)
{ label: "18-25", marker: "age_18_25", image_url: "..." },
{ label: "26-35", marker: "age_26_35" }
],
min: 1, // For numeric/slider: minimum value
max: 100, // For numeric/slider: maximum value
step: 1, // For numeric/slider: step size
label_min: "Not at all", // For slider: left endpoint label
label_max: "Extremely", // For slider: right endpoint label
scale_labels: ["Never", "Rarely", "Sometimes", "Often", "Always"], // For scale: option labels
items: ["Item 1", "Item 2"], // For matrix: row items
min_length: 10, // For text/textarea: minimum character count
max_length: 500, // For text/textarea: maximum character count
randomize_options: false, // Randomize option order
condition: { // Conditional display
question_id: "q0",
operator: "eq", // eq, neq, gt, lt
value: "Yes"
}
}

Question Types

TypeDescriptionResponse Format
scaleLikert-style rating scaleNumber
numericNumeric inputNumber
textShort text inputString
textareaLong-form textString
mcqMultiple choice (single selection)String (option marker)
multiMultiple selection checkboxesArray of strings (option markers)
dichotomousYes/No questionString (option marker)
dateDate pickerDate string (YYYY-MM-DD)
sliderVisual Analog Scale / continuousNumber
matrixGrid with shared scale for multiple itemsObject (keyed by item index)
rankingRank items in orderArray of strings (ordered items)
image_choiceImage-based selectionString (option marker)

Presentation Parameters

ParameterTypeDefaultDescription
Show ProgressbooleanfalseDisplay progress bar
Show Question NumbersbooleantrueDisplay Q1, Q2... numbering
Questions Per Pagenumber0Questions per page (0 = all on one page)

Meta-Translation Keys

All participant-facing labels are customizable through meta-translations:

KeyDefaultDescription
questionnaire_submitSubmitSubmit button text
questionnaire_previousPreviousPrevious page button
questionnaire_required_indicator*Required field symbol
questionnaire_yesYesDichotomous default Yes label
questionnaire_noNoDichotomous default No label
questionnaire_required_fields_errorPlease answer all required questions...Validation error message
questionnaire_progressQuestion {current} of {total}Progress text template

Data Output

Markers and Responses

The task records several markers during the questionnaire and one response object per question on submission.

Markers (questionnaire_order):

{
"type": "questionnaire_order",
"ts": "2024-01-01T00:00:01.000Z",
"hr": 1234.56,
"data": {
"order": ["q1", "q2", "q3"]
}
}

Markers (stimulus_shown):

{
"type": "stimulus_shown",
"ts": "2024-01-01T00:00:01.000Z",
"hr": 1234.56,
"data": {
"order": ["q1", "q2", "q3"]
}
}

Additional markers logged via the task's marker base:

  • {task}_q{N} -- Participant interacted with question N (1-based)
  • {task}_q{N}_o{M} -- Participant selected option M (1-based) on question N (for option-based question types)

Markers (questionnaire_submitted):

{
"type": "questionnaire_submitted",
"ts": "2024-01-01T00:00:30.000Z",
"hr": 30234.56
}

Response Data (one per question on submission):

{
"id": "q1",
"marker": "task_0_q1",
"index": 0,
"type": "scale",
"value": 4,
"latency_ms": 2345,
"display_duration_ms": 5678
}
FieldTypeDescription
idstringQuestion identifier (e.g., "q1")
markerstringQuestion marker string
indexnumberQuestion display index (0-based)
typestringQuestion type
valuevariesParticipant's answer (number for scale/numeric/slider, string for mcq/text/date, array for multi/ranking, object for matrix)
latency_msnumber/nullTime from question display to first interaction
display_duration_msnumber/nullTotal time question was displayed

Summary Artifacts

Full data artifact (questionnaire_{index}.json):

{
"title": "Survey Title",
"answers": {
"q1": 4,
"q2": "Yes",
"q3": ["Option A", "Option B"]
},
"questions": [],
"order": ["q1", "q2", "q3"],
"response_times": {
"q1": {
"latency_ms": 2345,
"display_duration_ms": 5678
}
},
"total_duration_ms": 45000
}

Flat CSV-ready artifact (questionnaire_{index}_flat.json):

{
"q1": 4,
"q1_latency_ms": 2345,
"q1_display_duration_ms": 5678,
"q2": "Yes",
"q2_latency_ms": 1234,
"q2_display_duration_ms": 3456,
"total_duration_ms": 45000
}

Example Questionnaires

Demographics Survey

{
title: "Background Information",
questions: [
{
id: "age",
type: "numeric",
text: "What is your age?",
required: true,
min: 18,
max: 100
},
{
id: "gender",
type: "mcq",
text: "Gender",
options: [
{ label: "Male", marker: "male" },
{ label: "Female", marker: "female" },
{ label: "Non-binary", marker: "nonbinary" },
{ label: "Prefer not to say", marker: "prefer_not_to_say" }
],
required: true
},
{
id: "education",
type: "mcq",
text: "Highest level of education completed",
options: [
{ label: "Less than high school", marker: "less_than_hs" },
{ label: "High school diploma", marker: "hs_diploma" },
{ label: "Some college", marker: "some_college" },
{ label: "Associate degree", marker: "associate" },
{ label: "Bachelor's degree", marker: "bachelor" },
{ label: "Master's degree", marker: "master" },
{ label: "Doctoral degree", marker: "doctoral" }
],
required: true
},
{
id: "handedness",
type: "mcq",
text: "Which hand do you primarily use for writing?",
options: [
{ label: "Right", marker: "right" },
{ label: "Left", marker: "left" },
{ label: "Both equally", marker: "both" }
],
required: true
}
]
}

Post-Task Ratings

{
title: "Task Experience",
questions: [
{
id: "difficulty",
type: "scale",
text: "How difficult did you find the task?",
scale_labels: ["Very Easy", "", "", "", "", "", "Very Difficult"],
required: true
},
{
id: "effort",
type: "scale",
text: "How much effort did you put into the task?",
scale_labels: ["Minimal Effort", "", "", "", "", "", "Maximum Effort"],
required: true
},
{
id: "strategy",
type: "textarea",
text: "Please describe any strategies you used to complete the task.",
required: false,
max_length: 500
}
]
}

Screening Questionnaire with Conditional Logic

{
title: "Eligibility Screening",
questions: [
{
id: "color_vision",
type: "dichotomous",
text: "Do you have normal or corrected-to-normal color vision?",
options: [
{ label: "Yes", marker: "yes" },
{ label: "No", marker: "no" }
],
required: true
},
{
id: "color_deficiency_type",
type: "mcq",
text: "What type of color vision deficiency do you have?",
options: [
{ label: "Red-green", marker: "red_green" },
{ label: "Blue-yellow", marker: "blue_yellow" },
{ label: "Complete color blindness", marker: "complete" },
{ label: "Unsure", marker: "unsure" }
],
required: true,
condition: {
question_id: "color_vision",
operator: "eq",
value: "no"
}
},
{
id: "vision_correction",
type: "dichotomous",
text: "Do you wear glasses or contact lenses?",
options: [
{ label: "Yes", marker: "yes" },
{ label: "No", marker: "no" }
],
required: true
},
{
id: "wearing_correction",
type: "dichotomous",
text: "Are you wearing your glasses/contacts right now?",
options: [
{ label: "Yes", marker: "yes" },
{ label: "No", marker: "no" }
],
required: true,
condition: {
question_id: "vision_correction",
operator: "eq",
value: "yes"
}
}
]
}

Validated Psychological Scale (Simplified GAD-7)

{
title: "Generalized Anxiety Disorder 7-Item Scale (GAD-7)",
questions: [
{
id: "gad1",
type: "scale",
text: "Over the last 2 weeks, how often have you been bothered by: Feeling nervous, anxious, or on edge",
scale_labels: ["Not at all", "Several days", "More than half the days", "Nearly every day"],
required: true
},
{
id: "gad2",
type: "scale",
text: "Over the last 2 weeks, how often have you been bothered by: Not being able to stop or control worrying",
scale_labels: ["Not at all", "Several days", "More than half the days", "Nearly every day"],
required: true
}
// ... remaining GAD-7 items
]
}

Design Recommendations

Question Design

  • Clarity: Use simple, unambiguous language
  • Neutrality: Avoid leading or loaded questions
  • Single Concept: One question per item (avoid double-barreled)
  • Response Options: Mutually exclusive and exhaustive
  • Sensitive Topics: Include "Prefer not to answer" option

Scale Design

  • Odd vs. Even: Odd-numbered scales allow neutral midpoint; even force direction
  • Anchors: Label endpoints clearly; optionally label all points
  • Range: 5-7 points typical for Likert; 0-10 for pain/difficulty scales
  • Directionality: Keep direction consistent (high = more of construct)

Questionnaire Length

  • Completion Time: Aim for <10 minutes for non-clinical samples
  • Question Count: 15-30 questions typical; >50 risks fatigue
  • Pages: Break into 3-5 pages for better experience
  • Progress Bar: Helps completion rates, especially for longer surveys

Required vs. Optional

  • Demographics: Age, gender often required for analysis
  • Screening: Eligibility criteria must be required
  • Experience: Post-task ratings can be optional
  • Sensitive: Health, income often better as optional

Common Issues and Solutions

IssueSolution
Low completion ratesShorten questionnaire; make optional questions truly optional
Straight-lining (same answer repeated)Reverse-code some items; include attention checks
Missing data on key variablesMake critical questions required with clear instructions
Response bias (social desirability)Assure anonymity; use validated scales; consider forced-choice formats
Participants rush throughAdd time stamps; flag suspiciously fast completions (<2s/question)
Confusion about scalesProvide clear anchors and examples

Validated Scales Integration

When using validated psychological scales:

  1. Permission: Ensure you have rights to use the scale
  2. Exact Wording: Use verbatim question and response option text
  3. Scoring: Follow published scoring algorithms
  4. Interpretation: Use published norms and cutoffs
  5. Citation: Reference original scale development paper

Common Validated Scales:

  • Depression: PHQ-9, BDI-II, CES-D
  • Anxiety: GAD-7, STAI, BAI
  • Personality: Big Five Inventory (BFI), HEXACO
  • Cognitive Complaints: Cognitive Failures Questionnaire (CFQ)
  • Sleep: Pittsburgh Sleep Quality Index (PSQI)

Data Analysis Considerations

Quantitative:

  • Compute scale scores (sum, mean, or weighted)
  • Test internal consistency (Cronbach's α)
  • Correlate with behavioral measures
  • Group differences (t-tests, ANOVA)

Qualitative (Open-Ended):

  • Thematic analysis of text responses
  • Content coding
  • Word frequency/sentiment analysis

Missing Data:

  • Report missingness rates
  • Use appropriate imputation if necessary (mean, regression, multiple imputation)
  • Consider listwise vs. pairwise deletion

References

Questionnaires are general tools; references depend on specific scales used. For questionnaire design:

  • Krosnick, J. A., & Presser, S. (2010). Question and questionnaire design. In P. V. Marsden & J. D. Wright (Eds.), Handbook of Survey Research (2nd ed., pp. 263-313). Emerald Group Publishing.

  • DeVellis, R. F. (2016). Scale Development: Theory and Applications (4th ed.). SAGE Publications.

For specific validated scales, cite the original development paper (e.g., Spitzer et al., 2006 for GAD-7).

See Also

  • Instructions - For presenting information without collecting responses