How it works
Every integration supports two directions:- Export converts a Questra survey into a platform-native file (XML, QSF JSON, etc.) that you can upload directly to the target platform.
- Import reads a platform-native file and reconstructs the survey inside Questra, preserving questions, logic, and structure.
GET /surveys/{id}/export/{format}. Use GET /export/formats to discover available platform slugs.
Supported platforms
Decipher
Full-featured XML export with Python expression transforms and native shorthand syntax.
Forsta (ConfirmIt)
XML export using the
f() scripting API with native shorthand methods.Qualtrics
QSF JSON export with BooleanExpression logic and optional JavaScript fallbacks.
Question type support
The table below summarizes which Questra block types each platform supports on export.| Block type | Decipher | Forsta | Qualtrics |
|---|---|---|---|
| Text (informational) | ✅ | ✅ | ✅ |
| Text input | ✅ | ✅ | ✅ |
| Multiple choice | ✅ | ✅ | ✅ |
| Matrix | ✅ | ✅ | ✅ |
| Rank order | ✅ | ✅ | ✅ |
| Card sort | ✅ | ⚠️ Exported as Multi | ⚠️ Exported as Matrix |
| Input list | ✅ | ✅ | ⚠️ Exported as Text input |
| Loop | ⚠️ Limited | ✅ | ⚠️ Expansion required |
⚠️ indicates the block type is supported but maps to a different native element. See each platform page for details.
Expression support
Questra surveys use JavaScript expressions for conditions, navigation logic, and computed variables. Each platform adapter translates these into the target language:| Pattern | Decipher (Python) | Forsta (JScript) | Qualtrics (BooleanExpression) |
|---|---|---|---|
q.value == "x" | ✅ | ✅ | ✅ |
q.some(o => ...) | ✅ | ✅ | ✅ |
q.every(o => ...) | ✅ | ✅ | ❌ JS fallback |
q.filter(o => ...) | ✅ | ✅ | ❌ JS fallback |
q.map(o => ...) | ✅ | ✅ | ❌ JS fallback |
Object.keys(q) | ✅ | ✅ | ❌ JS fallback |
Ternary (? :) | ✅ | ✅ | ❌ JS fallback |
Logical (&&, ||, !) | ✅ | ✅ | ✅ |
Comparison (==, !=, >, <) | ✅ | ✅ | ✅ |