The Qualtrics integration produces a QSF (Qualtrics Survey Format) JSON file that you can upload through the Qualtrics platform. Simple conditions are expressed as native BooleanExpressions, while complex logic falls back to JavaScript (requires a Qualtrics Premium license). The adapter supports bidirectional import/export.
Question types
| Questra block | Qualtrics element | Notes |
|---|
| Text | DB (Descriptive Block) | Static informational content. Markdown is converted to HTML. |
| Text input (single-line) | TE / SL | Text Entry with Single Line selector. |
| Text input (multi-line) | TE / ML | Text Entry with Multi Line selector. |
| Text input (number) | TE / SL | Includes ContentType: "ValidNumber" validation. |
| Text input (email) | TE / SL | Includes ContentType: "ValidEmail" validation. |
| Multiple choice (single) | MC / SAVR | Single Answer Vertical layout. |
| Multiple choice (multi) | MC / MACOL | Multi Answer Column layout. |
| Multiple choice (dropdown) | MC / DL | Drop-down List selector. |
| Matrix (single-select) | Matrix / Likert | Single Answer variant. |
| Matrix (multi-select) | Matrix / Likert | Multi Answer variant. |
| Rank order | RO / DND | Drag and Drop rank order. |
| Card sort | Matrix | ⚠️ Exported as a Matrix question. Cards become statements, categories become scale points. |
| Input list | TE / SL | ⚠️ Exported as a single Text Entry. |
| Loop | DB | ⚠️ Exported as a placeholder. Can be expanded into repeated questions if survey context is provided. |
Choice groups
Multiple choice and matrix questions support choice groups for organizing options. Groups are only emitted when a question has more than one option group — single-group questions place choices directly without a group wrapper.
Randomization
Choice groups with the randomize flag set are exported with Qualtrics’ Randomization block element, which shuffles option presentation order for each respondent.
Dynamic option groups
When a question’s options depend on another question, the adapter expands the dynamic group at export time using sample data. Each materialized choice gets a DisplayLogic condition referencing the source question.
Expressions and logic
Qualtrics uses a structured BooleanExpression JSON format for conditions, which supports a limited set of operators. The adapter maps simple JavaScript patterns to this format directly and falls back to JavaScript for anything more complex.
Native BooleanExpression support
These JavaScript patterns map directly to Qualtrics’ condition model:
| JavaScript pattern | Qualtrics BooleanExpression |
|---|
q.value == "x" | Selected / NotSelected with ChoiceLocator |
q.some(o => o.value == "x") | Selected on the matching choice |
q.value > 5 | Numeric comparison operator |
expr1 && expr2 | AND conjunction |
expr1 || expr2 | OR conjunction |
JavaScript fallback
Patterns that exceed the BooleanExpression model are exported as JavaScript in the QuestionJS field. This includes:
.every(), .filter(), .map(), .reduce(), .find()
Object.keys(), Object.values(), Object.entries()
- Ternary expressions (
cond ? a : b)
.label property access
- Complex compound expressions
JavaScript in surveys requires a Qualtrics Premium (or higher) license. The adapter emits a warning whenever it falls back to JavaScript so you know which features require the upgraded tier.
Variables and Embedded Data
Questra variables are exported as Qualtrics Embedded Data fields. Computed variable expressions are set using JavaScript in the survey flow, allowing variable values to be tracked and referenced throughout the survey.
| Questra concept | Qualtrics equivalent |
|---|
| Variable (static) | Embedded Data field |
| Variable (computed) | Embedded Data + JavaScript setter |
| Variable reference in expression | Embedded Data field reference |
Navigation
| Feature | Support |
|---|
| Conditional skip | ✅ Branch flow step with BranchLogic |
| Unconditional skip | ✅ Branch flow step (always-true condition) |
| Disqualification | ✅ EndSurvey flow step |
| Survey completion | ✅ EndSurvey flow step with custom message |
| Option show/hide | ✅ DisplayLogic on individual choices |
| Question show/hide | ✅ DisplayLogic on questions |
Navigation is expressed through Qualtrics’ Flow structure. Each conditional navigation rule becomes a Branch element with a BranchLogic containing the translated BooleanExpression. The branch routes to the target block or triggers an EndSurvey action.
Import
The Qualtrics adapter can import existing surveys by parsing the QSF JSON and reconstructing the Questra survey model. During import:
- Question types (
DB, TE, MC, Matrix, RO) are mapped back to Questra block types
- BooleanExpression conditions are parsed and converted to JavaScript expressions
- The
Flow structure is analyzed to reconstruct pages and navigation rules
- Choice groups are reconstructed from
ChoiceGroup metadata
- Embedded Data fields are imported as Questra variables
Warnings
| Condition | Severity | Message |
|---|
| Expression requires JavaScript fallback | Warning | Requires Qualtrics Premium license |
| CardSort exported as Matrix | Warning | Limited fidelity for card sort questions |
| InputList exported as Text Entry | Warning | Only first field is preserved |
| Loop block without survey context | Warning | Exported as a placeholder |
| Unsupported block type | Error | Block is exported as a placeholder |