# Welcome to Metaforms Help Center!

Your one-stop resource for step-by-step guidance, feature tutorials, and everything else you need to unlock the full potential of the platform.

### Jump right in

<table data-view="cards"><thead><tr><th></th><th data-hidden data-card-cover data-type="files"></th><th data-hidden></th><th data-hidden data-card-target data-type="content-ref"></th></tr></thead><tbody><tr><td>What is Metaforms?</td><td></td><td></td><td><a href="/pages/CyH2xJQs9yWJ1S8BYNav">/pages/CyH2xJQs9yWJ1S8BYNav</a></td></tr><tr><td>Survey Programming</td><td></td><td></td><td><a href="/pages/KfiIc4djOcW2Q6QCzYcl">/pages/KfiIc4djOcW2Q6QCzYcl</a></td></tr><tr><td>Hands-on with Expert</td><td></td><td></td><td><a href="/pages/5utry76gt5wje9fXq6ho">/pages/5utry76gt5wje9fXq6ho</a></td></tr></tbody></table>


# What is Metaforms?

### Metaforms is the Agentic OS for Market Research.

In plain language, we make research delivery faster and easier, with AI agents that work alongside your team at every step — from designing the research to the final report.

These agents help draft questionnaires, program surveys, test live links, handle revisions and trackers, validate data, clean and code open ends, create tables, and prepare reporting output. They run inside a shared unified workflow, so the context your team adds in an earlier stage is preserved across the lifecycle of the project.

Your team gets value from Metaforms without changing the platforms, templates, workflows, and review habits it already works with. **We support all major survey programming platforms such as Decipher, Confirmit, Qualtrics, and Dimensions.**

### A unified agentic platform, organized by one module for each stage

The modules you see in your account depend on what your team has bought and rolled out. Usually, teams start with Survey Programming. From there, they may add other modules as more of their delivery work moves into Metaforms.

Here's the full suite of modules inside Metaforms:

#### Research Manager

Helps your team review and shape questionnaires before programming begins.

#### Survey Programming

Turns a questionnaire into a survey your programmer can review in batches before launch. We've designed it to work with the survey platforms your team already uses, including **Decipher, Dimensions, Confirmit, and Qualtrics.**

#### Change Management

Compares revised questionnaires and helps your team review downstream dependencies, including tracker wave updates.

#### QA and Link Testing

Tests a live survey link against the questionnaire so issues can be fixed before fieldwork.

#### Data Validation

Checks collected responses against questionnaire logic and project rules.

#### Open-End Coding

Cleans and codes open-text responses with your team reviewing the code frame and assignments.

#### Tabulations

Creates tables from validated data and the analysis plan.

#### Reporting

Helps turn validated data and tables into report-ready output.

You may only use one of these modules today. That is fine. *Metaforms is designed so each module can be useful on its own, while still fitting into the same project workflow when your team adds more.*

### A reliable way for any research team to integrate AI in their delivery operations

Working with agents isn't quite like using regular software. It's still software, sure, but now it can actually think. Which means, now, *you're also teaching the system how your team likes things done!*

Metaforms lets seasoned research teams hand work to agents without handing over judgment, because every output still passes through someone who knows what good looks like. An agent programs a small batch of questions, your team checks it and gives feedback, and the next batch uses that feedback. If the output needs a frequent correction, that correction can become an AI rule. If a setup is going to repeat, it can become a template.

This is what makes agents useful in real research operations. *Your standards become part of the next piece of work the agents generate.* And this is also how agents become dependable enough for real production work. They do the heavy lifting, your team checks and corrects what comes out, and the whole system sharpens as your team feeds it better rules.

### When you need a hand

Good support is how new tools actually take hold. So we built help and learning into Metaforms because AI only works when someone's there the moment you get stuck, *and that's a job we genuinely love showing up for.*

Also, working with agents is still pretty new, so yeah, there's a learning curve! That's why we like to be hands-on with our rollouts. Our customer success team and subject matter experts work with your team to set up your workflows, build templates that standardize your team’s conventions, and help you give the system good feedback.

**Support is available 24/7.** **A real person monitors requests and responds under 30 minutes and will help through your account channel or the support links in this Help Center.**


# Login and Setup

## :man\_technologist: Access the Metaforms Portal

Go to the [Metaforms Login Page](https://app.metaforms.ai/login) in your browser.

## :key: Login/Sign Up

* **Login**: If your admin has already created an account for you, use the **username and password** provided to log in directly.
* **Sign Up**:\
  If you haven't been set up yet, click **“Create Account”** at the bottom of the page.
  * Enter your **email address** and **set a password** of your choice.
  * After signing up, if you see a message like *“You have not been added to an organization in Metaforms,”* contact your **admin** and ask them to grant you access to the organization.

## :repeat: Resetting or Changing Your Password

Once you're logged in:

1. Click the **three dots (⋯)** next to your **profile icon** in the bottom-left corner of the screen.
2. Select **“Change Password”** from the menu.
3. Follow the steps:
   * Enter your **current password**.
   * Complete the **Captcha** and click **“Verify”**.
   * Enter your **new password**.
   * Click **“Update Password”** to save the changes.


# Single Sign-On (SSO) Setup – SAML

## 🔐 Set Up SAML SSO (Enterprise)

Metaforms supports **Single Sign-On (SSO) via SAML** for secure and centralized access control.

Our SAML integration is powered by Supabase, and setup is typically quick as long as your Identity Provider (IdP) supports SAML 2.0.

You can view the list of supported providers here:\
<https://supabase.com/docs/guides/auth/enterprise-sso/auth-sso-saml>

If you use Microsoft Entra/ Azure AD you can refer to this guide for getting started: <https://learn.microsoft.com/en-us/entra/identity/enterprise-apps/add-application-portal-setup-sso>

### 📋 Prerequisites

Before starting the setup, please ensure:

1. SSO is enabled on your Enterprise plan.
2. You have admin access to your Identity Provider (Okta, Azure AD, Google Workspace, etc.).
3. Your users share a common email domain (for example, @yourcompany.com).

### 🏗 Step 1: Create a SAML Application in Your Identity Provider

1. Log in to your Identity Provider.
2. Create a new **SAML 2.0 application**.
3. Configure the application using the following details:

**Entity ID (Identifier):**\
<https://data.metaforms.ai/auth/v1/sso/saml/metadata>

**Reply URL (ACS URL):**\
<https://data.metaforms.ai/auth/v1/sso/saml/acs>

**Relay State (Optional):**\
<https://app.metaforms.ai/>

4. **Assign users to the SAML application:** Add or assign the users who should have access to Metaforms to the SAML application in your Identity Provider.

The Relay State ensures users are redirected to the Metaforms application after authentication.

### 📩 Step 2: Share Required Details with Metaforms

Once the SAML application is configured, share the following with the Metaforms team:

1. Your **SAML Metadata URL**
2. Your **SSO Domain** (the email domain your users will use to log in)

Example:

Metadata URL: <https://your-idp.com/saml/metadata>\
SSO Domain: yourcompany.com

### ⚙️ Step 3: Metaforms Configuration

1. We will configure SSO on our end using the information provided.
2. We will notify you once the setup is complete.
3. You can then proceed with testing the login flow.

### Step 4: Testing the Integration

1. Navigate to the Metaforms login page.
2. Enter your company email address.
3. You will be redirected to your Identity Provider for authentication.
4. After successful authentication, you will be redirected back to Metaforms.

### 🛠 Troubleshooting

If users experience login issues:

1. Confirm that the SAML Metadata URL is correct and accessible.
2. Confirm that the email domain matches the configured SSO domain.
3. Confirm that the ACS URL and Entity ID are entered exactly as shown above.
4. Confirm that users are assigned to the SAML application in your Identity Provider.

If you need assistance at any stage, please contact the Metaforms support team.


# User Roles & Groups (Legacy Flow)

Metaforms allows you to easily manage who can view or edit your survey projects, offering robust controls through **User Access** and **User Groups**.

Each **user** in Metaforms represents an individual who can:

* View, edit, or manage survey projects
* Be assigned **roles** like *Editor*, *Admin*, or *Owner*
* Be added at any time to a project via the **Access Management** panel in the Overview tab

You can search for existing users or add new ones by email. Their assigned role determines what level of interaction they have within the survey - whether that’s simply viewing changes or managing the survey’s full lifecycle.

## :closed\_lock\_with\_key: Understanding User Roles in Metaforms

| Role   | Permissions                                                                                                                                                                                                            |
| ------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Owner  | <p>- Manage users<br>- Create new surveys & templates<br>- View and edit <em>all</em> surveys and templates<br>- Access data retention controls</p>                                                                    |
| Admin  | <p>- Manage users<br>- Create new surveys & templates<br>- View and edit <em>all</em> surveys and templates</p>                                                                                                        |
| Editor | <p>- Create new templates<br>- View and edit <em>only</em> the surveys they created or have been granted access to (via individual assignment or User Groups)<br>- View and edit <em>all</em> templates in the org</p> |

{% hint style="info" %}
**Note:** Only **Admins** and **Owners** have full organization-wide access. Editors need to be granted explicit access to projects.
{% endhint %}

## :heavy\_plus\_sign: How to Add a new user?

Navigate to the '**Users'** Tab -> Click on '**+ User'** at the top right of your screen.

<figure><img src="/files/3ZdYm5LXM7FXfaLBnVA5" alt=""><figcaption></figcaption></figure>

**Step 1 : Choose Role for new user**

You can choose the role you want to assign to the new user - Admin/Editor/Owner.

**Step 2 : Choose the Products for new user**

You can choose what products in Metaforms are accessible to the new user\
(Survey Programming / Data Processing)

**Step 3 : Details**

In this step, you can enter the Name, Email, Password and Disable/Enable tutorial mode for this new user.

{% hint style="info" %}
Every user needs to have their own Decipher API key setup.
{% endhint %}

## :repeat: How to Change Permissions for existing users?

In the **Users** Tab, you can have an overall view of all the existing users in a project and change existing users permissions/access.

Navigate to the specifc user -> Click on the Actions for that specific user.

You can edit the access/permissions for the user here.

<figure><img src="/files/ZIyFtq3IL8nr9ccah2v9" alt=""><figcaption></figcaption></figure>

## :wrench: Setting up User Groups and Access Controls

We’ll walk through how to **create and manage User Groups in Metaforms** to control access to surveys and templates efficiently - especially useful when collaborating with large teams or across departments.\
\
Metaforms supports access control via **User Groups**, allowing you to assign editorial access more efficiently.

**Step 1: Assign Users to Groups**

1. Navigate to **Users**
2. Select the desired user
3. Click **Manage User Group** to assign them to a group

**Step 2: Grant User Group Access to Projects**

1. Go to the desired **Survey**
2. Open the **Overview** tab
3. Select **Access Management**
4. Assign relevant **User Groups** to the project

{% hint style="info" %}
**Reminder:** By default, **Admins** and **Owners** have access to *all* projects.
{% endhint %}

{% embed url="<https://www.youtube.com/watch?v=A71qmmiJBr0>" %}


# Set up your workspace (Unified Flow)

The Manager Dashboard is your workspace command center. It gives team leads and admins a single place to monitor project activity, manage team members, track your delivery pipeline, and configure inte

You can access it at any time by clicking Manager in the top-left navigation.

<figure><img src="/files/6zFKajmUstm2KVw80m4G" alt=""><figcaption></figcaption></figure>

### Getting started

When you first open the Manager Dashboard, you'll see a guided setup wizard with five steps. You can complete these in any order, or skip the wizard entirely and come back later.

#### Step 1: Set up roles

Roles control what each team member can do across your workspace. You'll find built-in roles ready to use, or you can create custom ones tailored to your team's structure. To configure roles:

1. Click Set up roles in the wizard, or go to Roles in the left sidebar under Settings.

<figure><img src="/files/CRfqLrqQkG1PmlBpXeUq" alt=""><figcaption></figcaption></figure>

2. Review the default roles and their permissions.

<figure><img src="/files/7dg4POtv1xG9pZR43t55" alt=""><figcaption></figcaption></figure>

3. Create custom roles if needed — give each a name, description, and select the permissions it should have.
4. You can set permission scopes to control access at a granular level (e.g. which projects a role can access).

<figure><img src="/files/lYnmEaUJ4yvDKt1yZkYk" alt=""><figcaption></figcaption></figure>

#### Step 2: Add your team

Invite team members so they can start working on projects.

1. Click Add your team in the wizard, or go to Users & Groups in the left sidebar.

<figure><img src="/files/qEHtJD9MCfhjpgFT278Z" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/mI2GEIRvx8nrGM7zwtD8" alt=""><figcaption></figcaption></figure>

2. Enter the person's email, set a temporary password (they can change it after logging in), and choose their organisation role (Editor, Admin or External).

<figure><img src="/files/5aI55460qyfkMPu1T3kl" alt=""><figcaption></figcaption></figure>

3. Assign roles to each of the added members.

<figure><img src="/files/WDoDl4s9GB1P0djTbw3z" alt=""><figcaption></figcaption></figure>

4. Optionally assign them to [groups](https://youtu.be/A71qmmiJBr0?si=8hqJeg4jjb0dl9re) or create a new group.

<figure><img src="/files/UOIg3eryDbRgGhlIz35n" alt=""><figcaption></figcaption></figure>

#### Step 3: Organize groups

Groups let you organize team members for easier project access management.

1. Go to Users & Groups in the left sidebar or click on New Group.

<figure><img src="/files/gEwh6NL8jFv6pf8jTdgd" alt=""><figcaption></figcaption></figure>

2. Create a group (e.g. "Research Team", "Programming Team").
3. Add members to groups. A user can belong to multiple groups.

<figure><img src="/files/VjRTuTAbQLjCWijv2Teu" alt=""><figcaption></figcaption></figure>

3. You can rename or delete groups at any time. Deleting a group does not remove the users from your workspace.

#### Step 4: Connect a platform

Connect your survey hosting platform so projects can sync directly.

1. Click Connect a platform in the wizard, or go to Integrations in the left sidebar.

<figure><img src="/files/d00hGodV9DankIhGd28y" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/xS2AVLMXP9J7WGL0hAot" alt=""><figcaption></figcaption></figure>

2. Choose your platform:

<figure><img src="/files/vzloPzgCFmga7yHSCnII" alt=""><figcaption></figcaption></figure>

* Forsta / Decipher: Enter your Decipher API credentials (domain and API key). Once connected, you'll be able to sync surveys and see the sync status on the Overview page.
* Confirmit: Enter your Confirmit base URL.
* Qualtrics: Enter your Qualtrics base URL.

<figure><img src="/files/vZuq1MOtab8pq4xOLA7E" alt=""><figcaption></figcaption></figure>

3. You can also set up API accounts under Integrations if your team needs programmatic access. Each account can have its own set of API keys.

<figure><img src="/files/z1tlEHdBCIwiiImvxUYS" alt=""><figcaption></figcaption></figure>

#### Step 5: Configure notifications

Set up how and when you receive notifications about project activity.

1. Go to Notifications in the left sidebar.
2. Configure your global preferences — choose whether you want in-app notifications, email, or both.
3. Fine-tune per notification type — you can enable or disable specific categories (e.g. project edits, sync failures, mentions).
4. Mark notifications as read individually or in bulk from the notification feed.

<figure><img src="/files/7sYq8LFE46QcmDOHkKCZ" alt=""><figcaption></figcaption></figure>

### Overview

<figure><img src="/files/eLJyStIMKsbGncmnHuHO" alt=""><figcaption></figcaption></figure>

The Overview page is your at-a-glance summary. It shows four key metrics as cards at the top, each with a sparkline trend and a comparison to the previous period:

* Active Projects — how many projects are currently active (not archived), with the change since last period.
* Team Members — how many people are in your workspace, with new additions highlighted.
* Generations — how many AI generations were run across all projects, with period-over-period comparison.
* Edits This Week — total edits (human + AI) across all projects, with trend.

You can switch the time window using the tabs in the top-right: 1 week, 2 weeks, 1 month, or 3 months. All metrics and trends adjust to the selected window\.Below the metric cards you'll see two panels:

#### Member Activity

A ranked list of team members showing how many projects each person contributed to during the selected period. Click View all to see the full team breakdown.

#### Decipher Sync Summary

If you've connected Forsta/Decipher, this panel shows the current state of your project syncs:

* Synced — projects that are successfully connected and up to date.
* Pending — projects where an initial sync is still in progress.
* Not connected — projects that haven't been linked to a Decipher survey yet.

Click View all to see per-project sync details.


# AI Question Generation - Batch Size Guide (Decipher)

This document explains the recommended workflow for AI-assisted question generation on Metaforms — a co-programming platform where you and the AI build the survey together. It covers three generation tiers — 5-question batches for standard work, 3-question batches for moderate complexity, and single-question generation for complex setups — plus conditions for using 10-question batches responsibly. It includes a prompt guide with good and bad examples, and outlines common pitfalls. The goal is to maximize AI output accuracy and minimize rework.

## Metaforms Is a Co-Programming Platform

Before getting into batch sizes, it's important to understand what Metaforms is — and what it isn't.

Metaforms is a **co-programming platform**, not a full automation solution. The AI is your programming partner: it dramatically accelerates scripting, but you remain the programmer. Your survey knowledge, your review, and your judgment are part of the workflow — not optional extras on top of it. The AI cannot replace survey knowledge, especially when key logic, sample requirements, or programming instructions are not explicitly documented in the questionnaire.

This is why the entire workflow in this guide is built around a **generate → review → fix → sync → test** cycle rather than a single generate-everything step. The batch sizes, the prompt guidance, and the pitfalls below all exist to make the collaboration between you and the AI as effective as possible:

* **You bring** the survey knowledge, the questionnaire context, the coding standards, and the final review.
* **The AI brings** speed — generating in minutes what takes hours manually — and it learns your corrections as you work.
* **Together**, the result is faster delivery than manual programming, with quality controlled by you at every step.

Users who treat Metaforms as a hands-off automation tool — generating entire surveys in one prompt and expecting finished output — consistently see more errors, more rework, and less benefit from the platform. Users who work with it as a co-programmer consistently see the biggest efficiency gains.

## 1. Why 5 Questions Is the Recommended Standard

Generating a maximum of 5 questions per batch is the cornerstone of the Metaforms workflow for standard question types. Throughout this document, question complexity is referred to in tiers:

* L1–L2: Standard setups — single-select, multi-select, radio buttons, text inputs, grids, basic piping, standard logic, and quotas.
* L3 and above: Complex types requiring specialized handling — MaxDiff, Conjoint, JavaScript, Hybrid, Complex Loops, 3D Matrix, Patient Charts, and Custom Validation (covered in Section 2).

The 5-question batch applies to L1–L2 questions and balances four things: error minimization, AI learning, focused code review, and a tight sync-and-test cycle.

### 1.1 Why small batches work better

Every generation — regardless of batch size — is a **starting point for your review, not a finished product**. Across projects, the AI consistently produces a strong foundation, with most edits being targeted refinements rather than logic rewrites. But that foundation still needs a programmer's eyes on it. The batch size question is really about how much output you can review effectively at once.

As batch size grows, the AI must hold more context simultaneously — question types, answer options, precodes, logic conditions, piping variables, and formatting standards. The likelihood of errors (wrong IDs, mismatched question text, misapplied logic, inconsistent formatting, phantom questions) increases with each additional question, and errors tend to cascade: a wrong pattern in question 3 of a 10-question batch often repeats through questions 4–10.

Smaller batches also support AI learning and focused review. When a programmer generates 5 questions, reviews them, and uses ‘Edit with AI’ to correct any issues, the AI retains that context for subsequent generations in the same project. With 10+ questions and multiple errors at once, the error surface is too broad for the AI to learn specific corrections. Smaller batches also let each question's XML, precodes, logic, and formatting be verified before moving on, and naturally support the recommended Generate → Sync to Decipher → Test → Fix → Next batch cycle. This is co-programming in practice: the AI generates fast, you validate and correct, and the AI gets better at matching your standards with each cycle.

## 2. Why 1 Question at a Time for Complex Questions

For high-complexity question types, even 3–5 questions at a time produces unreliable results. Single-question generation lets the AI dedicate its full context window to each setup.

### 2.1 Question types requiring single generation

| **Question Type**             | **Why Single Generation Is Required**                                                                                                                              |
| ----------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| MaxDiff                       | Multi-step process (design files, DAT files, quota sheets, XML). Each step needs individual validation; combining steps causes compounding errors in quota logic.  |
| Conjoint Analysis             | Design file conversion, quota generation, and XML creation must be separate validated steps. Each conjoint question needs its design files verified independently. |
| JavaScript / Custom Scripting | Requires full HTML/XML context from browser inspector. Without exact structure and class info, the AI guesses and causes malfunctions.                             |
| Hybrid Questions              | Combine checkbox and radio columns with cross-column validation. AI must detect and apply validation between different input types — requires focused context.     |
| Complex Loops                 | Hidden variables control randomization, execute tags handle dynamic ordering. Errors in loop variables propagate unpredictably into nested structures.             |
| 3D Matrix                     | Rows × columns × dropdown cells often need manual programming workarounds. Individual generation and manual verification are essential.                            |
| Patient Chart / Multi-section | Healthcare layouts requiring precise masking and section-by-section programming with manual adjustments.                                                           |
| Custom Validation Logic       | Range limits, mutually exclusive options, and interdependent conditional rules — batching leads to logic errors and missed constraints.                            |

### 2.2 Core reasons

* Context window saturation: Complex questions need significantly more context (HTML/XML structure, design files, quota logic). Multiple at once exhausts the AI's effective context window.
* Multi-step validation: Each complex type requires intermediate validation that cannot be parallelized. MaxDiff needs DAT file verification before XML; JavaScript needs browser inspection between iterations; loops need variable validation before nesting.
* Specialization selection: Different complex types require different AI specializations (e.g., ‘Custom Styling & Scripting’ for JS, ‘MaxDiff’ for MaxDiff). Mixing specializations in one batch reduces accuracy.
* Iterative refinement: Complex questions often require back-and-forth — generate, inspect, feed back XML/HTML snippets, regenerate. This only works one question at a time.

## 3. Quick Reference: Batch Size Matrix

| **Batch Size** | **When to Use**                          | **Question Types**                                                                                 |
| -------------- | ---------------------------------------- | -------------------------------------------------------------------------------------------------- |
| 5 questions    | Standard workflow (L1–L2 complexity)     | Single/multi-select, radio, text input, grids, piping, basic logic, quotas                         |
| 3 questions    | Mixed complexity or dense logic sections | Moderate piping, nested conditions, multi-language setups                                          |
| 1 question     | Complex / advanced setups                | MaxDiff, Conjoint, JavaScript, Hybrid, Complex Loops, 3D Matrix, Patient Charts, Custom Validation |

## 4. Recommended Workflow Steps

This is a co-programming cycle — the AI generates, you review and validate, and each iteration makes the next one better. The review and test steps are not optional checkpoints; they are where your expertise as a programmer drives the quality of the final survey.

* Study the questionnaire and identify sections by complexity level. This is programmer judgment the AI relies on — the batch size decisions in Section 3 depend on your read of the questionnaire.
* Select the correct AI specialization(s) for the question type.
* Generate in the appropriate batch size — 5 for standard, 3 for moderate complexity, 1 for complex. Use prompts like ‘Generate Q1–Q5’ or ‘Generate next 5 questions.’
* **Review the generated code — this is your most important step.** The AI's output is a starting point for your review, not a finished product. Check precodes, logic, formatting, and question types against the questionnaire. Only you know whether the output matches the research intent.
* Fix issues immediately using ‘Edit with AI’ (Ctrl+K / Cmd+K) — corrections you make here teach the AI your standards, and it applies them to subsequent generations in the project. Skipping this step means the same mistakes repeat.
* Sync to Decipher after each batch to validate output in the survey environment.
* Test using the survey link before proceeding — walk through the survey the way a respondent would. Automated generation cannot substitute for your validation of the actual survey experience.
* Repeat until the full questionnaire is programmed.

## 5. Prompt Guide: Good vs. Bad Prompts

Prompt quality is one of the biggest factors in AI output accuracy. A clear, specific prompt is the difference between a clean generation and hours of rework.

### 5.1 Edit with AI: JavaScript / Custom Scripting

Select the ‘Custom Styling & Scripting’ specialization. With ‘Edit with AI’ (Ctrl+K / Cmd+K), select the relevant question first, then provide a specific instruction that includes the HTML/XML context from the browser inspector. Without this context, the AI guesses at class names and element structure.

| ✅ **Good Prompt**                                                                                                                                                      | ❌ **Bad Prompt**              |
| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------- |
| “Add custom JavaScript to Q14 to auto-sum the numeric inputs in rows r1–r5. Here is the current HTML structure: \[paste from inspector]”                               | “Add JavaScript to fix Q14”   |
| “Create a custom progress bar script. The survey container uses class .survey-page and the current page index is in element .page-counter. Here is the HTML: \[paste]” | “Add a progress bar”          |
| “Apply custom CSS to hide the back button on Q1. Here is the HTML from inspector: \[paste]”                                                                            | “Hide the back button”        |
| “Add JS to dynamically show/hide row r3 in Q9 based on the value selected in Q7. Here is the Q9 HTML structure: \[paste from inspector]”                               | “Make Q9 dynamic based on Q7” |

### 5.2 Edit with AI: Answer Validation

Select the ‘Answer Validation’ specialization. Select only the specific question that needs validation, then describe the exact rule — conditions, ranges, and error messages.

| ✅ **Good Prompt**                                                                                                                                         | ❌ **Bad Prompt**                  |
| --------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------- |
| “Add validation to Q5: require exactly 3 selections from the checkbox list. Error message: Please select exactly 3 options.”                              | “Add validation to Q5”            |
| “Add range validation to Q8: numeric input must be between 18 and 99. Display error if outside range: Please enter a valid age between 18 and 99.”        | “Fix the validation on Q8”        |
| “Make options 98 (Don’t know) and 99 (Prefer not to say) mutually exclusive with all other options in Q12. If 98 or 99 is selected, deselect all others.” | “Add exclusive options to Q12”    |
| “Add sum validation to Q15 grid: all row values must sum to exactly 100. Error message: Your responses must total 100%.”                                  | “Validate Q15”                    |
| “Add cross-question validation: if Q3 answer is 1 (Yes), then Q4 must have at least one selection. Error: Please answer Q4 since you selected Yes in Q3.” | “Fix the logic between Q3 and Q4” |

### 5.3 Edit with AI: Hybrid Questions

Generate hybrid questions one at a time. When editing, describe the exact column structure, which columns are checkboxes vs. radio buttons, and what cross-column validation rules apply.

| ✅ **Good Prompt**                                                                                                                                                                                           | ❌ **Bad Prompt**                      |
| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------- |
| “Convert Q10 to a hybrid question: columns c1–c3 should be checkboxes (select all that apply), column c4 should be a radio button (single select). Add validation: if c4 is selected, c1–c3 must be empty.” | “Make Q10 a hybrid question”          |
| “Add cross-column validation to Q18: if any checkbox in column c1 (Awareness) is selected, the corresponding radio in column c2 (Preference) must also be answered for that row.”                           | “Add validation to Q18 columns”       |
| “Update Q22 hybrid setup: move the ‘None of the above’ row (r99) so it is mutually exclusive with all other rows. When r99 is checked in any column, deselect all other rows in that column.”               | “Fix the None option in Q22”          |
| “Create Q14 as a hybrid: rows are brands (r1–r8), column c1 is a checkbox for ‘Heard of’, column c2 is a radio for ‘Most preferred’. Only brands checked in c1 should be selectable in c2.”                 | “Create a hybrid for Q14 with brands” |

### 5.4 Quota Generation Prompts

Create quotas incrementally using the Quota tab (not the XML tab). Specify sheet name, conditions, limits, and quota logic type.

| ✅ **Good Prompt**                                                                               | ❌ **Bad Prompt**                             |
| ----------------------------------------------------------------------------------------------- | -------------------------------------------- |
| “Create quota for Q1 rows with the limits from the QNR”                                         | “Create all quotas”                          |
| “Create least filled quota for \[Sheet\_Name]”                                                  | “Add quotas as needed”                       |
| “Create gender x region quota with limits from the QNR”                                         | “Set up the quotas”                          |
| “Create quota tags for top 3 brands using least filled logic. Have highest priority for Brand1” | “Create Brand1\_Selection quota as per need” |

## 6. When 10-Question Batches Can Work

The platform supports 10-question generation, but the standard recommendation remains 5. Even under ideal conditions, 10-question batches carry higher error risk: the AI learning loop is weaker, code review is harder, and error cascade is more likely. This section documents the conditions under which 10-question batches can be used responsibly.

### 6.1 All of these conditions must be true

* L1–L2 complexity only — standard single-select, multi-select, radio, text, or number inputs. No logic, piping, validation, loops, JavaScript, or hybrid types.
* Same question type pattern — for example, 10 consecutive single-select Yes/No questions. The more uniform the block, the better the AI performs.
* No logic, piping, or conditional show/hide within the block.
* Previous batch was synced, tested, and error-free — the AI needs a clean baseline.
* Correct template and specialization already selected.
* You can review all 10 questions carefully before syncing. If not, use a 5-question batch instead.

### 6.2 Example: when it works

Scenario: Q6–Q15 are all single-select ‘Have you heard of \[Brand X]?’ with Yes/No options. No piping, no logic, no conditions.

Good prompt: “Generate Q6 through Q15. All are single-select Yes/No brand awareness questions. No logic or piping between them. Precodes: 1=Yes, 2=No.”

Why this works: Uniform question type, explicit precode format, no interdependencies, clear range specified.

### 6.3 Example: when it fails

Scenario: Q6 is a multi-select brand list, Q7 pipes from Q6, Q8–Q10 have show/hide logic based on Q6, Q11 is a text input, Q12–Q13 are grids with different column headers, Q14 has answer validation, Q15 is a ranking question.

Why this fails: Mixed question types, piping dependencies, conditional logic, and validation rules. This should be split into at least 3 separate batches (Q6–Q7, Q8–Q10, Q11–Q15) or smaller if individual questions need specialized handling.

### 6.4 Post-generation review checklist

* All 10 question IDs match the questionnaire (no skipped or duplicated IDs).
* Question type is correct for every question (no unexpected type switches).
* Precodes follow the expected format across all 10 questions.
* No extra or phantom questions generated beyond the requested range.
* No values incorrectly added to checkbox or text input questions.
* Formatting is consistent (font, style, spacing) across all 10 questions.
* Fix any issues immediately using ‘Edit with AI’ before syncing.

## 7. Common Pitfalls to Avoid

The patterns below consistently lead to problems and are listed roughly in order of how often they occur. Most of them share a root cause: treating Metaforms as a hands-off automation tool instead of a co-programming workflow. Generation without review, skipping the sync-and-test cycle, and expecting finished output from a single prompt all work against how the platform is designed to be used.

* Generating full surveys or large sections in a single prompt — prompts like ‘generate everything’, ‘finish the survey’, or ‘generate till end’ are the most common issue. They produce inconsistent output, make errors hard to isolate, and skip the review cycle that co-programming depends on.
* Proceeding to the next batch without reviewing the current one — generation without review defeats the purpose of batching. Each batch should be reviewed and validated before generating the next.
* Confusing ‘Generate with AI’ and ‘Edit with AI’ — using ‘Generate with AI’ to modify existing code creates extra and incorrect code. Use ‘Edit with AI’ for modifications; ‘Generate with AI’ only for new content.
* Making corrections directly in Decipher instead of using ‘Edit with AI’ — manual corrections outside the platform prevent the AI from learning, so the same mistakes repeat. Corrections inside the platform are how you train your co-programmer.
* Using ‘Generate Next 5’ when fewer than 5 questions remain — causes phantom questions at the end. Specify the exact remaining questions instead (e.g., ‘Generate Q48–Q50’).
* Using prompts for changes the platform handles better — ‘Update Question Type’ and ‘Update Styling’ are faster and more reliable than prompts for attribute-level changes.
* Relying on AI for quick manual fixes — small syntax corrections and quick formatting changes are often faster done manually. Co-programming means using your own judgment on when the AI is the right tool and when your hands on the code are faster.


# AI Question Generation - Batch Size Guide (Confirmit)

This document explains the recommended workflow for AI-assisted question generation on Metaforms — a co-programming platform where you and the AI build the survey together. It covers three generation tiers — 5-question batches for standard work, 3-question batches for moderate complexity, and single-question generation for complex setups — plus conditions for using 10-question batches responsibly. It includes a prompt guide with good and bad examples, and outlines common pitfalls. The goal is to maximize AI output accuracy and minimize rework.

## Metaforms Is a Co-Programming Platform

Before getting into batch sizes, it's important to understand what Metaforms is — and what it isn't.

Metaforms is a **co-programming platform**, not a full automation solution. The AI is your programming partner: it dramatically accelerates scripting, but you remain the programmer. Your survey knowledge, your review, and your judgment are part of the workflow — not optional extras on top of it. The AI cannot replace survey knowledge, especially when key logic, sample requirements, or programming instructions are not explicitly documented in the questionnaire.

This is why the entire workflow in this guide is built around a **Generate → Verify → Fix → Next batch** cycle rather than a single generate-everything step. The batch sizes, the prompt guidance, and the pitfalls below all exist to make the collaboration between you and the AI as effective as possible:

* **You bring** the survey knowledge, the questionnaire context, the coding standards, and the final review.
* **The AI brings** speed — generating in minutes what takes hours manually.
* **Together**, the result is faster delivery than manual programming, with quality controlled by you at every step.

Users who treat Metaforms as a hands-off automation tool — generating entire surveys in one prompt and expecting finished output — consistently see more errors, more rework, and less benefit from the platform. Users who work with it as a co-programmer consistently see the biggest efficiency gains.

## 1. Why 5 Questions Is the Recommended Standard

Generating a maximum of 5 questions per batch is the cornerstone of the Metaforms workflow for standard question types. Throughout this document, question complexity is referred to in tiers:

* L1–L2: Standard setups — single-select, multi-select, radio buttons, text inputs, grids, basic piping, standard logic, and quotas.
* L3 and above: Complex types requiring specialized handling — JavaScript, 3D grids, Complex masking and loops, Patient Charts, and Custom Validation.

The 5-question batch applies to L1–L2 questions and balances three things: error minimization, limiting how much generation time is lost if a batch fails partway through, and focused code review with fixes if needed.

### 1.1 Why small batches work better

Every generation — regardless of batch size — is a **starting point for your review, not a finished product**. Across projects, the AI consistently produces a strong foundation, with most edits being targeted refinements rather than logic rewrites. But that foundation still needs a programmer's eyes on it. The batch size question is really about how much output you can review effectively at once.

As batch size grows, the AI must hold more context simultaneously — question types, answer options, precodes, logic conditions, piping variables, and formatting standards. The likelihood of errors (wrong IDs, mismatched question text, misapplied logic, inconsistent formatting, phantom questions) increases with each additional question, and errors tend to cascade: a wrong pattern in question 3 of a 10-question batch often repeats through questions 4–10.

Smaller batches also limit how much you lose when something goes wrong. Generation takes time, and if an unexpected error occurs partway through a batch, the remaining questions in that batch get cancelled — you lose the generation time spent on the whole batch, not just the question that failed. A 5-question batch that fails costs a fraction of the time a 10-question batch would. Smaller batches also let each question's type, precodes, logic, and formatting be verified before moving on, and naturally support the recommended **Generate → Verify → Fix → Next batch** cycle. This is co-programming in practice: the AI generates fast, you validate and correct, and you catch problems before they compound across a large batch.

## 2. Quick Reference: Batch Size Matrix

| **Batch Size** | **When to Use**                          | **Question Types**                                                         |
| -------------- | ---------------------------------------- | -------------------------------------------------------------------------- |
| 5 questions    | Standard workflow (L1–L2 complexity)     | Single/multi-select, radio, text input, grids, piping, basic logic, quotas |
| 3 questions    | Mixed complexity or dense logic sections | Moderate piping, nested conditions, multi-language setups                  |
| 1 question     | Complex / advanced setups                | Hybrid, Complex Loops, 3D grids, Patient Charts, Custom Validation         |

## 3. Recommended Workflow Steps

This is a co-programming cycle — the AI generates, you review and validate, and each iteration makes the next one better. The review step is not an optional checkpoint; it is where your expertise as a programmer drives the quality of the final survey.

| **Step** | **Description**                                                                                                                                                                                                                                                                               |
| -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 1        | Study the questionnaire and identify sections by complexity level. This is programmer judgment the AI relies on — the batch size decisions in Section 2 depend on your read of the questionnaire.                                                                                             |
| 2        | Select the correct AI specialization(s) for the question type.                                                                                                                                                                                                                                |
| 3        | Generate in the appropriate batch size — 5 for standard, 3 for moderate complexity, 1 for complex. Use prompts like 'Generate Q1–Q5' or 'Generate next 5 questions.'                                                                                                                          |
| 4        | **Review the generated code — this is your most important step.** The AI's output is a starting point for your review, not a finished product. Check precodes, logic, formatting, and question types against the questionnaire. Only you know whether the output matches the research intent. |
| 5        | Fix issues using 'Edit with AI' or manually where faster — apply corrections per your standards before moving to the next batch.                                                                                                                                                              |
| 6        | Repeat until the full questionnaire is programmed.                                                                                                                                                                                                                                            |

## 4. Prompt Guide: Good vs. Bad Prompts

Prompt quality is one of the biggest factors in AI output accuracy. A clear, specific prompt is the difference between a clean generation and hours of rework.

### 4.1 Edit with AI: Answer Validation

Write your prompt in the Edit with AI box and provide the necessary details. Mention only the specific question that needs validation, then describe the exact rule — conditions, ranges, and error messages.

| ✅ **Good Prompt**                                                                                                                                         | ❌ **Bad Prompt**                  |
| --------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------- |
| "Add validation to Q5: require exactly 3 selections from the checkbox list. Error message: Please select exactly 3 options."                              | "Add validation to Q5"            |
| "Add range validation to Q8: numeric input must be between 18 and 99. Display error if outside range: Please enter a valid age between 18 and 99."        | "Fix the validation on Q8"        |
| "Make options 98 (Don't know) and 99 (Prefer not to say) mutually exclusive with all other options in Q12. If 98 or 99 is selected, deselect all others." | "Add exclusive options to Q12"    |
| "Add sum validation to Q15 grid: all row values must sum to exactly 100. Error message: Your responses must total 100%."                                  | "Validate Q15"                    |
| "Add cross-question validation: if Q3 answer is 1 (Yes), then Q4 must have at least one selection. Error: Please answer Q4 since you selected Yes in Q3." | "Fix the logic between Q3 and Q4" |

### 4.2 Edit with AI: Custom Questions (3D grid with different question types)

Generate custom questions one at a time. When editing, describe the exact column structure, which columns are checkboxes vs. radio buttons, and what cross-column validation rules apply.

| ✅ **Good Prompt**                                                                                                                                                                                     | ❌ **Bad Prompt**                       |
| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------- |
| "Convert Q10 to a custom question: columns 1–3 should be checkboxes (select all that apply), column 4 should be a radio button (single select). Add validation: if 4 is selected, 1–3 must be empty." | "Make Q10 a hybrid question"           |
| "Add cross-column validation to Q18: if any checkbox in column 1 (Awareness) is selected, the corresponding radio in column 2 (Preference) must also be answered for that row."                       | "Add validation to Q18 columns"        |
| "Update Q22 custom setup: move the 'None of the above' row (99) so it is mutually exclusive with all other rows. When 99 is checked in any column, deselect all other rows in that column."           | "Fix the None option in Q22"           |
| "Create Q14 as a 3D grid: rows are brands (1–8), column 1 is a checkbox for 'Heard of', column 2 is a radio for 'Most preferred'. Only brands checked in 1 should be selectable in 2."                | "Create a 3D grid for Q14 with brands" |

## 5. When 10-Question Batches Can Work

The platform supports more than 5-question generation (to generate more, you need to prompt in the chat box), but the standard recommendation remains 5. Even under ideal conditions, 10-question batches carry higher risk: code review is harder, error cascade is more likely, and an unexpected failure partway through cancels more pending generations — wasting more of the generation time already spent. This section documents the conditions under which 10-question batches can be used responsibly.

### 5.1 All of these conditions must be true

* L1–L2 complexity only — standard single-select, multi-select, radio, text, or number inputs. No logic, piping, validation, loops, JavaScript, or hybrid types.
* Same question type pattern — for example, 10 consecutive single-select Yes/No questions. The more uniform the block, the better the AI performs.
* No logic, piping, or conditional show/hide within the block.
* You can review all 10 questions carefully. If not, use a 5-question batch instead. Remember: 10 questions of output means 10 questions of review — the generation is only as good as the verification behind it.

### 5.2 Example: when it works

Scenario: Q6–Q15 are all single-select 'Have you heard of \[Brand X]?' with Yes/No options. No piping, no logic, no conditions.

Good prompt: "Generate Q6 through Q15. All are single-select Yes/No brand awareness questions. No logic or piping between them. Precodes: 1=Yes, 2=No."

Why this works: Uniform question type, explicit precode format, no interdependencies, clear range specified.

### 5.3 Example: when it fails

Scenario: Q6 is a multi-select brand list, Q7 pipes from Q6, Q8–Q10 have show/hide logic based on Q6, Q11 is a text input, Q12–Q13 are grids with different column headers, Q14 has answer validation, Q15 is a ranking question.

Why this fails: Mixed question types, piping dependencies, conditional logic, and validation rules. This should be split into at least 3 separate batches (Q6–Q7, Q8–Q10, Q11–Q15) or smaller if individual questions need specialized handling.

### 5.4 Post-generation review checklist

* All 10 question IDs match the questionnaire (no skipped or duplicated IDs).
* Question type is correct for every question.
* Precodes follow the expected format across all 10 questions.
* No extra or phantom questions generated beyond the requested range.
* Formatting is consistent (font, style, spacing) across all 10 questions.
* Fix any issues immediately using 'Edit with AI' or manually.

## 6. Common Pitfalls to Avoid

The patterns below consistently lead to problems and are listed roughly in order of how often they occur. Most of them share a root cause: treating Metaforms as a hands-off automation tool instead of a co-programming workflow. Generation without review, and expecting finished output from a single prompt, work against how the platform is designed to be used.

* Generating full surveys or large sections in a single prompt — prompts like 'generate everything', 'finish the survey', or 'generate till end' are the most common issue. They produce inconsistent output, make errors hard to isolate, and skip the review cycle that co-programming depends on.
* Proceeding to the next batch without reviewing the current one — generation without review defeats the purpose of batching. Each batch should be reviewed and verified before generating the next.
* Confusing 'Generate with AI' and 'Edit with AI' — using 'Generate with AI' to modify existing questions creates extra and incorrect code. Use 'Edit with AI' for modifications; 'Generate with AI' only for new content.
* Using prompts for changes the platform handles better — 'Update Question Type' and 'Update Styling' are faster and more reliable than prompts for attribute-level changes.
* Relying on AI for quick manual fixes — small syntax corrections and quick formatting changes are often faster done manually. Co-programming means using your own judgment on when the AI is the right tool and when your hands on the code are faster.


# Legacy Flow


# Starting a project

Metaforms allows you to create new projects or fetch existing ones directly from **Decipher**, **IntelliSurvey**, and **Confirmit** - all by simply configuring your platform’s **API key** within Metaforms.

We also offer **free custom integrations** for in-house survey platforms, making it easy to connect Metaforms with your existing internal systems.

Within Metaforms, you can:

* Start a new **Ad-hoc Study**, or
* Launch a new wave under an existing **Tracker Project**.


# Ad-hoc Study

An **Ad-hoc Study** refers to a one-time, standalone survey created to answer a specific research question. These studies are **not part of a recurring tracker** and are typically used when you:

Unlike Tracker Studies, Ad-hoc projects do not follow a fixed schedule or have multiple waves.

Let's jump into how we setup an Ad-Hoc Study.


# Creating a new Project

Let's walk through how to create an Ad-Hoc study from scratch:

## Step 1: Create

* Click on Create New Project at the top right of your screen. Choose "New Forsta Decipher Project".

<figure><img src="/files/ydylFY1vaviWB0jzuCcB" alt=""><figcaption></figcaption></figure>

* Select **Create Ad-hoc Study**, then click **Continue**.

<figure><img src="/files/KsL1jh3UFwm9gwSoPWOZ" alt=""><figcaption></figcaption></figure>

## Step 2: Set Up

* **Choose a template** from the dropdown.
* **Enter a survey name**.
* By default, the survey is saved in the root directory.
* To store it in a specific location within Decipher, check **"Use Decipher Custom Subdirectory & Path"** and enter the directory and path as needed.

Click **Continue**.

## Step 3: Upload Files

* Upload your **questionnaire file** and any other supporting documents.
* Click **Continue**.

## Step 4: AI Skill Selection

* Choose an **AI Specialization Level** based on your survey needs:
  * **Basic Survey**
  * **Advanced Survey**

Click **Start Programming** to begin building your survey.


# Using an existing Decipher Project

If you already have a survey set up in Decipher, Metaforms allows you to bring that in and build upon it.

{% hint style="info" %}
**Note**: You must have your **Decipher API Key** configured in Metaforms before using this option.\
See: Setting up your Decipher API Key
{% endhint %}

## Step 1: Create

* Click on Create New Project at the top right of your screen. Choose "New Forsta Decipher Project".

<figure><img src="/files/TBW5chqamxrOKiMrKsqx" alt=""><figcaption></figcaption></figure>

* Choose **Create Ad-hoc Study**, then click **Continue**.

<figure><img src="/files/48WvQCuj9BREgy6ZNi57" alt=""><figcaption></figcaption></figure>

## Step 2: Set Up

* Under the **Decipher Survey** dropdown, choose the project you'd like to use.
* If the survey isn't listed:
  * Click **"Can't find your survey?"**
  * Manually enter the **survey path**, and click **Verify**.

{% hint style="info" %}
💡 **Note:** If you're unable to find your survey in the dropdown, it’s likely because it’s still in **Dev state**. Decipher’s API does **not return Dev-state surveys** in the project list this is a known limitation.\
To work around this, click **"Can’t find your survey?"** and manually enter the **full survey path**, then click **Verify** to proceed.
{% endhint %}

* Select a **template** from the dropdown.
* Click **Continue**.

## Step 3: Upload Files

* Upload the **questionnaire** and any additional files as needed.
* Click **Continue**.

## Step 4: AI Skill Selection

* Choose the **AI Specialization Level**:
  * **Basic Survey**
  * **Advanced Survey**

Click **Start Programming** to begin customizing your imported survey.


# Tracker Study

**Metaforms** allows you to set up a **Tracker Study. Tracker Study** is a survey project that is conducted in waves or rounds over time - such as weekly, monthly, or quarterly - while maintaining consistency in structure and logic across versions.\
\
Metaforms makes it easy to manage tracker studies by allowing users to update questionnaires, XML, and quota sheets for each round while preserving prior versions.\
\
This ensures efficient handling of edits, tracking changes, and syncing to Decipher without disrupting ongoing data collection.\
\
You can use Change Management in Metaforms to update your XML based on the updated versions of Questionnaire and revised studies.


# Convert Ad-Hoc study to Tracker Study

Any existing Metaforms Ad-Hoc Study can be converted into a Tracker Study by navigating to the “Overview page” and clicking on the “Convert to Tracker Study” option.

{% hint style="info" %}
Note: Once converted, a Tracker Study **cannot be reverted back** to an Adhoc Study.
{% endhint %}

<figure><img src="/files/si1jBuA8NCUQS7stPZ8l" alt=""><figcaption></figcaption></figure>


# Launch a New Study Using Existing Decipher Survey

## Step 1 - Create a Tracker Study :

1. Click on New Project on the top right corner, and select New Decipher Project from the drop down.
2. In the project creation dialog, in step 1 (Type), click on **Create Tracker Study**

<figure><img src="/files/L7h45P1tbPi8LDuDoIai" alt=""><figcaption></figcaption></figure>

## Step 2 - Set up :

* Choose the Survey you want to work on using the “Decipher Survey” option
* If you can’t find the survey in the dropdown, click on “Can't find your survey?“ manually add the survey path and verify.
* Click on continue

## Step 3 - Upload QNR :

* Upload the current wave Questionnaire (Not the new wave QNR)
* Click on “Start Programming”

Once you are in the build page in Metaforms: Sync the project from Decipher to Metaforms

## Initiate tracker study flow

* Click on Import > Upload new version of ...
* Select "Change Management"
* Check / uncheck "Update as Tracker / Live Study" as needed
* You can check "Duplicate the existing survey" and enter the name of the new survey to create in Decipher ( make sure to do this to create a duplicate survey in Decipher instead of overwriting the existing one)


# Build Page Walkthrough

The **Build Page** provides a comprehensive workspace for creating and managing your surveys.\
\
On the **left panel**, you can access key components such as the **Clarification Sheet**, **XML Editor**, and **Quota Sheet**, while the **right panel** displays the **File Preview**.\
\
This side-by-side layout allows you to view and generate survey XML in real time, making it easier to align your code with the original questionnaire and streamline the programming process.

<figure><img src="/files/zsaCeLh0zbGdQ9H9bhbo" alt=""><figcaption></figcaption></figure>


# Clarification Sheet

The **Clarification Sheet** allows you to document logic, assumptions, and special instructions for each question in your questionnaire - particularly useful when dealing with complex logic or ambiguous inputs.

<figure><img src="/files/o1Xt1qLRNM7XVYqS5wBV" alt=""><figcaption></figcaption></figure>

Each entry in the Clarification Sheet is tied to a specific **QID** (question ID) from your questionnaire and includes the following fields by default:

* **Reference (QID)**
* **Query**
* **Query Type**
* **Feedback**
* **Status**

This structured format ensures your clarifications are well-organized and traceable throughout the survey build process.

{% hint style="info" %}
You can however also choose to have your own format for the clarification sheet.
{% endhint %}

## **Types of Clarifications**

There are broadly four key clarification categories:

1. **Instructions**\
   Specific guidance or opinions on how a question should be programmed - especially useful for complex logic or unconventional flows.
2. **Decisions**\
   Any programming decisions made by the survey programmer that deviate from the questionnaire content - to maintain transparency.
3. **Clarifications**\
   Questions sent to clients for additional input, along with their responses - recorded to maintain a clear history of communication.
4. **Assumptions**\
   Logical assumptions made by the programmer in case of ambiguity in the questionnaire - helps document intent behind code.

## **AI Clarification Suggestions (Beta)**

Metaforms includes an AI-powered suggestions tool (in Beta), which analyzes your questionnaire and offers:

* Suggested clarifications for complex questions
* Detection of logical inconsistencies
* Highlighting of typos and potential improvements

You can easily review, accept, or discard these AI suggestions as needed.

<figure><img src="/files/jI7UfffskugRRGPdkAoT" alt=""><figcaption></figcaption></figure>

**To Enable AI Clarification Suggestions:**

* Navigate to **Settings -> Features -> Enable Clarification Sheet Suggestions** and **save changes.**

<figure><img src="/files/6vVXqERLnTS2VGYHuHMm" alt=""><figcaption></figcaption></figure>

## **Additional Features**

* You can **create multiple Clarification Sheets** within a project.
* Sheets can be **imported or exported** in bulk for documentation or reuse.
* Clarifications directly improve the **quality and precision** of XML generation using AI.


# XML Editor

The **XML Editor** is the heart of the Build Page in Metaforms. It allows survey programmers to generate, modify, and review the raw XML structure that defines your questionnaire. This is where all the magic happens - from AI-assisted survey creation to advanced logic and customizations.

You’ll find the XML Editor in the left panel of the Build Page, alongside the **Clarification Sheet** and **Quota Sheet**, while the right panel displays your original questionnaire (QNR) document for side-by-side reference.

## Key Features in the XML Editor

1. **Generate with AI / Edit with AI :** AI tooling to help generate or modify survey XML
2. **Choose Specialisations** **:** Specializations define the complexity and features that the AI should account for while generating XML.
3. **Edit History :** Every time you save a change in your XML, Metaforms logs it automatically. You can revert or look at earlier versions of your documents.
4. **Editor Interface:** The actual code editor is a fully featured XML workspace where you can make changes to the XML

<figure><img src="/files/84OEkUvq7vrQxEKdvsak" alt=""><figcaption></figcaption></figure>


# Generate with AI

**Generate with AI** helps you to auto-generate or edit XML code directly.

You can trigger it by:

* Hitting `Cmd + K` or `Ctrl + K`
* Clicking the **Generate/Edit** button at the top of the XML Editor

This will show up a widget that you can use to generate blocks of questions - 3, 5, 10, all

<figure><img src="/files/VYttuQxaGPq7q8N5dtUW" alt=""><figcaption></figcaption></figure>

You can either directly generate the XML by clicking on Generate or provide specific instructions to the AI for the questions.\
\
You can easily access the earlier (historical) prompts by using the :arrow\_up: / :arrow\_down: arrow keys for history.

{% hint style="info" %}
It is recommended to make any necessary edits to the generated questions before generating the next set of questions. This allows the AI to follow similar formats for the next generations.
{% endhint %}


# Edit with AI

The **Edit with AI** feature helps you modify existing XML questions. You can either make quick structural changes or context-aware edits that align with the original questionnaire (QNR).\
\
You can trigger Edit with AI by selecting a specific XML block and then hitting `Cmd + K` or `Ctrl + K` or by clicking the **Generate/Edit** button at the top of the XML Editor

**Quick Edit :** Use this when you want to make fast updates directly to the XML without referencing the questionnaire document.

**Edit (Read QNR) :** Use this when you want edits that are consistent with the source questionnaire.

<figure><img src="/files/mF8wceSotT5xFpILfMem" alt=""><figcaption></figcaption></figure>


# Edit Entire XML with AI

The **Edit Entire XML** feature allows you to edit your **entire survey script at once.** It’s ideal for **global updates, rewrites, or structural refactors,** without needing to manually scroll or select question blocks.

You can use

* Uses your instruction to **analyze the full survey XML**.
* Applies **consistent changes** across all relevant parts of the survey.
* Offers both **Quick Edit** and **QNR-Aware Edit** modes:
  * **Quick Edit** updates based solely on your instruction.
  * **Edit (Read QNR)** aligns changes with the questionnaire document.

<figure><img src="/files/GXKAH32zXelRxLHUZGsH" alt=""><figcaption></figcaption></figure>


# Specializations

Before generating code, help the AI understand what kinds of questions and logic your survey includes. **Specializations** act like a blueprint, they guide the AI to use the most relevant structures, tags, and logic patterns for your specific questionnaire.

Not all surveys are the same - some are simple with just multiple-choice questions, while others involve complex skip logic, quotas, or loops. Enabling the right specializations:

* Improves code accuracy
* Reduces post-generation edits
* Helps AI understand the complexity of your project

<figure><img src="/files/ktGRKZXRMiYYbPEeeOer" alt=""><figcaption></figcaption></figure>

## **Basic Specializations**

These cover the most common question types used in standard surveys:

* **Radio / Checkbox / Select Questions**
* **Number / Text Questions**
* **Hidden Questions**
* **Pipe Tags**

## **Advanced Specializations**

For surveys with more complex requirements, you can enable advanced modules:

* **Answer Validation**
* **Loops & Nested Loops**
* **Quotas**
* **Sample Participant Sources**
* **Images / Data Lookup / Scripting**

{% hint style="info" %}
Some items (e.g., Segmentation, Hybrid Questions) require advanced access to enable.
{% endhint %}

<figure><img src="/files/hM2sRconPIq7XA9G1ppD" alt=""><figcaption></figcaption></figure>

## What is Used Capacity?

There is a **defined total specialization capacity** for AI, which is visually represented by the **capacity bar** on the right side of the screen.

The total available capacity is dynamically determined based on the **length of the questionnaire**. Shorter surveys allow you to select **multiple specializations** at once, while longer surveys may restrict this to fewer selections.

{% hint style="info" %}
If you need to apply multiple specializations but can’t select them all at once, try this workflow:

1. Start by selecting one specialization (e.g., **Hybrid Questions**) and generate the code.
2. Then, switch to the next specialization (e.g., **Custom Styles and Scripting**).
3. Use **Edit with AI** to enhance or modify the previously generated code based on the new specialization.
   {% endhint %}


# Update Question Type

The **Update Question Type** tool lets you quickly switch how a question is structured, without having to write raw XML.

For this simply navigate to the XML for the specific question, and click on "Update Question Type" at the top of the XML.

<figure><img src="/files/abAxzvLCQyJ0TYkFATSa" alt=""><figcaption></figcaption></figure>


# Clips

## **Using Clips in the Metaforms Editor**

Metaforms integrates **Clips** to accelerate survey programming. Accessible via the **Command Dialog** (`Cmd+M` / `Ctrl+M`), this feature lets you **import, manage, and execute reusable code snippets** directly in the editor.

Metaforms is fully compatible with the **NoteTab Clipbook (`.clb`)** format, so you can bring existing personal and team libraries into the editor seamlessly.

<figure><img src="/files/u61hd0XztQSN9BvWtdeI" alt=""><figcaption></figcaption></figure>

### **1. Clip Libraries in Metaforms**

When you open the Command Dialog, you’ll see three types of libraries available:

1. **Global Metaforms Clips**
   * Built-in formatting commands and utilities.
   * **Protected**: Cannot be modified or deleted.
2. **Forsta Decipher NoteTab Clips**
   * Pre-imported library of **140 industry-standard clips** from the [open-source Decipher collection](https://github.com/decipher-survey-programming/decipher-notetab-clips/blob/master/Decipher-Surveys-Latest.clb).
   * **Protected**: Cannot be modified or deleted.
3. **Your Clips**
   * Any `.clb` files you import.
   * **Fully editable**: You can rename, edit, or delete clips individually or in bulk.

### **2. Importing `.clb` Clipbooks**

Adding your own library is straightforward:

1. Open the Command Dialog (`Cmd+M` / `Ctrl+M`).
2. Expand the **Import Clips** section.
3. Drag and drop a `.clb` file, or click **Select File**.

<figure><img src="/files/NdnB1z0ZH7kkoxw49y1G" alt=""><figcaption></figcaption></figure>

#### **File Name Conflicts**

If a file with the same name already exists, you’ll be prompted to:

* **Replace** → Overwrite existing clips with the new file.
* **Rename** → Import under a new name (e.g., `MyClips (1).clb`).
* **Cancel** → Abort the import.

### **3. Understanding the `.clb` File Format**

Metaforms parses `.clb` files into two types of clips:

* **Text Clips** → Insert static text.
* **Script Clips** → Execute Python code to transform editor content.

#### **Supported Syntax**

| NoteTab Syntax           | How Metaforms Handles It                                                                          |
| ------------------------ | ------------------------------------------------------------------------------------------------- |
| `H="Clip Name"`          | Defines a clip’s display name.                                                                    |
| `H=";Section Name"`      | Creates a category heading in the UI.                                                             |
| `^!InsertText ...`       | Inserts static text.                                                                              |
| `^!RunScript scriptName` | Executes a Python script defined in the file.                                                     |
| `^!If ... ELSE ... GoTo` | **Not evaluated.** Instead, each branch is imported as a separate clip (e.g., `ClipName:Branch`). |

### **4. Conditional Logic in Clips**

Conditional logic is **parsed but never executed**.\
Instead, each branch becomes its own clip.

**Example**

```clb
H="Make Radio"
^!If ^%p_ReqValue% = "FMA Requirements" FMA ELSE Generic

:Generic
^!RunScript makeRadio

:FMA
^!RunScript makeRadioFMA
```

Becomes two selectable clips:

* `Make Radio:Generic`
* `Make Radio:FMA`

### **5. Script Clips in Metaforms**

Script Clips let you run Python code to transform text in the editor.

#### **The Input/Output Contract**

* **Input (Mandatory)**\
  Must begin with:

  ```python
  from sys import stdin
  input = stdin.read()
  ```

  → This captures the selected text from the editor.
* **Output**\
  Use `print` to return transformed text, which replaces the selection.

#### **Allowed vs Restricted Capabilities**

✅ Allowed:

* String manipulation, loops, regex (`re` module).
* Full Python standard library (except restricted features).

❌ Restricted:

* File access (`open()`, `os.path`).
* Network requests (`urllib`, `requests`).
* Non-standard libraries.

### **6. Script Example**

**`.clb` Definition**

```clb
H="Make li per line"
^!RunScript makeLi

H="makeLi"
try:
    from sys import stdin
    input = stdin.read().strip()
    lines = input.split("\n")
    for line in lines:
        print "<li>%s</li>" % line.strip()
except Exception, e:
    print e
```

**User Action**\
Selected text:

```
First item
Second item
Third item
```

**Result After Running Clip**

```html
<li>First item</li>
<li>Second item</li>
<li>Third item</li>
```

***

### **7. Unsupported Syntax**

Some NoteTab commands rely on state or desktop UI and cannot be replicated in a web environment.

#### **Ignored or Modified**

| Command / Syntax                      | Metaforms Behavior                                 |
| ------------------------------------- | -------------------------------------------------- |
| `^!Set`, `^!SetArray`, `^!Append`     | Ignored – no persistent variables.                 |
| Variable usage (`^%Var%`)             | Ignored – placeholders not substituted.            |
| `^!If`, `^!IfFalse`                   | Parsed only – branches imported as separate clips. |
| `^!Prompt`, `^!StatusShow`, `^!Delay` | Ignored – no UI dialogs.                           |
| `^!URL`                               | Ignored – won’t open links.                        |
| `^!GoTo`                              | Parsed only for conditional branches.              |

### **8. Troubleshooting**

* **Error: "Unable to Parse this file"**\
  → File may not be a valid `.clb` (missing `H="..."` headers).
* **Missing Clips After Import**\
  → Headers like `H=";"` are ignored. Use descriptive names.
* **Python Script Doesn’t Appear**\
  → Script blocks must be called with `^!RunScript`. Standalone scripts are ignored.
* **Script Runs but Fails**\
  → May use unsupported features (file I/O, networking). Simplify logic to text-only processing.


# Quota Sheet

Metaforms allows you to create precise, flexible **quota structures** for your surveys - controlling who can complete them and in what proportions. This is especially useful when targeting specific demographics like gender, age groups, or region splits.

Metaforms makes it seamless to define quotas using AI - no need to write complex logic or count values manually.

## **Setting Up Quota Sheet:**

* Press `cmd + K` or `ctrl + K` (or click the AI button at the top) to open the **AI Command Menu**.
* The AI will generate a **Quota Sheet** in tabular format.

<figure><img src="/files/6vBMudx6UAvT6vzMJLZM" alt=""><figcaption></figcaption></figure>

## Enforcing Quotas:

The AI-generated quota sheet acts as a reference, but to enforce quotas during runtime:

* Switch to the **XML Editor**.
* Use `cmd + K` / `ctrl + K`or click **“Generate/Edit with AI”**, and prompt:

  > “Add quota tags based on the Quota Sheet.”
* The AI will insert `<quota>` tags into your XML automatically.


# Version History

Metaforms automatically **logs every change** you make to both the **XML Sheet** and the **Quota Sheet**. This built-in version control ensures transparency and safety as you build or modify surveys.

<figure><img src="/files/Mn8ceBJ6FLYC23xVxT76" alt=""><figcaption></figcaption></figure>

#### Key Features:

* **Auto-Save & Logging**: All edits - manual or AI-generated - are saved with timestamps.
* **Compare Versions**: Review differences between previous and current versions to track who changed what.
* **One-Click Revert**: Easily roll back to any earlier version if needed, ensuring you’re never stuck with a mistake.

<figure><img src="/files/Bhwa6TsBSCTwe6J3hAOR" alt=""><figcaption></figcaption></figure>


# File Preview

The **File Preview** panel - visible on the right side of the Build screen - is where you can view all documents uploaded to Metaforms, most commonly the **questionnaire**.

**Key Features:**

* **Import Files**: Upload new documents or updated versions of an existing questionnaire using the **Import** button. Click on "Upload new File(s)" to add new files and "Upload new version of ...Doc..." for replacing your existing Document.

{% hint style="info" %}
When you update an existing questionnaire, it triggers the **Change Management** flow which allows you to manage how document updates affect your XML.
{% endhint %}

* **View All Files**: Click **View all files** to browse every document associated with the project.
* **Open in Split**: Displays the document side-by-side with your XML editor in split view for easier reference while building.
* **Open in New Window**: Opens the document in a separate tab or window for full-screen access.
* **Download File**: Lets you download the document locally.
* **View History**: Shows a **timestamped history** of document uploads and updates, so you can track changes over time or revert if needed.

<figure><img src="/files/Duy3ns5fjZjtpimEUee8" alt=""><figcaption></figcaption></figure>


# Sync to Decipher

Metaforms integrates tightly with Decipher, enabling you to **sync files back and forth without leaving your workspace**. Whether you're pushing the latest XML or pulling updates from Decipher, everything stays in sync - securely and transparently.

## One-Click Syncing

Click the **Sync to Decipher** button in the top-right to immediately sync all files from Metaforms to your linked Decipher project.

Once synced:

* The **Test** button becomes active, launching a live Decipher preview in a new tab to review and test changes instantly.

## Sync Popup Features

Hovering over the **Sync to Decipher** button brings up a detailed popup panel with additional options:

* **Individual File Sync**: Sync or re-sync specific files one at a time, such as `survey.xml`, `secure.dat`, or `survey.log`.
* **Sync from Decipher**: Pull files from Decipher back into Metaforms if needed.
* **Error Handling**: If a sync fails, the popup will display an error message with a timestamp of the last successful sync.
* **Other Files Found in Decipher**: If Decipher contains files that haven't been synced into Metaforms yet, they will appear here with an option to import them directly.
* **All files uploaded to Metaforms** (except questionnaires and options list) are automatically synced to Decipher.

{% hint style="info" %}
`.txt` files are *not* supported by Decipher’s API, and must be uploaded manually in Decipher after uploading them to Metaforms or included as part of a template copied from Decipher.
{% endhint %}

<figure><img src="/files/VoklV02EjSFJzDLEOuoo" alt=""><figcaption></figcaption></figure>

## Errors & Refresh

* If your **XML or Quota Sheet contains errors**, they will be displayed beneath their respective editors during sync.
* Fix the errors, then click **Sync to Decipher** again to refresh and clear them.

## Conflict Resolution

If Metaforms detects that a file (XML or Quota Sheet) was updated or edited directly in Decipher:

* You will be shown a Conflict window that will prompt you to **'resolve conflicts'.**

<figure><img src="/files/k4Jb9E23l6TsdjilrTez" alt=""><figcaption></figcaption></figure>

* On clicking "**Resolve Conflicts**" you'll be prompted to either:
  * Continue working on the current version in Metaforms which then syncs your changes to Decipher, or
  * Pull the latest Decipher version into Metaforms before proceeding

<figure><img src="/files/pNCnS7QDXP0LFgbnIt7Y" alt=""><figcaption><p>Conflict Resolution screen with all conflicts highlighted</p></figcaption></figure>

In case your current version in Metaforms has errors, you will not be able to choose the Metaforms version as this can not be synced to Decipher. In this case, if you decide to go ahead with the Metaforms version, you will see a popup that asks you if you have resolved these errors.

<figure><img src="/files/b8dOA2kyvaSL8rTflUMj" alt=""><figcaption></figcaption></figure>

The Sync to Decipher would only be successful once these errors have been resolved.\
In case the errors are not solved, the Sync would fail and you would see a sync fail message.\
\
You can then continue to work on the survey post resolving conflicts.


# Migrating to a Different Server

Metaforms supports seamless **project migration** between Decipher servers. This helps when you need to move a study across regions, consolidate servers, or align with client hosting preferences - without rebuilding your project from scratch.

#### **Accessing the Migration Option**

You can start a migration directly from your survey project:

1. Hover over the **Sync** button in the top-right corner.
2. Click **Migrate** to open the **Migration Wizard**.

<figure><img src="/files/rdqCVsLm0tb26HSXrN4D" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}
On hovering over the Sync to Decipher button, you can also see the current server of the Project.
{% endhint %}

#### **Step 1: Setup Info**

Before starting, review the key details shown in the **Setup Info** screen.\
Migrating a project will:

* Move all survey-related files, including any additional uploaded files.
* Exclude `.txt` files - Metaforms cannot migrate `.txt` files to Decipher.

{% hint style="info" %}
After migration, existing users on the previous server may **lose access** to the survey.
{% endhint %}

Click **Continue** to proceed.

#### **Step 2: Choosing the Destination Server**

In this step, you’ll select where the project will move.

* Select the Decipher server you want to migrate the project to.
* The **current project’s server** will appear pre-selected for reference.

Once selected, Metaforms will connect to that server using the stored API credentials.

<figure><img src="/files/D2oNmdntSRqlCURlwpeb" alt=""><figcaption></figcaption></figure>

Click **Continue**.

#### **Step 3: Choosing a Project Creation Method**

Next, choose how you want the project to be created in the destination server. You have two options:

1. **Create a New Project**
   * This option creates a new project in the selected Decipher server.
   * You can optionally specify a **custom subdirectory and path** for where the new project will reside.

<figure><img src="/files/5U1phMolTquuNwGNT5Gl" alt=""><figcaption></figcaption></figure>

2. **Import and Migrate to an Existing Project**

* Choose this if the destination project already exists.
* Metaforms will migrate the survey files and overwrite the corresponding content in the selected project.

<figure><img src="/files/tKcwRDIB9Ch4dkbjrhEF" alt=""><figcaption></figcaption></figure>

Click **Start Migration** to start the process.

#### **After Migration**

Once migration is complete:

* Metaforms will display a confirmation message with the **new server path** and **project link**.
* You can continue working on the survey from the new Decipher server immediately.

<figure><img src="/files/EhxXCQPYu3ownbGhnzwR" alt=""><figcaption></figcaption></figure>


# Overview Page Walkthrough

The **Overview** tab in Metaforms provides a centralized snapshot of your survey project. Whether you're building from a template or setting up a new tracker, this page serves as your project’s control center. It offers visibility into high-level metadata, user permissions, sync status, and AI-generated content history - all in one glance. From here, you can manage access, monitor generation logs, and convert survey types (e.g., from Adhoc to Tracker).

<figure><img src="/files/oOyEn9ilhO7oNRZ9WyCK" alt=""><figcaption></figcaption></figure>


# Project Details

This section captures the core attributes of your survey project:

* **Survey Name**: The name of the survey file currently being worked on.
* **Created By**: Shows the Metaforms user who initiated the survey.
* **Created At**: Timestamp indicating when the project was created.
* **Template**: Refers to the base structure used to generate the survey (e.g., Generalized Template).
* **Survey Type**:
  * Defaults to **Adhoc** (one-time or non-repeating survey).
  * You can click **"Convert to Tracker Study"** to initiate a Tracker Study.
  * This allows you to version your studies over time, useful for brand trackers or multi-wave research.

<figure><img src="/files/XALpJlMXQ5mxxPo8li9X" alt=""><figcaption></figcaption></figure>


# Permissions

Located to the right of the overview screen, the **Access Management** panel gives granular control over who can collaborate on the project:

* **User/Group List**: Shows all users or teams added to the project.
* **Search & Filter**: Use the search bar to filter by user or group name.
* **Add User/Group**: Allows inviting teammates with specific access levels.

<figure><img src="/files/MfyPVtMZzB4FbaZ6qVI2" alt=""><figcaption></figcaption></figure>


# Generation History

The **Generation History** section keeps a log of all AI-powered content creation and editing activity within the survey.

Once generation is triggered, the following details are logged:

* **Timestamp** of when the generation occurred.
* **Tag** indicating the action used - e.g., `Generate with AI`, `Edit with AI`.
* **User prompt/instruction** - A brief note summarizing what was requested (e.g., *“Create up to next 3 questions only carefully.”*).

If no generation activity has occurred yet, you'll see a placeholder message:

> *“No generations yet. When you use Generate or Edit with AI, your history will appear here.”*

<figure><img src="/files/JtWWcn7xr090dvZXglpK" alt=""><figcaption></figcaption></figure>


# What are Templates?

Templates in Metaforms are predefined sets of rules and examples that shape how surveys are generated and programmed. Think of them as the **baseline code** or **configuration layer** that loads even before you begin programming a survey.

Templates allow you to build on top of the model’s baseline intelligence with your own custom logic and instructions - helping standardise survey logic across teams and clients.

You can create new templates or change existing templates by navigating to **Templates** tab.

Templates are built using:

* **Shell** - This includes a baseline XML, Quota sheet and other files that you can set for every single template. These also include Dynamic placeholders to be filled by AI based on the questionnaires used.

<figure><img src="/files/uXVkCkO3PfAjV6af9H3I" alt=""><figcaption></figcaption></figure>

* **AI Rules** – Clear, detailed instructions that guide how questions should be interpreted and generated.
  * **XML Examples** – Sample question structures that demonstrate the expected output.
  * **Explanations** – Supporting notes that clarify how rules should be applied.
  * **Instructions** - An explanation on how AI should generate code when this template is used.

<figure><img src="/files/mihZEdzXXtCxQUa2Podm" alt=""><figcaption></figcaption></figure>

The better defined your rules and examples, the more accurate and consistent your outputs will be.

## **Improving a Template (Continuous Tuning Process)**

To update a template effectively:

1. **Check if the rule already exists.**
   * If it does but isn’t working well, identify the failing part and update the explanation.
2. **Look for conflicting examples.**
   * Remove or reword anything that contradicts your intended logic.
3. **Improve clarity.**
   * If a rule works but isn’t well documented, add it as a distinct entry under AI Rules.
4. **Add new rules as needed.**
   * Clearly define any missing logic and support it with relevant examples and explanations.
5. **Test changes.**
   * Save the updated template, refresh the survey, and re-generate the same questions to confirm that the behaviour has been fixed.

{% hint style="info" %}
This is a **continuous improvement** process. Every refinement reduces future manual intervention and speeds up programming.
{% endhint %}

## **Using a Template in Your Survey**

To apply a template to your survey project:

* Select the desired template during **Step 2: Setup** when creating a new project in Metaforms.

{% embed url="<https://www.youtube.com/watch?list=PLHbQhZhtp5j-5YZc2HF_AW3cwwuGKSul8&v=zUpro8JfwCY>" %}


# What are Templates?

#### **Overview**

Templates are reusable survey shells that help you standardise structure and speed up project creation. A Template contains your survey XML shell and any linked AI rule folders that should be utilised by default when creating a new project.

Templates allow you to build on top of the model’s baseline intelligence with your own custom logic and instructions - helping standardise survey logic across teams and clients.

You can create new templates or change existing templates by navigating to **Templates** tab.

This includes a baseline XML, Quota sheet and other files that you can set for every single template. These also include Dynamic placeholders to be filled by AI based on the questionnaires used.

#### **Creating a Template**

1. On your Survey Programming Dashboard go to **Templates**
2. Click **Create Template**
3. Choose your **Survey Hosting Platform**
4. Add your **survey XML** and files
5. Click **Save**

Your Template will now appear in the Templates list.

{% hint style="info" %}
You can import a pre-existing Decipher XML file using "Copy from Decipher" option to use as a Template
{% endhint %}

#### **Linking AI Rule Folders to a Template**

You can link AI Rule Folders to a template so that relevant rules are pre-selected while creating a project.

1. Open the Template from the Templates list
2. Click **AI Rule Folders** at the top
3. Select one or more folders to link
4. Save the Template

<figure><img src="/files/7S357IXSugmPgj9l9R7r" alt=""><figcaption></figcaption></figure>


# AI Rules

#### **Overview**

AI Rules allow you to define and organise programming logic that guides Metaforms’ for survey XML generation. Each folder contains one or more AI Rules, along with shared instructions that help the Metaforms to generate accurate XML for your hosting platform. These Folders help you define and set AI rules into categories that an individual survey programmer, a client or a team may need.

#### **What an AI Rule Folder Includes**

* Folder-level instructions
* A collection of AI Rules
* Hosting platform selection
* Usage insights
* Version history for each rule

#### **AI Rule Folder Types**

| Folder Type     | Behavior                                                                                                    |
| --------------- | ----------------------------------------------------------------------------------------------------------- |
| **Always**      | Applied to every project. Cannot be removed during project creation.                                        |
| **If Selected** | Optional. Can be checked or unchecked during project creation. Pre-selected only when linked to a Template. |

#### **Creating an AI Rule Folder**

1. **On Survey Programming** Dashboard go to **AI Rules**
2. Click **Create**
3. Enter a **Folder Name**
4. Select **When to Use** (Always or If Selected)
5. Choose **Who Can Edit** the folder
6. Choose the **Survey Hosting Platform**
7. Click **Create**

<figure><img src="/files/5oKiewhqhFcRDEYSxZLy" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}
"Always" Folders would be applied to every project and cannot be removed unless archived (deleted).
{% endhint %}

#### **Adding AI Rules to a Folder**

1. Open the folder from the AI Rules list
2. Click **Create Rule**
3. Enter a **Rule Name**
4. Add:
   * **Explanation**
   * **Examples**
   * **XML instructions**
5. Save the rule

<figure><img src="/files/xttDWpQ8BwmvgQ7kRdAG" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/x8avwp4D2zlNF6wnulq6" alt=""><figcaption></figcaption></figure>

**AI Rules** should be Clear, detailed instructions that guide how questions should be interpreted and generated.

* **XML Examples** – Sample question structures that demonstrate the expected output.
* **Explanations** – Supporting notes that clarify how rules should be applied.
* **Instructions** - An explanation on how AI should generate code when this template is used.

The better defined your rules and examples, the more accurate and consistent your outputs will be.

#### **Applying AI Rule Folders in a Project**

When creating a new project:

1. Select a **Template** (optional)
2. On the AI Rules screen:
   * *"Always" folders* are auto-applied
   * *"If Selected" folders* can be checked or unchecked
3. Continue to project creation

<figure><img src="/files/8mlVIiQeSCDiDeApas3G" alt=""><figcaption></figcaption></figure>

After the project is created, you can still:

* Add or remove folders from the **AI Rule Folders** button in the project

![](/files/O8l9kY3jDtAQRZlsnfb4) ![](/files/nsb9HxSGWljTxb7qsU2i)

## **Improving AI Rules (Continuous Tuning Process)**

To update an AI rule effectively:

1. **Check if the rule already exists.**
   * If it does but isn’t working well, identify the failing part and update the explanation.
2. **Look for conflicting examples.**
   * Remove or reword anything that contradicts your intended logic.
3. **Improve clarity.**
   * If a rule works but isn’t well documented, add it as a distinct entry under AI Rules.
4. **Add new rules as needed.**
   * Clearly define any missing logic and support it with relevant examples and explanations.
5. **Test changes.**
   * Save the updated AI rule, refresh the survey, and re-generate the same questions to confirm that the behaviour has been fixed.

{% hint style="info" %}
This is a **continuous improvement** process. Every refinement reduces future manual intervention and speeds up programming.
{% endhint %}


# Think Hard mode

**Metaforms comes with your very own AI deep-thinker.**

**Think Hard Mode** – a toggle designed for those moments when your survey logic gets truly complex, and you need AI that doesn't just rush through but carefully plans its next move.

## What is Think Hard Mode?

When enabled, **Think Hard Mode** lets Metaforms’ AI slow down and reason through the most challenging parts of survey programming — giving you more structured, reliable, and production-ready outputs.

You'll find the toggle inside the **Generate / Edit with AI** panel in your XML editor.

## When to Enable Think Hard Mode:

Use it when working with:

* **Complex multi-question validations**\
  e.g. multiple interdependent rows requiring unique logic
* **Advanced styling/scripting tasks**\
  e.g. inserting JS/CSS for layout refinements or conditional hiding
* **Nested loops or hidden logic layers**\
  e.g. MaxDiff, Conjoint, or any repeated structure with conditional display
* Any other complex scenarios where you think there needs to be deeper thinking.

## Think Hard Mode in Action

A Before/After example of using Think Hard Mode for a MaxDiff Question to help you understand it's power.

**Without Think Hard Mode**

The AI focuses on getting you a quick structure — but may miss advanced validation or styling nuances.

<figure><img src="/files/RMra5xd24AMRo7izpnby" alt=""><figcaption></figcaption></figure>

**With Think Hard Mode**

Notice the difference — deeper validations, cell-level JS customizations, and structured loop logic ready for live deployment.

<figure><img src="/files/y5sYkN9zIW6X8TBXss5Y" alt=""><figcaption></figcaption></figure>

## Where to Find It?

1. Navigate to any question in your **XML tab**
2. Click **Generate/Edit with AI**

<figure><img src="/files/yC7X8QTti1pLzDpXiGVA" alt=""><figcaption></figcaption></figure>


# AI Prompt Assistant

No more second-guessing what to do next in the scripting process!

Metaforms includes a built-in **AI Prompt Assistant** to help streamline the process of generating survey code. This feature is designed to improve both the quality and speed of XML generation — particularly useful for users who are working with large questionnaires or repeating question types.

* Save time when creating large or repetitive surveys
* Get more accurate XML by improving the quality of AI instructions
* Maintain momentum without repeatedly referring back to the questionnaire file

## How does it work?

These suggestions appear as editable prompts in a box labeled “Suggested by AI.” You can modify the prompt or accept it as-is. This allows users to take full control over how instructions are interpreted by the AI — reducing incorrect outputs and making troubleshooting easier.

* 📝 The questionnaire file you’ve uploaded
* 🧩 The XML that has already been generated so far

## Auto-Accept Mode (Optional, but powerful)

If you want to go full autopilot - especially when you’re working on structured sections like demographics or screeners - just turn on **Auto-Accept**.

With Auto-Accept enabled:

* The AI assistant auto-accepts each prompt
* Generates the XML
* Waits 10 seconds... so you can quickly review if it needs any changes
* Then moves on to suggest and generate the next block\
  All without you having to click a thing.

Perfect for speeding through predictable or templated segments — while still leaving you in control for reviews and edits.

## How to Enable your AI Assistant?

To turn on the AI Prompt Assistant:

1. Navigate to **Settings → Features**
2. Under **Beta AI Features**, enable **AI Prompt Suggestions**

<figure><img src="/files/XZhZBMwQvxZfW9nlGbPl" alt=""><figcaption></figcaption></figure>

3. Inside the XML tab of your survey, you’ll start seeing suggested prompts
4. You can toggle **Auto-Accept Mode** from the suggestion box itself

<figure><img src="/files/F0h15vBCH3fb028ZJemu" alt=""><figcaption></figcaption></figure>

## Why It Helps

Think of this as your AI co-pilot — helping you stay focused on logic, validation, and structure while it takes care of the grunt work. Whether you're scripting a few questions or working through a 40-page tracker, AI Prompt Suggestions help you keep building without stopping to plan every move.


# Unified Flow


# Unified Flow for Survey Programming

Improvements and Efficiencies Compared to the Legacy Flow

## Introduction

The Unified Flow is the next generation of the Metaforms survey programming experience for Decipher. While the workflow looks different from the Legacy Flow, every change has been made with one goal: reducing the number of manual steps, clicks, and repeated instructions needed to program a survey, so your programmers spend their time on survey logic rather than on operating the tool.

This document outlines the specific improvements and efficiencies your team will gain when transitioning from the Legacy Flow to the Unified Flow. Each section explains how a task worked in the Legacy Flow, how it works now, and the practical benefit of the change.

## Improvements and Efficiencies

### 1. Quota Programming in a Single Step

**In the Legacy Flow:** Creating a quota was a two-to-three step process. You first created the quota in the quota sheet using AI generation, then returned to the XML tab, placed your cursor in the correct location, and separately generated the matching quota tag so the sheet and XML stayed aligned.

**In the Unified Flow:** A single prompt such as “Create quota for gender” does everything at once. The AI generates the quota sheet and inserts the corresponding quota tag in the XML at the same time, keeping both perfectly in sync. This applies to complex setups as well, including cross quotas and dynamic priority quotas.

**What this means for you:** Quota programming drops from a multi-step, two-tab workflow to one instruction. There is no risk of the quota sheet and XML drifting out of sync because they are generated together.

### 2. Edit with AI — No Need to Select Code

**In the Legacy Flow:** To edit a specific section, you had to scroll to and select the exact XML lines you wanted to change, press Ctrl+K to open the Edit with AI widget, and then provide your instruction inside that widget. The edit only applied to the selection you made.

**In the Unified Flow:** You simply describe the change in the AI Assistant chat box. The AI identifies where in the script the edit needs to be made and applies it — even if the change spans multiple questions. If you want to target a specific place, you can include the question ID (QID) in your prompt.

**What this means for you:** No more hunting through the XML to find and select the right lines before every edit. You describe what you want; the AI finds where it belongs.

### 3. Faster Survey-Wide Edits

**In the Legacy Flow:** Applying a generic change across the entire survey (for example, a formatting or text convention that affects every question) meant repeating the select-and-edit process section by section, which was slow for large scripts.

**In the Unified Flow:** A single instruction in the chat applies a generic edit across the whole survey in one pass. The AI locates every place the change is needed and updates them together.

**What this means for you:** Global changes that previously took many repeated edit cycles are completed significantly faster, with consistent results across the full script.

### 4. Your Manual Edits Are Understood and Respected

**In the Legacy Flow:** If a programmer made manual edits directly in the XML, subsequent AI generations had no reliable awareness of those changes, so the AI could produce output that did not follow the pattern the programmer had established by hand.

**In the Unified Flow:** The AI specifically reads your manual edits before each generation to understand what you have changed. When it continues generating, it follows the patterns and conventions you have established in the script.

**What this means for you:** Much higher probability that AI output matches your hand-written style and structure. Manual work and AI work blend together instead of fighting each other, reducing rework.

### 5. No Specialization Selection Required

**In the Legacy Flow:** Before programming a complex question, you had to make sure the correct specialization (for example, MaxDiff, Conjoint, or a JavaScript-based setup) was selected, and only then create the question. Choosing the wrong specialization meant redoing the work.

**In the Unified Flow:** There is no specialization selector. You simply mention the logic or methodology in your prompt — for example “Use JS for this QID”, “Program this QID using the MaxDiff indices method”, or “Program this QID using a custom Conjoint method” — and Metaforms handles it based on your instruction.

**What this means for you:** One less configuration decision before every complex question, and no penalty for not knowing in advance which specialization a question requires. The methodology is driven by plain-language prompts.

### 6. Fewer Edits on Complex Logic (JavaScript, MaxDiff, Conjoint)

**In the Legacy Flow:** Complex setups involving custom JavaScript, MaxDiff, or Conjoint typically required several rounds of generation and correction before the output matched the intended behavior.

**In the Unified Flow:** Because the agent reasons through the requirement and asks clarifying questions before programming, the number of edits required for these complex setups is considerably lower. The first output is much closer to the final result, and refinements are handled through simple follow-up prompts.

**What this means for you:** The most time-consuming parts of survey programming — advanced logic and specialized methodologies — need noticeably fewer correction cycles, which is where the largest time savings are realized.

### 7. One Chat, Full Context — No Repeating Yourself

**In the Legacy Flow:** Each generation or edit was an isolated action. If you established an instruction or convention for one question, you had to repeat that instruction every time you worked on another part of the survey, because the tool retained no memory of your earlier requests.

**In the Unified Flow:** All programming happens in a single AI Assistant conversation, so the AI has the full context of everything that has happened in the script. If you give an instruction once — for example, a styling convention or a logic pattern for a particular question type — the AI carries that context forward and applies it without being told again.

**What this means for you:** Less typing, fewer repeated instructions, and more consistent output across the survey. The tool learns your project’s conventions as you go.

### 8. Long Questionnaires No Longer Break Generation

**In the Legacy Flow:** The generation widget read the entire questionnaire for every generation or edit. For long QNRs, this could cause generation to fail outright because of the document’s size, sometimes forcing manual workarounds such as trimming the file.

**In the Unified Flow:** The agent reads only the questions and sections it actually needs for the current generation or edit, rather than the whole questionnaire every time. Large, complex questionnaires are processed in manageable parts.

**What this means for you:** Long questionnaires — including very large multi-sheet documents — can be programmed smoothly from start to finish, without the size-related generation failures seen in the Legacy Flow.

### 9. Restructure Your XML with a Prompt

**In the Legacy Flow:** Structural reorganization of the script — for example, moving all res tags to the start of the XML — was either not practically possible or extremely slow, since it had to be done through manual cut-and-paste across the file.

**In the Unified Flow:** These structural moves are now possible and fast. You describe the reorganization you want in the chat, and the AI restructures the script accordingly in a fraction of the time.

**What this means for you:** Script housekeeping and standards alignment that programmers previously avoided (or did painfully by hand) becomes a quick, prompt-driven task.

### 10. Ask the AI Why — and Keep Asking

**In the Legacy Flow:** There was no meaningful way to interrogate the tool about its output. If you wanted to understand why a script was implemented a certain way, you had to reverse-engineer the code yourself.

**In the Unified Flow:** You can ask the AI directly why a script is implemented the way it is, and then ask follow-up questions for further clarification — all within the same conversation. The AI explains its reasoning with full awareness of your project’s context.

**What this means for you:** Faster reviews, easier debugging, and a built-in learning resource. Junior programmers can understand advanced setups by asking, and senior programmers can validate the AI’s decisions before accepting changes.

### 11. Template Instructions Are Applied Automatically — No More Apply Button

**In the Legacy Flow:** If your organization had template instructions set up, programmers had to manually click the Apply button above each template instruction to insert the required code for that specific step. This had to be repeated for every instruction, on every project.

**In the Unified Flow:** There is no Apply button. The AI reads and applies your template instructions automatically while generating questions in the chat. Programmers simply proceed with their work, and the template setup is taken care of in the background. If a template has no instructions configured, nothing changes for the user.

**What this means for you:** One fewer manual workflow to remember and repeat on every project.

### 12. A Head Start on Change Management

**In the Legacy Flow:** Change Management is not available in the Legacy Flow.

**In the Unified Flow:** Change Management is built on the same agent architecture as ad-hoc survey programming in the Unified Flow — the same AI Assistant chat, the same accept/reject review workflow, and the same prompt-driven way of working. Every ad-hoc project your team programs in the Unified Flow is, at the same time, hands-on practice for Change Management.

**What this means for you:** By adopting the Unified Flow for ad-hoc projects now, your team becomes familiar with the platform and is ready to use Change Management effectively

## Summary

Taken together, these changes remove the most repetitive mechanics of the Legacy Flow — applying template instructions, multi-step quota creation, selecting code before every edit, repeating instructions, and choosing specializations — and replace them with a single, context-aware assistant that understands your questionnaire, your script, and your manual edits.

There is a learning curve in moving from direct script editing to a prompt-driven workflow, and we expect the first projects to feel different. But once your team is past that initial adjustment, the Unified Flow consistently requires fewer steps, fewer corrections, and less time per survey than the Legacy Flow — and it is where all new capabilities, such as Change Management, are being built. The Legacy Flow remains accessible throughout your transition, so your team can adopt the Unified Flow at a comfortable pace without any disruption to live work.

<br>


# Connect Metaforms to Decipher

To integrate Metaforms with Decipher, the setup happens in two layers:

1. **Connect your Decipher instance(s)** (organization-level)
2. **Add user API keys to a specific instance** (user-level)

## Connect Your Decipher Instance(s)

If your organization uses multiple Decipher environments (EU, UK, US, etc.), you must first register them in Metaforms.

> This is a one-time setup per instance.

Follow the steps below to connect your Decipher account to Metaforms.

**Step 1: C**lick on the **Manager's Dashboard**

<figure><img src="/files/jgoxdJ0RlojPtuNRbjxu" alt=""><figcaption></figcaption></figure>

**Step 2:** In the Integrations tab, click on "New Account"

<figure><img src="/files/g5xwyDR5X19araujBXy6" alt=""><figcaption></figcaption></figure>

**Step 3:** In the dialog, enter the Account Name (which can be internal classifications for teams/instances) and the corresponding Decipher Domain for that instance (example: your EU team's Decipher server domain could be eu.your-company-domain.com), and then click on "Create Account"

<figure><img src="/files/Fxgo9Tf20sdG8IcWjwA4" alt=""><figcaption></figcaption></figure>

## **Add user API keys to a specific instance**

API Keys enable syncing the generated XML code on Metaforms to your Decipher project and vice-versa.

* The **roles and access permissions in Metaforms** only control access *within Metaforms*.
* To sync data between Metaforms and Decipher, the user must have a valid **Decipher API key** with the necessary permissions.
* Decipher uses **user-level** API keys, there are **no org-level or project-level** keys.
* A user’s **API key inherits their Decipher permissions**.
* Hence, each user must generate and add their own API key **for every Decipher instance they want to sync and work with.**

Follow the steps below to generate and configure your API key:

### :wrench: Generate your Decipher key

* **Log in** to your [Decipher](https://singapore.decipherinc.com/login) account.
* Click your **User ID** in the top-right corner.
* Select **API Access** from the dropdown menu.

<figure><img src="/files/D7Au9JgSGwLV5jceuSn6" alt=""><figcaption></figcaption></figure>

* Click **Create New API Key**.

<figure><img src="/files/h2taJ0xKgfXsyguiXIlL" alt=""><figcaption></figcaption></figure>

* In the prompt:
  * **What User?** → Type **self**
  * **Any Restrictions?** → Leave blank (unless specific restrictions are required).
* Your new **API Key** will appear in a pop-up window.

{% hint style="info" %}
**Important:** Copy and store this key securely. It is **only shown once** during creation.
{% endhint %}

### :link: Add API Key to Metaforms

1. **Log in** to your Metaforms account.
2. Navigate to **Settings > Integrations** page.
3. Selecting the specific Decipher Instance, click on **Set Key** next to your email address in the top bar.

<figure><img src="/files/empO6a5hgicvjdVvKBVX" alt=""><figcaption></figcaption></figure>

1. **Paste** the API Key into the pop-up dialog.
2. Click **Verify and Save**.

Once done, your Metaforms account is successfully linked to Decipher, and project syncing can begin.

## :bulb: Recommended Workflow for Metaforms + Decipher

**🔄 First-Time Setup**

Admins:

1. Add all required Decipher instances in Metaforms
2. Replicate Decipher user groups by creating corresponding **User Groups** in Metaforms.

Each user:

1. Identifies which instance(s) they work with
2. Generates API key(s) for those instance(s)
3. Adds them under the correct instance in Metaforms

**📁 During Project Creation**

1. Create the project in Metaforms (from scratch or by importing from Decipher).
2. Go to the **Overview** tab of the new project in Metaforms and assign the appropriate **User Groups**.
3. Open the same project in Decipher, go to its **Overview** page, and assign the corresponding **Decipher user groups**.


# Starting a Decipher Project in Unified Flow

Get started with MetaForms by creating a new Decipher project and configuring it through the setup wizard. This guide walks you through project creation, uploading your questionnaire, and selecting your build preferences.

***

### Create a New Project

**Step 1:** From the Projects page, select **New Project**.

![](https://usercontent.in.prod.clueso.io/743138ba-7933-4a1a-90b2-26ddeb90ccbd/05bff956-b6b9-43fb-a3e7-da02dc5a8ddc/72abdf46-28de-4a4d-984b-fc8019b95247/images/3255e7a8-d2fc-4503-bfc6-75004051e6b6.png)

**Step 2:** Enter your **project name** and **project ID** (used for internal tracking), then click **Create Project**.

![](https://usercontent.in.prod.clueso.io/743138ba-7933-4a1a-90b2-26ddeb90ccbd/05bff956-b6b9-43fb-a3e7-da02dc5a8ddc/72abdf46-28de-4a4d-984b-fc8019b95247/images/bd73a3c6-9bdf-4843-a9a2-81f5c0fd8a0d.png)

***

### Upload Your Questionnaire

**Step 4:** In the left menu, hover and select **Build**.

![](https://usercontent.in.prod.clueso.io/743138ba-7933-4a1a-90b2-26ddeb90ccbd/05bff956-b6b9-43fb-a3e7-da02dc5a8ddc/72abdf46-28de-4a4d-984b-fc8019b95247/images/318cf00e-0656-4a7b-8410-0ff61c67ee29.png)

**Step 5:** Upload your questionnaire file and click **Upload**.

![](https://usercontent.in.prod.clueso.io/743138ba-7933-4a1a-90b2-26ddeb90ccbd/05bff956-b6b9-43fb-a3e7-da02dc5a8ddc/72abdf46-28de-4a4d-984b-fc8019b95247/images/e1eec8d5-14c6-4d26-94fd-00d7342d7f0f.png)

**Step 6:** On the confirmation screen, click **Start Building**.

![](https://usercontent.in.prod.clueso.io/743138ba-7933-4a1a-90b2-26ddeb90ccbd/05bff956-b6b9-43fb-a3e7-da02dc5a8ddc/72abdf46-28de-4a4d-984b-fc8019b95247/images/652a0f3c-4614-46a6-80a6-62ad328f8f08.png)

***

### Configure the Setup Wizard

**Step 7:** Choose **Forsta Decipher** as your survey hosting platform and click **Next**.

<figure><img src="/files/qLNANgGaYtFdfXXyo0KH" alt=""><figcaption></figcaption></figure>

**Step 8:** Choose whether to start a **New Project** or work on an **Existing Project**.

* For an existing project, click **Browse** and select the Decipher project to import.

<figure><img src="/files/1APCwxr79e1JC1UqVVFf" alt=""><figcaption></figcaption></figure>

For a new project, choose your directory and choose your template

<figure><img src="/files/YGMwUXushJDCa486Evd1" alt=""><figcaption></figcaption></figure>

**Step 9:** Set up your **AI rules** if you have any, then upload any needed **option lists, media, or external files**.

![](https://usercontent.in.prod.clueso.io/743138ba-7933-4a1a-90b2-26ddeb90ccbd/05bff956-b6b9-43fb-a3e7-da02dc5a8ddc/72abdf46-28de-4a4d-984b-fc8019b95247/images/6c5a5d2b-ea40-4b28-92b5-3d70a80b438e.png)

![](https://usercontent.in.prod.clueso.io/743138ba-7933-4a1a-90b2-26ddeb90ccbd/05bff956-b6b9-43fb-a3e7-da02dc5a8ddc/72abdf46-28de-4a4d-984b-fc8019b95247/images/ae32ae59-db6b-47e5-8ac4-d863f842783f.png)

**Step 10:** Pick your specialization level — **Basic** or **Advanced** — and click **Start Programming**.

<figure><img src="/files/Mhq08uxUDfCjINk7wx7E" alt=""><figcaption></figcaption></figure>

You're now inside your workspace and ready to start programming. See [Build Page Walkthrough](/survey-programming-decipher/legacy-flow/build-page-walkthrough) to learn your way around.


# Generating a DAT file in Unified Flow

In Unified Flow, generate a `.dat` file for a **MaxDiff** or **Conjoint** study by asking the AI Assistant in project chat.

## Before you start

Make sure that:

* You are working in a Forsta Decipher project and have permission to edit it.
* The project contains the design workbook. Supported formats are `.xlsx`, `.xls`, and `.xlsm`.
* You know which worksheet contains the design matrix that should be converted.
* You know whether the design is **MaxDiff** or **Conjoint**.

If the workbook is not in the project, upload it from the **Files** panel before starting generation.

## Generate through the AI Assistant

**Step 1:** Open the project, go to the **Build** page, and open the **AI Assistant** chat. Ask the assistant to generate the file. For example:

> Generate a DAT file from the design workbook in this project.

<figure><img src="/files/JCHELLsuXjB5xRhyJIl1" alt="AI Assistant with a request to generate a DAT file"><figcaption></figcaption></figure>

**Step 2:** The assistant checks the available Excel workbooks and worksheets. If there is more than one suitable option, select the workbook and worksheet that contain the design matrix. Then:

* Choose **MaxDiff** for a best-worst scaling design or **Conjoint** for an attribute trade-off design.
* Enter the output `.dat` file name using letters, numbers, hyphens, or underscores. The assistant adds the `.dat` extension if you omit it.

<figure><img src="/files/YwK0zSshpwSdaa76Ctln" alt="DAT generation type and output file name selected in the AI Assistant"><figcaption></figcaption></figure>

**Step 3:** Review the confirmation summary. Check the workbook, worksheet, generation type, and output file name, select **Yes**, and submit the response to start generation.

<figure><img src="/files/E4PjtVG7UTjUAkHPUBWD" alt="Confirmation summary before DAT file generation"><figcaption></figcaption></figure>

**Step 4:** When generation finishes, review the generated rows and columns. Make any necessary edits, then select **Save to Project**.

<figure><img src="/files/dOrNuqLfanmURQvVrBIY" alt="Generated DAT file review dialog with Save to Project action"><figcaption></figcaption></figure>

**Step 5:** Open the **Files** panel and the new `.dat` file appears under **DAT Files**.

<figure><img src="/files/zxmXs0TUs01XuQxE97pI" alt="Generated DAT file in the project Files panel"><figcaption></figcaption></figure>

## Troubleshooting

* **Open or edit an existing DAT file:** Go to the **Files** panel, select the `.dat` file, make the required changes, and save it.
* **The assistant cannot start generation:** Confirm that the project uses Forsta Decipher.
* **No workbook is available:** Upload an `.xlsx`, `.xls`, or `.xlsm` file from the **Files** panel, then ask the assistant again.
* **The expected worksheet is missing:** Open the source workbook and confirm that the design matrix is stored in a named worksheet and that the workbook is not corrupted.


# Change Management

Use Change Management when an existing Decipher project has a revised questionnaire or related project files—for example, for a new wave or after client feedback. It helps you identify the update, resolve any ambiguity, and apply the resulting changes with a reviewable record.

## Before you begin

You need an existing project with its current questionnaire loaded or its Decipher XML imported, plus the revised files for the next version. Changes are easiest to identify when the revised questionnaire uses tracked changes or highlights. See [What We Support](/survey-programming-decipher/unified-flow/change-management/what-we-support) for the full guidance and limitations.

## The workflow at a glance

1. [Start a new version](/survey-programming-decipher/unified-flow/change-management/starting-a-new-version) — upload the revised files, choose how to manage the Decipher survey, and start Change Management.
2. [Review changes](/survey-programming-decipher/unified-flow/change-management/review-stage) — answer, dismiss, or add clarifications so the intended change is clear.
3. [Apply changes](/survey-programming-decipher/unified-flow/change-management/apply-stage) — preview and accept each proposed update, then finish the version.

{% hint style="info" %}
Change Management proposes and applies updates; it does not replace your final QA. Review the generated clarifications and previews before finishing the version.
{% endhint %}

If the workflow does not behave as expected, see [Troubleshooting](/survey-programming-decipher/unified-flow/change-management/troubleshooting).


# What We Support

Change Management works best when the updated questionnaire clearly shows what changed. This helps Metaforms identify the right updates, ask the right follow-up questions, and guide you through applying the changes to your survey.

### Supported Inputs

Metaforms supports questionnaire updates that use:

* **Highlights** to mark new, changed, or important content.
* **Tracked changes** to show edits, additions, and removals directly in the document.

When these are present, Metaforms can use them as signals during the review and apply stages.

### Supported Change Types

Metaforms supports **cascading questions**. This means it can help with changes where one update affects related questions later in the questionnaire, such as follow-ups, dependent questions, or question flows that need to stay aligned.

### Current Limitations

Metaforms cannot yet reliably find every change between two questionnaire versions when the changes are not clearly marked.

For example, if you upload a new questionnaire without highlights or tracked changes, Metaforms may not always identify every difference between the old and new versions. You should review the generated clarifications and applied changes before finishing the version.

### Upcoming Roadmap

We are working on:

* **Better questionnaire version comparison** to improve change detection accuracy between questionnaire versions.
* **Changelog Excel file support** so changelog files can be used as another way to identify updates.

These improvements will help Metaforms identify changes more reliably, even when updates are not fully marked with highlights or tracked changes.


# Starting a new version

## Before you start

Before starting, make sure you have:

* The current questionnaire is already loaded in the project. You can also import the existing Decipher project XML; see [Starting a Decipher Project](/survey-programming-decipher/unified-flow/starting-a-decipher-project).
* You have the revised files ready to upload, such as the updated questionnaire.
* You know whether this is a new tracker wave. Select that option only when the version represents a new wave; it preserves past questions in the script.

{% hint style="info" %}
Files you do not remove during upload carry forward from the current version. Review the upload list carefully so an outdated file is not carried into the new version.
{% endhint %}

***

## Upload and start the new version

**Step 1:** Open your existing project in Metaforms and click **Upload New Version** in the Project top bar.

<figure><img src="/files/4FwQ9hhcF5dHClWKVTLR" alt=""><figcaption></figcaption></figure>

**Step 2:** Enter a name for the new version — this could be a wave name or any identifier that helps you track iterations.

{% hint style="info" %}
In a tracker study, you can select 'Mark this version as a new wave' to ensure that we preserve past questions in the script.
{% endhint %}

<figure><img src="/files/W2VL3T8Rgcb0kR2NTbWV" alt=""><figcaption></figcaption></figure>

**Step 3:** Upload the files you want to replace, such as the revised questionnaire. Files you leave in place carry forward from the current version.

<figure><img src="/files/XHcPa3myLMYyrwUoDDiG" alt=""><figcaption></figcaption></figure>

**Step 4:** Click **Create** to finalise the version. Metaforms will process your uploaded files and prompt you to choose how to proceed.

**Step 5:** Choose how to manage the new version in Decipher: create a duplicate survey or overwrite the existing project. Confirm this choice before continuing, especially for a live survey.

<figure><img src="/files/pINhEA1bzThmVLpyIGIg" alt=""><figcaption></figcaption></figure>

**Step 6:** Select **Change Management** to enter the structured review workflow, then click **Start Version**.

{% hint style="info" %}
If the survey is live, the updates sync to a temporary Decipher version and the AI avoids deleting questions or options.
{% endhint %}

<figure><img src="/files/WgrcmoNu44Y0LqrCN9p3" alt=""><figcaption></figcaption></figure>

You will now enter the **Review** stage. Next, [review the detected changes](/survey-programming-decipher/unified-flow/change-management/review-stage).


# Review Stage

The **Review** stage is where you make the intent behind each detected change clear before anything is applied to the script. Metaforms creates clarifications for changes that may be ambiguous; review them before moving to Apply.

## Your goal in this stage

For every clarification, decide whether it needs an answer. Answer items that need context, dismiss items that do not need action, and add a clarification when a missing question should be considered. You can move on with unresolved items, but they may block the related change in Apply.

***

### The Review Screen

When the review stage loads, you'll see:

* **Left:** The **clarification sheet** — a list of system-generated clarifications highlighting potentially ambiguous changes.
* **Right:** Your project files (questionnaire, scripts, quota files) for reference.

![](https://usercontent.in.prod.clueso.io/743138ba-7933-4a1a-90b2-26ddeb90ccbd/3e5aa6ac-618d-4b74-b0e4-2a048abafd8c/28b2c723-6911-4e71-bf54-5d410fee081c/images/e4a4756b-8cfd-4742-8fd8-b2acb6e8e907.png)

***

## Work through clarifications

**Step 1:** Review the generated clarifications. Each one highlights a change that may need further context or a decision.

![](https://usercontent.in.prod.clueso.io/743138ba-7933-4a1a-90b2-26ddeb90ccbd/3e5aa6ac-618d-4b74-b0e4-2a048abafd8c/28b2c723-6911-4e71-bf54-5d410fee081c/images/ed4e6b88-7a11-4c4c-91df-f19cb4ed778e.png)

**Step 2:** For each clarification, choose the outcome that best describes it:

* **Answer or comment** when the agent needs context or a decision.
* **Resolve** the item once the answer is complete.
* **Dismiss** it when no action is needed.

![](https://usercontent.in.prod.clueso.io/743138ba-7933-4a1a-90b2-26ddeb90ccbd/3e5aa6ac-618d-4b74-b0e4-2a048abafd8c/28b2c723-6911-4e71-bf54-5d410fee081c/images/106a8737-d1d3-44e5-bfb6-d206c32c4961.png)

You can also **add new clarifications** manually if additional questions arise, or **delete** ones that are no longer relevant.

**Step 3:** If you need to share clarifications externally (e.g., with a client or PM), click **Export Excel** to download the sheet.

<figure><img src="/files/gmESSTx9caZQkBSKxaxa" alt=""><figcaption></figcaption></figure>

***

## Move to Apply

**Step 4:** Once you've addressed all clarifications, click **Done Reviewing Changes** to move to the Apply stage where changes are applied to your scripts.

<figure><img src="/files/TQ4BbydT67lHFfOlRXkX" alt=""><figcaption></figcaption></figure>

{% hint style="warning" %}
You can move on without resolving every clarification. Unresolved items carry into Apply and can block the related questions until they are answered and checked.
{% endhint %}

Next, [apply the proposed changes](/survey-programming-decipher/unified-flow/change-management/apply-stage).


# Applying all changes

In **Apply**, work through the checklist to preview, accept, and finalise the proposed script updates. Treat each item as a review point: confirm the preview matches the intended questionnaire change before accepting it.

## Before you accept a change

Check the proposed XML and routing update against the revised questionnaire and any clarification answers. If the proposal is incomplete or incorrect, ask the Change Management agent to revise it rather than accepting it.

***

### The Apply Screen

* **Left:** A checklist of all questions (by ID, in order). You must work through the changes sequentially.
* **Middle:** The Change Management agent conversation and the currently selected Question card.
* **Right:** Review/Editor Workspace — XML, quota sheet, clarification sheet, and questionnaire.

<figure><img src="/files/aQ6Jv8hQlVSDcRThOvI4" alt=""><figcaption></figcaption></figure>

#### The checklist

You can click on any question to see the changes detected and the edit proposed. Along with describing what's changed and where, as you work through the changes using the checklist, it captures your progress with change management.

<figure><img src="/files/RVZFerNxG23EujlMCVLD" alt=""><figcaption></figcaption></figure>

***

## Preview, accept, and finish

**Step 1:** Once the checklist is generated, you will land on the first detected change.

<figure><img src="/files/PhZD0s0IUgJX3Y33FOOk" alt=""><figcaption></figcaption></figure>

**Step 2:** Review the suggested change and its description. Click **Preview Changes** to see a diff of exactly what will be modified in the XML.

<figure><img src="/files/QeFZmysxzBFRtuyzJFJh" alt=""><figcaption></figcaption></figure>

**Step 3:** If the preview is correct, click **Accept All** to apply it. The question status changes to **Done**. If it is incorrect, ask the agent to update the proposal, then review the new preview before accepting.

<figure><img src="/files/EbwKEQlQzmunxXz2N1N9" alt=""><figcaption></figcaption></figure>

**Step 4:** You can navigate to the next Change using the buttons in the Question item, or by clicking through the checklist on the left.

## Clarification-blocked questions

An unresolved clarification from the Review stage may block some questions. This will be shown explicitly as information on that question.

**Step 5:** Answer the blocking clarification, then click **Check Resolution**. This asks the AI to re-evaluate the change and, when enough context is available, unblock the question.

<figure><img src="/files/U7VRW7ICwI8wiVukeP83" alt=""><figcaption></figcaption></figure>

***

## Cascading changes

* `+n cascades` means the current change affects that number of later questions.
* `cascading` means the required update was handled when you accepted an earlier change.

<figure><img src="/files/LnDYFS6q9YcCIMg7e4bM" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}
The checklist also acts as a map to the cascading impact from a question, hover over a question to see which questions get affected.
{% endhint %}

***

## Use the Change Management agent

The Change Management agent can read your Questionnaires, the Script, Quota Sheets and the checklist on the left.

Once the checklist is prepared, you can ask the agent to create a missing change or revise a change that is wrong.

{% hint style="info" %}
The agent is always informed of the selected Question, Minimise the card if you want to un-focus the agent from the current question.
{% endhint %}

<figure><img src="/files/Pa4jveIMe2GhbcNS84W3" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}
Tip: You can ask the agent to update one or many changes using `@` to mention questions in the checklist (it autocompletes).
{% endhint %}

<figure><img src="/files/973lM3h4XmLmyHBkCWLc" alt=""><figcaption></figcaption></figure>

***

## Finish the version

When every checklist item is applied or marked **Done**, **Finish CM** appears. Select it to return to the Programming tab and continue programming. Complete your normal final QA before treating the version as ready.

<figure><img src="/files/xYGWF01oDDLJSYaxA9MI" alt=""><figcaption></figcaption></figure>


# Troubleshooting

Use this guide when you cannot start Change Management, a change is missing or unclear, a question is blocked, or you cannot finish the version.

## I cannot start a new version

Confirm that the project already has its current questionnaire loaded or its existing Decipher XML imported, and that you selected **Upload New Version** from that project. Check that the revised questionnaire is included in the upload. If the project is a tracker, confirm whether it is truly a new wave before selecting the new-wave option.

## The expected change was not detected

First, confirm that the revised file was uploaded and that the intended change is visible in it. Metaforms identifies changes most reliably when the questionnaire uses tracked changes or highlights. Add a clarification to describe the missing update, then ask the Change Management agent to create the change. Review the resulting XML preview before accepting it.

## The detected change is wrong or incomplete

Do not accept it. Use the agent to explain what should change and reference the relevant question or questions with `@`. Include the intended wording, answer options, routing, or quota impact. Preview the revised proposal, then accept it only when it matches the questionnaire.

## A question is blocked by a clarification

Open the linked clarification, add the missing answer or context, and select **Check Resolution** on the blocked question. The agent will re-evaluate the change. If it remains blocked, make the clarification more specific—for example, state which question, option, or routing outcome is intended.

## I am unsure whether to duplicate or overwrite the Decipher survey

Stop before selecting the option. For a live survey, verify the intended workflow with the project owner. Metaforms syncs live-survey updates to a temporary Decipher version and avoids deleting questions or options, but the choice should still match your team's release process.

## I cannot see **Finish CM**

Every checklist item must be applied or marked **Done** before **Finish CM** appears. Check the checklist for incomplete or blocked questions, resolve any linked clarifications, and retry the item. Finish only after reviewing all accepted previews and completing your normal QA.

## I uploaded the wrong or outdated file

Before proceeding, review the files carried into the new version. Files not removed during upload carry forward from the earlier version. If an outdated file affects the detected changes, do not rely on the current results; correct the version inputs before applying changes.

## Still need help?

Share the project and version name, the affected question ID, the clarification text or checklist status, and a screenshot of the preview or error. This gives the support team enough context to reproduce the issue.


# Prompting & Workflow Best Practices (Decipher)

This document outlines prompting patterns and workflow practices that produce the most reliable programming output on Metaforms.

Many programmers initially approach Metaforms without being detailed in instruction. However, Metaforms performs best when instructions are explicit, scoped, and structured.

The prompt practices shared in this document are based on observations from real Metaforms users and are intended to help the teams improve programming accuracy, reduce debugging time, and increase speed.

#### Core Principle: Explicit Instructions, Including Constraints

Metaforms performs best when you describe the intended outcome clearly before generation. The clearer the instruction, the higher the accuracy of Metaforms output

| **Incorrect/Non-Ideal Workflow**         | **Ideal Workflow**                         |
| ---------------------------------------- | ------------------------------------------ |
| Generate everything and fix errors later | Generate limited questions in batches      |
| Short instructions                       | Explicit instructions                      |
| Debug code line-by-line                  | Edit with AI across XML for similar change |
| Edit with AI for very small changes      | Manually fix if takes less than 5 seconds  |
| Implicit assumptions                     | Explicit constraints                       |

#### Writing Good Prompts – Examples…

**Task:** Generating the next 3–5 questions from the questionnaire and program them in the survey using the correct XML structure.<br>

1. **Constraints:**
   1. Follow the survey programming syntax.
   2. Maintain correct question numbering and labels.
   3. Ensure all XML tags are properly structured.
   4. Apply existing survey logic and formatting standards.
2. **Focus:**
   1. Only generate the next 3–5 questions from the questionnaire.
3. **Dont’s:**
   1. Aim to modify previously generated questions, logic, or earlier survey sections.
4. **Good Prompt:**
5. Generate the next 3 questions (Q12–Q14) using the questionnaire, maintaining the XML syntax, formatting, and the same numeric validation structure used earlier.

**Task:** Reviewing the recently generated questions and correct any syntax, validation, or tag errors so they do not repeat in later generations.<br>

1. **Constraints:**
   1. Ensure all XML tags are properly opened and closed.
   2. Remove unnecessary tags such as \</> within validation or exec blocks.
   3. Maintain the existing question logic and numbering.
2. **Focus:**
   1. Fix only the issues present in the selected generation.
3. **Dont’s:**
   1. Do not regenerate the questions. Select and edit instead.
4. **Good Prompt:**
   1. Review Q15–Q17 and fix XML syntax, ensuring tags are properly opened/closed and vector logic is used for validations without changing the question logic.

**Task:** Generating the JavaScript logic required for a question behavior basis on the provided structure.<br>

1. **Constraints:**
   1. Follow standard JavaScript practices.
   2. Use the correct question IDs or classes from the HTML structure.
   3. Ensure the script does not interfere with existing survey logic.
2. **Focus:**
   1. Only generate the JavaScript logic required for the specified question functionality.
3. **Dont’s:**
   1. Do not modify the HTML structure or other survey questions.
4. **Good Prompt:**
   1. Create JavaScript for Q39 so selecting the checkbox in column 2 automatically selects column 1, using the existing HTML classes without affecting other questions. (User Task: add the relevant HTML code using Inspect Element.)

**Task:** Creating the hidden variables and calculation logic needed to compute values based on provided rules or table.

1. **Constraints:**
   1. Use hidden variables for calculations where required.
   2. Ensure calculations match the rules provided in the questionnaire.
   3. Maintain consistent naming conventions for hidden variables.
2. **Focus:**
   1. Only implement the hidden variable logic for the specified question.
3. **Dont’s:**
   1. Do not modify question wording or answer options.
4. **Example Prompt:**
   1. Generate S7b using hidden variables hS7bx1 and hS7bx2, calculating values based on the scoring table without modifying the visible question. (User task: Also, explain the logic used for hS7bx1 and hS7bx2)

\ <br>

**Task:** Update the generated questions to ensure they follow the project’s programming standards and coding rules.

1. **Constraints:**
   1. Maintain existing question structure and numbering.
   2. Apply the required survey formatting and validation standards.
   3. Ensure no new syntax errors are introduced.
2. **Focus:**
   1. Apply the required updates only to the specified questions.
3. **Dont’s:**
   1. Do not regenerate questions or modify unrelated sections.
4. **Good Prompt:**
   1. Update Q21–Q23 to follow the project’s standard numeric validation and match the formatting and XML structure used in earlier numeric questions.


# Legacy to Unified Transition

Switching from the Legacy Metaforms Decipher Workflow to the new Unified Workflow introduces a number of changes that streamline your research and survey programming process. This tutorial highlights what's different, guides you through the updated steps, and points out the advantages of the Unified Workflow.

## Introduction

In the Unified Workflow, you'll notice new navigation paths, a reorganized interface, and smarter automation, especially with the integration of AI-driven features. While much of the process remains familiar, the location of key actions and some functionalities have shifted to enhance productivity and reduce manual effort.

This guide outlines the key nuances for users transitioning from the Legacy Decipher Flow to the Unified Flow, helping you understand what's changed and how to make the most of the new experience.

Use the sections in this guide to follow the flow in order, or jump to a topic from the table of contents.


# Integration setup

## API integration page has moved

One of the first changes you'll notice is the relocation of the API integration page:

* **Legacy Workflow:** To set up the API key, users would navigate to **Settings → Integrations**.
* **Unified Flow:** To set up the API key, users now need to go to **Dashboard → Integrations**.

The process of adding the Account and setting up the API key remains the same—only the location has changed.

**Step 1:** Navigate to the Unified Dashboard to manage integrations.

<figure><img src="/files/cNBVTLujY2Gki0wJlR6B" alt=""><figcaption></figcaption></figure>

**Step 2:** Go to **Integrations**.

<figure><img src="/files/KuG4aAuJbVQBy89lenRH" alt=""><figcaption></figcaption></figure>

**Step 3:** Create a new account and enter your API key under the new account.

<figure><img src="/files/dfz8w6ayHzbANqeW1ICb" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/TMW0k2dmoNXzaymtP893" alt=""><figcaption></figcaption></figure>

**Note:** Only the location for API integration has changed; the process remains the same as in the legacy workflow.


# Project creation

After your API integration is set up, create a project and open **Build** for Decipher survey work.

**Step 1:** Return to the **Projects** page to start a new project.

<figure><img src="/files/9yEkYa3u1hVZmXvBSMY9" alt=""><figcaption></figcaption></figure>

**Step 2:** Click **Create Project**.

<figure><img src="/files/J1St3isz6SaA1koJjAYT" alt=""><figcaption></figcaption></figure>

**Step 3:** Name your project and create it.

<figure><img src="/files/z6QfuXZ0vruYOMrGsTJN" alt=""><figcaption></figcaption></figure>

**Step 4:** Unified Workflow centralizes all research steps: questionnaire design, survey programming, link testing, data validation, translation, open encoding, tabulation, and reporting.

<figure><img src="/files/5osRZKpq3gzyziTldfz5" alt=""><figcaption></figcaption></figure>

**Step 5:** Go directly to the **Build** page for Decipher survey work.

<figure><img src="/files/YiKG2F9RlqYBGKjoTvak" alt=""><figcaption></figcaption></figure>


# Creating a new Decipher survey

**Important:** Additional files (e.g., images, supporting docs) **cannot** be uploaded in the **first step** of the Decipher **Build** wizard. Upload them in the **fourth step** of that same wizard on the Build page.

**Step 1:** In the **Build** page, upload your questionnaire.

<figure><img src="/files/doPsLIyU1dEudaRACzSW" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/7o03GP1fKRQnD23sznHJ" alt=""><figcaption></figcaption></figure>

**Step 2:** Click **Upload** to process your questionnaire.

<figure><img src="/files/FlcYA4tfRMofaA1oFEcH" alt=""><figcaption></figcaption></figure>

**Step 3:** Wait for the system to prepare your questionnaire.

<figure><img src="/files/L3TX6Bfo6ZALVZDOU8f6" alt=""><figcaption></figcaption></figure>

**Step 4:** Click **Start Building** to proceed.

<figure><img src="/files/8JLHGqwuhEg7UE4MFQC7" alt=""><figcaption></figcaption></figure>

**Step 5:** Choose your survey platform (e.g., **Decipher**).

<figure><img src="/files/Vyjyq1Gr2MD4i8qBc8fs" alt=""><figcaption></figcaption></figure>

**Step 6:** Pick a template.

<figure><img src="/files/ymNumk44PWV17bKtmhxQ" alt=""><figcaption></figcaption></figure>

**Step 7:** Optionally adjust AI rules folders selected.

<figure><img src="/files/7nCQnTBKg9fh5aLtfvIN" alt=""><figcaption></figcaption></figure>

**Step 8:** Upload additional files, such as images or optional list excel files. *(This is the dedicated step for uploading additional files.)*

<figure><img src="/files/hfD7qlIBV5VU1TZEphk1" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/ERr98bqS3UYhpAwBsqbO" alt=""><figcaption></figcaption></figure>

**Step 9:** In the settings step, select **Basic** or **Advanced** as needed.

<figure><img src="/files/EymRSfyhIXc14pH8n5CQ" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/AKYEebXpsiHvUsqR1EmI" alt=""><figcaption></figcaption></figure>


# Navigating the three tabs

Navigate the Decipher unified flow with ease by knowing where to find key features for building and managing your survey projects. Here's how to access the main tools and understand when to use each tab.

**Design tab:** Open the **Design Files** tab to view your questionnaire.

<figure><img src="/files/YJ3puudBP03qGd6d0pZj" alt=""><figcaption></figcaption></figure>

**Files tab:** Visit the **Files** tab to upload new files and to view sync status and to get the Decipher Project url for the survey.

<figure><img src="/files/AL10FGqBoJgxlf8sSclp" alt=""><figcaption></figcaption></figure>

**AI Assistant tab:** Visit the **AI Assistant** tab to generate or edit xml or quotas.

<figure><img src="/files/JcjovyvesJb9IRa5RFt3" alt=""><figcaption></figcaption></figure>


# Programming with the AI Assistant

**Step 1:** Access the **Agent Chat** (AI Assistant) tab to provide instructions for automated survey creation.

<figure><img src="/files/7feyFb48vBBMDk8UQ7lk" alt=""><figcaption></figcaption></figure>

**Step 2:** The system analyzes your questionnaire and prepares the first set of questions, applying appropriate AI rules.

**Note:** The time taken by AI to generate output depends on the complexity of the questions being programmed. The initial few generations will take some time as the AI reads the AI rules and the QNR to understand the context.

<figure><img src="/files/2xM7pME8zV0etkn8nlTf" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/RjudeY0nnQqOZduMc27X" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/mNJZX6mCxTmNYndmgBm8" alt=""><figcaption></figcaption></figure>

**Step 3:** Provide the prompt to create questions in the AI Assistant chat box.

<figure><img src="/files/cMFN6mvH9s48i8LKmmOA" alt=""><figcaption></figcaption></figure>

**Step 4:** Review and accept all generated questions.

<figure><img src="/files/K8gtn8yzQ6QDvWNjTMgB" alt=""><figcaption></figcaption></figure>

## No more "Apply" button for template instructions

In the **Legacy Workflow**, users had to manually click the **Apply** button above each template instruction to insert the required code/XML for that specific step.

In the **Unified Flow**, there is **no Apply button**. Users can proceed using the chat window while creating questions, and the template instructions will be applied automatically by the AI. If your template doesn't have template instructions set up, you don't need to worry about this. If needed, you can provide an additional prompt in the AI Assistant chat window (only when required).

**Step 5:** Template instructions are applied automatically—no need to manually apply node tag setups as in legacy.

<figure><img src="/files/0SwnvKxEOJpm5Oz7zR90" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/Wc3aKmHdcQXs8vccwpsW" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/wU1rpYm4HkMttLcghBlc" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/2bbHDEYJnKTQPQ2LH4Ed" alt=""><figcaption></figcaption></figure>

## Edit with AI – no need to select code

In the **Legacy Workflow**, when editing a specific section, you had to:

1. Select the specific XML section where the edit was needed.
2. Press **Ctrl + K** to open the Edit with AI widget.
3. Provide the prompt in that widget to make the edits.

In the **Unified Flow**, you don't need to select the XML at all. Simply describe the required changes in the AI Assistant chat box—the AI will figure out where the update needs to be made and apply it across multiple questions if needed. If you want to target the edits to a specific place, you can include the QID directly in your prompt.

**Step 6:** To make bulk edits—like removing brackets from all comments—just instruct the AI Assistant in chat. The AI locates and updates all relevant sections automatically.

<figure><img src="/files/EgfEADFeci2vPlkXW4Jw" alt=""><figcaption></figcaption></figure>

**Step 7:** For subsequent question generations, the AI decides placement automatically.

<figure><img src="/files/IMPcXaWdGEYpLFg1Khof" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/IBagULB78r2RhZatkm4X" alt=""><figcaption></figcaption></figure>

## Handling deleted questions

When you delete a question, the deletion is treated as **intentional**. So when you click "generate next set of questions," the AI will not regenerate the deleted ones. If you want them back, provide a prompt like:

"Create deleted questions"

**Step 9:** Sync your project to update XML and quotas

<figure><img src="/files/4c0JsG3WnbaJL9sBAdwH" alt=""><figcaption></figcaption></figure>


# Quota programming

## Simplified single-prompt quota creation

In the **Legacy Workflow**, creating a quota was a two-step process:

1. Create the quota in the quota sheet using "Create with AI."
2. Switch back to the XML tab, place the cursor at the right position, use "Generate with AI," and provide instructions to add the quota tag.

In the **Unified Workflow**, you don't need to do these two steps separately. A single prompt like **"Create quota for gender"** is enough—Metaforms will add the quota in the quota sheet **and** insert the corresponding quota tag in the XML automatically.

**⚠️ Note:** Edit history for quotas is currently under development. Until further updates are provided, users should avoid using the edit history feature in the quota tab.

**Step 1:** If your questionnaire includes quota instructions, the AI Assistant creates quotas and relevant XML tags automatically while programming questions.

<figure><img src="/files/xrkq3DY0GaSVfDMeOTQ9" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/fmw4X1uBBjBBrKgJ0iBf" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/JvMLqktgvYAf4P9DPxMI" alt=""><figcaption></figcaption></figure>

**Step 2:** Request additional or missed quotas via chat. For example: "Create quota for Q1 male and female." The AI will create and place quotas, asking for clarification if needed.

<figure><img src="/files/2r0urZY1rzOsUknt393e" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/1khLvecKOFbvAMLvR7TB" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/Ilf2XHJpE5FGGp5fhPPX" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/WvMFYWUUGtQzwhiIZ3va" alt=""><figcaption></figcaption></figure>

**Step 3:** Accept the newly created quotas.

<figure><img src="/files/6b3lqiNHqguD9Db2G5hO" alt=""><figcaption></figcaption></figure>


# Advanced prompts and complex setups

## No more specialisations – just refine your prompt

In the Unified Flow, you no longer need to manually select specialisations when programming complex questions. If the first AI output isn't correct, simply refine your prompt. Here are some example prompts:

* **"Use JS for QID"**
* **"Use hybrid question for QID"**
* **"Program this QID using MaxDiff indices method"**
* **"Program this QID using custom Conjoint method"**
* **"Create Q9 as a hybrid question."**
* **"Implement Q9 using JS validation."**
* **"Implement Q9 using MaxDiff indices method."**

These prompts help guide the agent to produce the desired setup.

## JavaScript update best practice

For JavaScript updates, it is recommended to **copy-paste the HTML/JS content** into the chat and ask the AI to modify it by providing feedback on what's not working—rather than selecting the question and using **Ctrl + K**. This approach works more reliably.


# Limitations and quick reference

## Features not yet available in Unified Workflow

While the Unified Workflow brings major improvements, a few features from the legacy flow are not yet available:

* **Clips:** You can't use Decipher clips or use clips in the Unified Flow, we intentionally decided to remove this as no user is using this feature in the legacy flow.

## Quick reference: Legacy vs. Unified Flow

| Feature                  | Legacy Workflow                                                          | Unified Workflow                                 |
| ------------------------ | ------------------------------------------------------------------------ | ------------------------------------------------ |
| API Integration Setup    | Settings → Integrations                                                  | Dashboard → Integrations                         |
| Template Instructions    | Manual click on **Apply** button                                         | Auto-applied by AI                               |
| Edit with AI             | Select XML → Ctrl + K → prompt                                           | Just describe in chat (optionally include QID)   |
| Quota Creation           | Quota sheet + manual XML tag insertion                                   | Single chat prompt handles both                  |
| Specialisations          | Manually selected                                                        | Driven by prompt refinement                      |
| JavaScript Edits         | Select + Ctrl + K and paste HTML/JS in edit with AI widget with feedback | Paste HTML/JS in AI assistant chat with feedback |
| Clips                    | Available                                                                | ❌ Not available                                  |
| DAT File Auto-Generation | Available                                                                | Available through the AI Assistant               |


# Conclusion

The Unified Metaforms Decipher Workflow centralizes and automates survey creation and management, making the process faster and more intuitive. With the elimination of most manual steps—especially around quotas, edit widgets, template instructions, and specialisations—you save time and reduce the chance for error.

Key takeaways for users transitioning from the Legacy Flow:

* The API key setup has moved to **Dashboard → Integrations**.
* Template instructions are applied automatically—no Apply button needed.
* Edits can be made via natural language prompts; no need to select XML.
* Quotas are created end-to-end through a single chat prompt.
* Specialisations are replaced by smarter prompt-driven guidance.
* A few features (Clips, DAT auto-generation, Quota edit history) are still in progress.

As new features roll out, expect even more streamlined capabilities. For now, enjoy easier project setup, dynamic AI assistance, and a smoother research experience.


# Complexity Support

Surveys come in many forms - from simple screeners to highly customized tracking studies with embedded media, advanced logic, and dynamic UI elements. Metaforms is designed to support this full range of complexity.

This section highlights the types of complexity Metaforms handles across survey programming workflows. Each subsection details specific patterns we support - including loops, image handling, logic branching, quotas, custom layouts, validations and more!


# Images in Surveys

Metaforms supports a wide range of image-based survey layouts - from basic image titles to dynamic stimuli and piped media across loops. Below are the image scenarios currently supported with some examples:

* Radio question with image in the title

<figure><img src="/files/DxeTHd3Ja15jAECtg80o" alt=""><figcaption></figcaption></figure>

* Radio question with rows and columns - Images in Rows

<figure><img src="/files/SKT6BhkMp3esAmRo2sbn" alt=""><figcaption></figcaption></figure>

* Radio question with rows and columns - Images in Columns

<figure><img src="/files/Z5COrLdGmHPQHnLXuddh" alt=""><figcaption></figcaption></figure>

* Checkbox questions with image in the rows

<figure><img src="/files/BmwWpo3Eq3BytZ5XuCcF" alt=""><figcaption></figcaption></figure>

* Radio question with image piped in the title from option selected in previous question

<figure><img src="/files/g23Vo4iL4qrkEucZSpl9" alt=""><figcaption></figcaption></figure>

* Multi Select Question with Image Stimuli in Loop Rows

<figure><img src="/files/5MLiIxs8G7BvrpbMVTLc" alt=""><figcaption></figcaption></figure>

* Looped radio question with rows and columns - Image in the loop row for Each Book Design piped in the title

<figure><img src="/files/6lsqX61bAujLjMnStnwG" alt=""><figcaption></figcaption></figure>

* Clickable popup Link in title which shows image when clicked

<figure><img src="/files/7xy5NozEXoJDmJMOqZKT" alt=""><figcaption></figcaption></figure>

<br>


# Segmentation

* **Scenario 1**

Segmentation with question answers is multiplied by a specific coefficient for each segment, then a constant is added to calculate the total segment score and then punching the segment that has the max segment score as the final segment.

Let's take a look at an example for this:

Question type for each of the questions are mentioned below:

Q1 = Radio question with column

Q2 = Radio question with column

Q3 = Number question

Q4 = Number question

Segment calculation logic:

<table data-header-hidden><thead><tr><th width="223.50390625"></th><th></th><th></th><th></th><th></th></tr></thead><tbody><tr><td>Question</td><td>Likert scale answer (1 to 5)</td><td><p>Segment 1:</p><p>"Uninterested"</p></td><td><p>Segment 2:</p><p>"Passively interested"</p></td><td><p>Segment 3:</p><p>"Actively interested"</p></td></tr><tr><td>Q1: How important do you think it is for citizens to volunteer or donate to protect endangered species?</td><td></td><td>-0.561135188</td><td>0.045301485</td><td>2.023393358</td></tr><tr><td>Q2: To what extent do you agree that wildlife conservation should be a priority for governments?</td><td></td><td>-0.351733944</td><td>2.31670683</td><td>0.156779107</td></tr><tr><td>Q3: How concerned are you about the impact of human activities on wildlife habitats?</td><td></td><td>-0.65961061</td><td>0.278996417</td><td>0.467290048</td></tr><tr><td>Q4: How supportive are you of initiatives to reintroduce native species to their original habitats?</td><td></td><td>-0.559083482</td><td>0.488902614</td><td>0.141627905</td></tr><tr><td>Constant</td><td>1</td><td>9.802423437</td><td>-0.39186368</td><td>-0.959236738</td></tr><tr><td>Total segment score</td><td>-</td><td>-</td><td>-</td><td>-</td></tr></tbody></table>

* **Scenario 2**

Segmentation with variable recording before multiplying it with co-efficient and adding it to a constant.

Let's take a look at an example for this:

Question type for each of the questions are mentioned below:

Q1 = Radio question with column

Q2 = Radio question with column

Q3 = Checkbox question rows

Q4 = Radio question what rows and columns

Q5 = Radio question with columns

Q6 = Checkbox question with rows

Q7 = Radio question with rows

​

Recoding logic:

<table data-header-hidden><thead><tr><th width="239.734375"></th><th></th></tr></thead><tbody><tr><td>Variable</td><td>Recoding Logic</td></tr><tr><td>Q1_1</td><td>If Q1 = 1, code as 1; else code as 0</td></tr><tr><td>Q1_2</td><td>If Q1 = 2, code as 1; else code as 0</td></tr><tr><td>Q1_3</td><td>If Q1 = 3, code as 1; else code as 0</td></tr><tr><td>Q2_1</td><td>If Q2 = 1, code as 1; else code as 0</td></tr><tr><td>Q2_2</td><td>If Q2 = 2, code as 1; else code as 0</td></tr><tr><td>Q2_3</td><td>If Q2 = 3, code as 1; else code as 0</td></tr><tr><td>Q2_4</td><td>If Q2 = 4, code as 1; else code as 0</td></tr><tr><td>Q2_5</td><td>If Q2 = 5, code as 1; else code as 0</td></tr><tr><td>Q3r1</td><td>No recode necessary; 1 = selected &#x26; 0 = unselected</td></tr><tr><td>Q3r2</td><td>No recode necessary; 1 = selected &#x26; 0 = unselected</td></tr><tr><td>Q3r3</td><td>No recode necessary; 1 = selected &#x26; 0 = unselected</td></tr><tr><td>Q3r4</td><td>No recode necessary; 1 = selected &#x26; 0 = unselected</td></tr><tr><td>Q3r5</td><td>No recode necessary; 1 = selected &#x26; 0 = unselected</td></tr><tr><td>Q3r6</td><td>No recode necessary; 1 = selected &#x26; 0 = unselected</td></tr><tr><td>Q3r7</td><td>No recode necessary; 1 = selected &#x26; 0 = unselected</td></tr><tr><td>Q3r8</td><td>No recode necessary; 1 = selected &#x26; 0 = unselected</td></tr><tr><td>Q3r9</td><td>No recode necessary; 1 = selected &#x26; 0 = unselected</td></tr><tr><td>Q4r1_1</td><td>If Q4r1 = 1, code as 1; else code as 0</td></tr><tr><td>Q4r1_2</td><td>If Q4r1 = 2, code as 1; else code as 0</td></tr><tr><td>Q4r1_3</td><td>If Q4r1 = 3, code as 1; else code as 0</td></tr><tr><td>Q4r1_4</td><td>If Q4r1 = 4, code as 1; else code as 0</td></tr><tr><td>Q4r2_1</td><td>If Q4r2 = 1, code as 1; else code as 0</td></tr><tr><td>Q4r2_2</td><td>If Q4r2 = 2, code as 1; else code as 0</td></tr><tr><td>Q4r2_3</td><td>If Q4r2 = 3, code as 1; else code as 0</td></tr><tr><td>Q4r2_4</td><td>If Q4r2 = 4, code as 1; else code as 0</td></tr><tr><td>Q4r3_1</td><td>If Q4r3 = 1, code as 1; else code as 0</td></tr><tr><td>Q4r3_2</td><td>If Q4r3 = 2, code as 1; else code as 0</td></tr><tr><td>Q4r3_3</td><td>If Q4r3 = 3, code as 1; else code as 0</td></tr><tr><td>Q4r3_4</td><td>If Q4r3 = 4, code as 1; else code as 0</td></tr><tr><td>Q4r4_1</td><td>If Q4r4 = 1, code as 1; else code as 0</td></tr><tr><td>Q4r4_2</td><td>If Q4r4 = 2, code as 1; else code as 0</td></tr><tr><td>Q4r4_3</td><td>If Q4r4 = 3, code as 1; else code as 0</td></tr><tr><td>Q4r4_4</td><td>If Q4r4 = 4, code as 1; else code as 0</td></tr><tr><td>Q4r5_1</td><td>If Q4r5 = 1, code as 1; else code as 0</td></tr><tr><td>Q4r5_2</td><td>If Q4r5 = 2, code as 1; else code as 0</td></tr><tr><td>Q4r5_3</td><td>If Q4r5 = 3, code as 1; else code as 0</td></tr><tr><td>Q4r5_4</td><td>If Q4r5 = 4, code as 1; else code as 0</td></tr><tr><td>Q4r6_1</td><td>If Q4r6 = 1, code as 1; else code as 0</td></tr><tr><td>Q4r6_2</td><td>If Q4r6 = 2, code as 1; else code as 0</td></tr><tr><td>Q4r6_3</td><td>If Q4r6 = 3, code as 1; else code as 0</td></tr><tr><td>Q4r6_4</td><td>If Q4r6 = 4, code as 1; else code as 0</td></tr><tr><td>Q4r7_1</td><td>If Q4r7 = 1, code as 1; else code as 0</td></tr><tr><td>Q4r7_2</td><td>If Q4r7 = 2, code as 1; else code as 0</td></tr><tr><td>Q4r7_3</td><td>If Q4r7 = 3, code as 1; else code as 0</td></tr><tr><td>Q4r7_4</td><td>If Q4r7 = 4, code as 1; else code as 0</td></tr><tr><td>Q4r8_1</td><td>If Q4r8 = 1, code as 1; else code as 0</td></tr><tr><td>Q4r8_2</td><td>If Q4r8 = 2, code as 1; else code as 0</td></tr><tr><td>Q4r8_3</td><td>If Q4r8 = 3, code as 1; else code as 0</td></tr><tr><td>Q4r8_4</td><td>If Q4r8 = 4, code as 1; else code as 0</td></tr><tr><td>Q5_1</td><td>If Q5 = 1, code as 1; else code as 0</td></tr><tr><td>Q5_2</td><td>If Q5 = 2, code as 1; else code as 0</td></tr><tr><td>Q6r1</td><td>No recode necessary; 1 = selected &#x26; 0 = unselected</td></tr><tr><td>Q6r2</td><td>No recode necessary; 1 = selected &#x26; 0 = unselected</td></tr><tr><td>Q6r3</td><td>No recode necessary; 1 = selected &#x26; 0 = unselected</td></tr><tr><td>Q6r4</td><td>No recode necessary; 1 = selected &#x26; 0 = unselected</td></tr><tr><td>Q6r5</td><td>No recode necessary; 1 = selected &#x26; 0 = unselected</td></tr><tr><td>Q6r6</td><td>No recode necessary; 1 = selected &#x26; 0 = unselected</td></tr><tr><td>Q6r7</td><td>No recode necessary; 1 = selected &#x26; 0 = unselected</td></tr><tr><td>Q6r8</td><td>No recode necessary; 1 = selected &#x26; 0 = unselected</td></tr><tr><td>Q7_1</td><td>If Q7 = 1, code as 1; else code as 0</td></tr><tr><td>Q7_2</td><td>If Q7 = 2, code as 1; else code as 0</td></tr><tr><td>Q7_3</td><td>If Q7 = 3, code as 1; else code as 0</td></tr><tr><td>Q7_4</td><td>If Q7 = 4, code as 1; else code as 0</td></tr><tr><td>Q7_5</td><td>If Q7 = 5, code as 1; else code as 0</td></tr><tr><td>Q7_6</td><td>If Q7 = 6, code as 1; else code as 0</td></tr><tr><td>Q7_7</td><td>If Q7 = 7, code as 1; else code as 0</td></tr><tr><td>Q7_8</td><td>If Q7 = 8, code as 1; else code as 0</td></tr><tr><td>Q7_9</td><td>If Q7 = 9, code as 1; else code as 0</td></tr><tr><td>Q7_10</td><td>If Q7 = 10, code as 1; else code as 0</td></tr><tr><td>Q7_11</td><td>If Q7 = 11, code as 1; else code as 0</td></tr><tr><td>Q7_12</td><td>If Q7 = 12, code as 1; else code as 0</td></tr></tbody></table>

Segment calculation logic:

| Variable | Segment 1 | Segment 2 | Segment 3 | Segment 4 | Segment 5 | Segment 6 |
| -------- | --------- | --------- | --------- | --------- | --------- | --------- |
| Q1\_1    | 18.0767   | 22.05169  | 20.87446  | 23.62055  | 22.4346   | 25.46154  |
| Q1\_2    | 16.23301  | 19.74055  | 18.7242   | 19.15496  | 19.43095  | 18.33225  |
| Q1\_3    | 16.65306  | 18.43816  | 18.337    | 17.75301  | 18.48681  | 17.79924  |
| Q2\_1    | 83.41005  | 85.85887  | 86.66188  | 86.7295   | 85.37157  | 87.98126  |
| Q2\_2    | 82.32566  | 85.62216  | 86.43268  | 87.50796  | 85.54803  | 84.26265  |
| Q2\_3    | 81.92598  | 84.89426  | 85.45443  | 85.48974  | 84.77049  | 83.23104  |
| Q2\_4    | 82.56818  | 84.15394  | 84.70123  | 84.55268  | 84.40516  | 82.70466  |
| Q2\_5    | 87.15362  | 87.85616  | 88.06397  | 88.73812  | 88.32302  | 86.75745  |
| Q3r1     | 3.147795  | 3.090329  | 4.353368  | 2.848069  | 1.99812   | 3.646036  |
| Q3r2     | 4.677952  | 4.955191  | 3.788802  | 4.228256  | 4.025644  | 4.977211  |
| Q3r3     | 5.277959  | 5.71047   | 5.98173   | 9.81709   | 7.764079  | 7.357867  |
| Q3r4     | 4.633902  | 4.279482  | 6.428023  | 7.21813   | 5.677258  | 5.480364  |
| Q3r5     | 3.248075  | 3.804778  | 2.684756  | 2.658239  | 3.440625  | 3.508464  |
| Q3r6     | 6.786563  | 7.052425  | 8.045186  | 6.642545  | 6.904374  | 7.129207  |
| Q3r7     | 4.568831  | 5.420923  | 5.042387  | 4.022642  | 4.473734  | 4.183822  |
| Q3r8     | 3.08382   | 3.016078  | 3.184092  | 3.530534  | 3.558504  | 3.509536  |
| Q3r9     | 4.416722  | 4.270809  | 6.645938  | 5.226696  | 5.451685  | 4.804677  |
| Q4r1\_1  | 4.074502  | 4.376876  | 4.541224  | 4.253495  | 2.181111  | 6.402298  |
| Q4r1\_2  | 2.747891  | 2.880356  | 4.007702  | 4.041661  | 1.681463  | 5.514703  |
| Q4r1\_3  | 4.698259  | 4.897728  | 5.382919  | 5.464882  | 3.381889  | 6.065176  |
| Q4r1\_4  | 2.969259  | 3.042033  | 3.091767  | 3.46961   | 1.859063  | 3.953858  |
| Q4r2\_1  | 9.176468  | 8.853241  | 9.174171  | 9.725798  | 8.647695  | 6.892554  |
| Q4r2\_2  | 2.741122  | 4.048006  | 2.974923  | 3.679902  | 3.63364   | 3.420566  |
| Q4r2\_3  | 0.949125  | 1.992864  | 1.882977  | 2.386896  | 1.747279  | 2.486078  |
| Q4r2\_4  | 2.909757  | 3.735983  | 3.713474  | 4.247346  | 3.739991  | 4.63123   |
| Q4r3\_1  | 12.96681  | 11.83703  | 13.52748  | 9.971731  | 9.433446  | 3.878918  |
| Q4r3\_2  | 9.775593  | 9.239915  | 9.612797  | 6.330269  | 6.18632   | 2.118337  |
| Q4r3\_3  | 9.837698  | 9.722221  | 9.459752  | 7.67869   | 7.553319  | 3.287871  |
| Q4r3\_4  | 8.288795  | 8.76809   | 7.933279  | 7.030374  | 6.749627  | 3.61705   |
| Q4r4\_1  | 14.64703  | 14.21732  | 10.66585  | 13.72305  | 12.36433  | 18.54302  |
| Q4r4\_2  | 10.26099  | 10.22452  | 6.757315  | 10.26178  | 8.72929   | 11.04825  |
| Q4r4\_3  | 10.61078  | 10.04199  | 7.315017  | 10.30968  | 8.844427  | 11.03538  |
| Q4r4\_4  | 10.27566  | 10.11727  | 8.635031  | 9.90983   | 8.761242  | 10.32051  |
| Q4r5\_1  | 8.411017  | 9.005973  | 10.9419   | 10.32382  | 6.520635  | 4.905538  |
| Q4r5\_2  | 5.120288  | 6.092087  | 6.693918  | 6.442216  | 4.932918  | 3.089617  |
| Q4r5\_3  | 5.247238  | 5.636732  | 6.209737  | 5.828761  | 4.379031  | 2.518693  |
| Q4r5\_4  | 4.883993  | 5.349388  | 4.890349  | 5.185007  | 4.305264  | 2.662467  |
| Q4r6\_1  | 3.396115  | 4.4294    | 4.216994  | 4.758163  | 4.291015  | 6.92498   |
| Q4r6\_2  | 4.521206  | 6.259241  | 5.800834  | 6.444499  | 6.001652  | 7.507017  |
| Q4r6\_3  | 3.690594  | 4.590393  | 5.168465  | 4.83102   | 5.483137  | 5.693942  |
| Q4r6\_4  | 3.416975  | 3.977436  | 3.92668   | 4.068796  | 4.499687  | 4.707107  |
| Q4r7\_1  | 25.71216  | 24.40168  | 25.56321  | 25.73595  | 22.95961  | 27.91159  |
| Q4r7\_2  | 25.1666   | 23.44218  | 25.85547  | 25.4982   | 23.08291  | 27.08061  |
| Q4r7\_3  | 25.31247  | 24.79049  | 26.11898  | 26.60817  | 24.31205  | 27.9498   |
| Q4r7\_4  | 26.49405  | 25.6245   | 27.31551  | 27.58989  | 26.14568  | 28.70935  |
| Q4r8\_1  | 15.74686  | 13.16973  | 13.42637  | 13.56773  | 13.70189  | 19.11445  |
| Q4r8\_2  | 12.56457  | 10.59526  | 11.07122  | 11.02795  | 11.13873  | 13.42709  |
| Q4r8\_3  | 13.52893  | 12.46739  | 12.50857  | 13.09962  | 12.44144  | 13.51688  |
| Q4r8\_4  | 11.01671  | 10.48131  | 10.86398  | 11.37414  | 10.85244  | 11.19533  |
| Q5\_1    | 51.39918  | 51.68872  | 49.17817  | 49.88453  | 49.6692   | 51.68193  |
| Q5\_2    | 50.76572  | 50.95601  | 50.08092  | 51.19722  | 50.79166  | 51.55262  |
| Q6r1     | -0.53618  | 1.087943  | 0.186941  | 1.304234  | 0.634862  | 0.98776   |
| Q6r2     | -0.86776  | 1.275798  | -0.1099   | 1.716545  | 1.205292  | 0.677908  |
| Q6r3     | -0.34912  | 1.476012  | -0.11424  | 0.288967  | -0.14202  | 0.242393  |
| Q6r4     | 0.199466  | -0.31854  | 0.445499  | -0.10014  | 0.303727  | -0.70099  |
| Q6r5     | 0.744699  | 0.811145  | 2.221832  | 0.924717  | 1.816574  | 0.888146  |
| Q6r6     | 2.533852  | 3.151418  | 2.994294  | 3.831478  | 2.709637  | 2.898771  |
| Q6r7     | -0.8026   | -0.74654  | 0.536385  | 1.582484  | 1.608436  | 0.779205  |
| Q6r8     | 1.614077  | 2.471479  | 1.703095  | 3.434642  | 3.35924   | 2.119073  |
| Q7\_1    | 4.355944  | 2.841651  | 2.892291  | 2.701459  | 8.635566  | 3.029478  |
| Q7\_2    | 5.192119  | 3.852713  | 6.747642  | 4.150208  | 7.229909  | 6.292859  |
| Q7\_3    | 6.484115  | 3.834943  | 5.194257  | 3.909137  | 7.336505  | 6.230936  |
| Q7\_4    | 10.10111  | 8.389435  | 8.793659  | 8.273802  | 11.76445  | 9.247538  |
| Q7\_5    | 7.233676  | 4.839024  | 5.790385  | 4.935673  | 7.286002  | 6.962825  |
| Q7\_6    | 4.139474  | 2.521358  | 2.951169  | 2.419919  | 4.412424  | 3.515856  |
| Q7\_7    | 7.100123  | 5.871531  | 6.371467  | 5.694119  | 8.189354  | 6.602987  |
| Q7\_8    | 3.507806  | 1.942855  | 2.75205   | 1.609356  | 4.081044  | 2.854012  |
| Q7\_9    | 5.909435  | 5.221959  | 5.524882  | 5.058041  | 5.911755  | 5.456515  |
| Q7\_10   | 4.395043  | 4.220313  | 5.296106  | 4.197766  | 5.1035    | 4.479072  |
| Q7\_11   | 5.677674  | 5.359456  | 5.462184  | 5.800696  | 5.998446  | 5.321294  |
| Q7\_12   | 3.522429  | 3.848249  | 3.210613  | 4.142624  | 3.987704  | 4.057838  |

| Variable | Segment 1 | Segment 2 | Segment 3 | Segment 4 | Segment 5 | Segment 6 |
| -------- | --------- | --------- | --------- | --------- | --------- | --------- |
| Constant | -116.299  | -123.014  | -121.593  | -125.905  | -117.135  | -126.279  |

<br>


# Validation

Metaforms supports a wide range of Validation Scenarios in your surveys.

Let's take a look at all of them:

* **Radio question with text input field and email validation using regex**\
  \
  Radio question with one option containing text input field for email address and standalone decline option. Email validation ensures proper format (<user@domain.name>) using regex when email option is selected.\
  \
  **Validation:** Email format validation using regex applied to text input field when email option is chosen.\
  \
  ![](/files/ln0ZOTdKrNDTJxC0eVax)<br>
* **Radio question with text input fields and format-specific validation (phone format, email format, minimum character length)**

  \
  Radio question with text input field for each option. Different validation applied based on selection: phone format (XXX-XXX-XXXX), email format validation, or minimum character length for postal address.\
  \
  **Validation:** Format-specific validation triggers based on selected radio option - phone pattern, email regex, or minimum character count.\
  \
  ![](/files/1strmCkSLLhB2lexCjLF)<br>
* **Radio question with rows with conditional validation based on previous text question and number question**\
  \
  Radio question with three options. Selection of one particular option triggers validation against previous responses - previous text question cannot be equal to some string AND previous number question must be at-least equal to some number.\
  \
  **Validation:** One particular selection restricted based on previous text question and previous number question.\
  \
  ![](/files/YAy7ech7FWOnZ9RsJxCA)<br>
* **Radio question with text input field and date format validation**\
  \
  Radio question with one option containing text input field for date entry and standalone alternative option. Date format validation ensures MM/DD/YYYY format when date option is selected.\
  \
  **Validation:** Date format validation applied to text input field when date option is chosen.\
  \
  ![](/files/blAwtTeYx4hGwOXebrfJ)<br>
* **Radio question with text input field and minimum character validation**\
  \
  Radio question with one option containing text input field for feedback and standalone decline option. Minimum character validation (20 characters) applied to text input when feedback option is selected.\
  \
  **Validation:** Minimum character count validation applied to text input field when feedback option is chosen.\
  \
  ![](/files/VeBKRLcgvmwmpYPluBxK)<br>
* **Radio question with conditional validation based on previous number question**\
  \
  Radio question with three options. Selection of one triggers validation against previous income question - previous number question must be at least equal to specified minimum amount.<br>

  **Validation:** Radio question option selection restricted based on minimum income requirement from previous question.

  \
  ![](/files/WmJnXfltBXFsGCtpcg8o)<br>
* **Radio question with text input field and ZIP code format validation using regex**\
  \
  Radio question with one option containing text input field for ZIP code entry and two standalone alternative options. ZIP code format validation ensures 5-digit numeric format using regex (^\d{5}$) when home delivery option is selected.<br>

  **Validation:** ZIP code format validation using regex applied to text input field when home delivery option is chosen.\
  \
  ![](/files/B8woqahXSlKZqY1II2cI)
* **Radio question with text input field and time format validation with range restriction**\
  \
  Radio question with one option containing text input field for time entry and standalone alternative option. Time format validation ensures HH:MM format and restricts time range between 9:00 AM and 5:00 PM when preferred time option is selected.<br>

  **Validation:** Time format validation (HH:MM) and time range validation (09:00-17:00) applied to text input field when preferred time option is chosen.

  \
  ![](/files/YvpAyVHP5LLLzTlnOCa1)<br>
* **Radio question with text input field and currency format validation**\
  \
  Radio question with one option containing text input field for budget amount and standalone alternative option. Currency format validation ensures proper dollar format with optional commas and decimals (e.g., $5,000.00) when budget option is selected.<br>

  **Validation:** Currency format validation applied to text input field when budget option is chosen.

  \
  ![](/files/UGWqghmM84bBKj6sFm5C)<br>
* **Radio question with text input field and URL format validation**

  \
  Radio question with one option containing text input field for URL entry and two standalone alternative options. URL format validation ensures proper URL format beginning with http\:// or https\:// when portfolio website option is selected.<br>

  **Validation:** URL format validation applied to text input field when portfolio website option is chosen.

  \
  ![](/files/FYG66chWxW1x70BlgpLX)<br>
* **Radio question with conditional validation based on previous number question**\
  \
  Radio question with three options. Selection of one of the option triggers validation against previous question - previous number question must be at least some number.<br>

  **Validation:** Selection of one of the option restricted based on number entered in the previous question.\
  \
  ![](/files/ZrXiSdVeYFZbG10mTu99)<br>
* **Radio question with text input field and minimum word count validation**\
  \
  Radio question with one option containing text input field and standalone alternative option. Minimum word count validation (5 words) applied to text input when option with text input field is selected.<br>

  **Validation:** Minimum word count validation applied to text input field when option with text input field is chosen.

  \
  ![](/files/53i5ZakXm4kD5OuWrcRY)<br>
* **Radio question with text input field and alphanumeric character validation using regex**\
  \
  Radio question with one option containing text input field for username entry and standalone alternative option. Alphanumeric character validation ensures only letters, numbers, and underscores are allowed using regex (^\[a-zA-Z0-9\_]+$) when create username option is selected.<br>

  **Validation:** Alphanumeric character validation using regex applied to text input field when create username option is chosen.

  \
  ![](/files/1TyCTL0TPREoZR3crivS)<br>
* **Radio question with number input field and range validation**

  \
  Radio question with one option containing number input field for quantity entry and standalone alternative option. Range validation ensures quantity is between 1 and 100 when number of units option is selected.<br>

  **Validation:** Range validation (1-100) applied to number input field when quantity option is chosen.

  \
  ![](/files/HutpG03MLOBYP0obY8QI)<br>
* **Radio question with time input fields and time range validation**

  \
  Radio question with two options containing time input fields for different time slots and one standalone alternative option. Time format validation (HH:MM) and specific time range validation applied based on selected option - morning (09:00-12:00) or afternoon (13:00-17:00).<br>

  **Validation:** Time format validation and time range validation applied to respective input fields when time slot options are chosen.\
  \
  ![](/files/ABkr0eAuCR6DDMGtyfsS)<br>
* **Checkbox question with conditional option disabling based on previous question**

  \
  Checkbox question with four financial product options. Two specific options are disabled/prevented from selection if respondent's age from previous question is less than 25.<br>

  **Validation:** Specific options disabled based on age criteria from previous question.\
  \
  ![](/files/YM1p1f9VC1EPk7B3edMD)<br>
* **Checkbox question with dependent option selection validation**

  \
  Checkbox question with paired options. Selecting certain primary options automatically requires selection of corresponding secondary options.<br>

  **Validation:** Dependent selection validation ensures secondary options must be selected when corresponding primary options are chosen.\
  \
  ![](/files/9AepBA47bk5MguR7AigP)
* **Checkbox question with value calculation validation based on previous question**\
  \
  Checkbox question with options that have associated values. Total value of selected options is calculated and validated against limit specified in previous question.<br>

  **Validation:** Sum of selected option values cannot exceed limit specified in previous question.\
  \
  ![](/files/9BXXX3D1IxkzjyNsNFfN)
* **Checkbox question with conditional mandatory selection validation**\
  \
  Checkbox question with multiple options. If specific combination of options is selected, then additional option must also be selected.<br>

  **Validation:** Selecting certain combination of options automatically requires selection of additional option.\
  \
  ![](/files/4gGDF6u4FpJogIAuY8u4)
* **Checkbox question with time commitment validation based on previous question**

  \
  Checkbox question with options that have associated time commitments. Total time commitment of selected options is calculated and validated against available time specified in previous question.<br>

  **Validation:** Sum of selected option time commitments cannot exceed available time specified in previous question.\
  \
  ![](/files/gOUs1gBWSvLWskQPaHPA)<br>
* **Checkbox question with multiple conditional selection validation rules**\
  \
  Checkbox question with multiple options. Two different validation rules apply: selecting one specific option requires selection of another specific option, and selecting different specific option requires selection of at least minimum number of additional options.<br>

  **Validation:** Multiple conditional selection rules - one option requires specific companion option, another option requires minimum number of additional selections.

  \
  ![](/files/cNmk025PXqjrXwgI9HzT)<br>
* **Number question with ZIP code format validation using verify**

  \
  Number input field with 5-digit ZIP code format validation using verify="zipcode" to ensure exactly 5 numeric digits.<br>

  **Validation:** ZIP code format validation ensures exactly 5 numeric digits using regex pattern.\
  \
  ![](/files/AaG4QdGodnBT7vtkBuO1)
* **Checkbox question with conditional option disabling based on previous question**\
  \
  Checkbox question with multiple delivery options. Specific options are disabled/prevented from selection if ZIP code from previous question matches certain values.<br>

  **Validation:** Specific options disabled based on ZIP code criteria from previous question.\
  \
  ![](/files/OEmJg7U7mbnlrh0nOuik)
* **Checkbox question with ranking functionality - select items and rank them in order of preference**\
  \
  Checkbox question with rank input fields for each option. System enforces exactly 3 selections with unique ranking numbers 1, 2, and 3.<br>

  **Validation:** Exactly 3 items must be selected and ranked using unique consecutive numbers.

  \
  ![](/files/ZWj2uTQVv8rvSA7reebL)<br>
* **Checkbox question with hierarchical dependency validation**<br>

  Checkbox question with multiple options that have tiered dependency requirements. Selecting certain options automatically requires selection of prerequisite options, with some options requiring multiple prerequisites.<br>

  **Validation:** Hierarchical dependency validation ensures prerequisite options are selected when dependent options are chosen.

  \
  ![](/files/32jWzCvatNYqBki71hy8)<br>
* **Checkbox question with cost calculation validation based on previous question**<br>

  Checkbox question with options that have associated costs. Total cost of selected options is calculated and validated against budget limit specified in previous question.<br>

  **Validation:** Sum of selected option costs cannot exceed budget limit specified in previous question.\
  \
  ![](/files/OiQYMwcQvPahL3IceKzm)<br>
* **Checkbox question with level-based selection restriction**

  \
  Checkbox question with leveled options. Selection is restricted based on user level from previous question - respondent can only select modules up to one level higher than their current level.<br>

  **Validation:** Module selection restricted based on user level criteria from previous question.

  \
  ![](/files/OZAdhb9VBoJpPqqgjosE)<br>
* **Checkbox question with grouped category validation**

  \
  Checkbox question with options organised into multiple categories. Validation ensures exactly one option is selected from each category group.<br>

  **Validation:** One selection required from each category group - cannot proceed without selecting from all categories.

  \
  ![](/files/TnuQ41et1qQcAPeRgK0M)<br>
* **Checkbox question with text input fields, maximum selection limit, and time validation**\
  \
  Checkbox question with options that each have associated text input fields for time entry. Maximum of 3 selections allowed. Time format validation and range validation (06:00-19:59) applied to text inputs for selected options.<br>

  **Validation:** Maximum 3 selections enforced. Time format and range validation applied to text input fields for selected options only.

  \
  ![](/files/kViH4nwZoZZdhuvs3oQV)<br>
* **Checkbox question with multiple complex dependency validation rules**\
  \
  Checkbox question with multiple options that have different types of dependency requirements. Some options require selection of one of multiple alternatives, others require specific single options, and some require minimum number of additional selections.<br>

  **Validation:** Multiple dependency validation rules - alternative selection requirements, specific selection requirements, and minimum selection count requirements.\
  \
  Programming Note (PN):

  * If Personal Training is selected, must also select Gym Membership or Nutritional Planning
  * If Recovery Sessions is selected, Gym Membership must be selected
  * If Health Monitoring is selected, at least 2 other services must also be selected

  \
  ![](/files/B4yjDbAOeTrzswWV2vS2)<br>
* **Checkbox in first column and radio question in second column with validation and exclusive option**<br>

  First column contains checkboxes for multiple selections, second column contains radio buttons for single selection. Radio buttons only available for services checked in first column. Exclusive option in last row - when selected, prevents selection of other options and only allows exclusive selection in radio column.<br>

  **Validation:** Radio button selection restricted to items selected in checkbox column. Exclusive option prevents selection of other items in both columns.<br>

  !\[A screenshot of a computer

  AI-generated content may be incorrect.]\(<https://lh7-rt.googleusercontent.com/docsz/AD\\_4nXe6Uh24DbUzuR8KhXRQr6dGp2eyyXFcA0hS-Ukx6Ori4zBA3Yuer1SlB1cCD0e1gxfaRFk3Hufq1KGvCNzEpUb7mmNuInVsXKxnRli8MOsHcHI1aa4BQkfSmn2dE5pfFefmCLPwbAxMd41yiZlvbm4?key=dzW6UKOurn5A8KY3KiY9fA>)<br>
* **Hybrid grid question with checkbox column and radio column featuring exclusion validation and "Other" specification**<br>

  Grid question with checkboxes in first column and radio buttons in second column. "Other" row includes text specification field that becomes required when "Other" checkbox is selected.<br>

  **Validation:** Options selected in checkbox column cannot be selected in radio column. "Other" checkbox requires text specification when selected.<br>

  !\[A screenshot of a computer

  AI-generated content may be incorrect.]\(<https://lh7-rt.googleusercontent.com/docsz/AD\\_4nXd5xK63hogoc0tSuROeWL0CiTtWkviVRT6V1EqKMrAyppVkgraVmC5RQW8wgbDOYUHj6XuS-nOH2cAGGZKdArbvCnfxiAf\\_HYGq5pPkfDl3HRojNB0UgsKF7J0H7Sg-3a\\_qQ4x7U6VJY3WT4CWmDg?key=dzW6UKOurn5A8KY3KiY9fA>)
* **Checkbox question with rows and columns featuring dependent column selection and conditional follow-up questions**

  \
  Checkbox grid with streaming services as rows and device types as columns. Second column options are limited to services selected in first column. Third column triggers follow-up text input for device specification when selected.\
  \
  Validation: Column 2 selections restricted to Column 1 selections. Column 3 selections generate conditional follow-up questions for device specification.\
  \
  ![](/files/nmawNWD6OEUZRKEtGWZt)\
  \
  ![](/files/kSmjLBhmbvysR3AMLg74)<br>
* **Checkbox question with rows and columns featuring mutually exclusive column validation**\
  \
  Checkbox question with services as rows and two columns for current vs future subscriptions. Second column only allows selection of services not checked in first column, preventing overlap between current and future subscriptions.\
  \
  **Validation:** Mutually exclusive column validation ensures items cannot be selected in both columns simultaneously.\
  \
  ![](/files/CzfRQS9vgmyXZggo0Ji3)<br>
* **Checkbox question with rows and columns featuring mutually exclusive column validation**\
  \
  Checkbox question with multiple rows and three columns. Options selected in first and second columns are not allowed to be selected in third column for the same row.\
  \
  **Validation:** Third column selections are prevented for rows already selected in first or second columns\
  \
  !\[A screenshot of a computer

  AI-generated content may be incorrect.]\(<https://lh7-rt.googleusercontent.com/docsz/AD\\_4nXdZuXNcPROwHn2fgpBA37cofsdjUZ8nIVgVzzN1mq8Z6qBYVj0KekJ0Ki3xFJtZymbZaYWGPeMCu17cYghezwlb89Dw7NgXabXKvn7WlppZMEnjp7rapgtkug6zyk\\_6KO4nLWvpK2j005L-eQlPxxQ?key=dzW6UKOurn5A8KY3KiY9fA>)<br>
* **Checkbox question with rows and columns featuring conditional column validation**\
  \
  Checkbox question with items as rows and three columns. Third column selections are only valid for items that have been selected in first or second columns.\
  \
  **Validation:** Third column selections restricted to items selected in first or second columns.\
  \
  ![](/files/XZelbJabbOLLSvhvh3Tz)<br>
* **Checkbox question with rows and columns featuring conditional number input validation**\
  \
  Checkbox and number input columns. Number input required when checkbox is selected for that row and input should not be allowed in the number column if the checkbox for that row is not selected.\
  \
  **Validation:** Number input mandatory for checked rows and should not be answered if the row is not checked.\
  \
  ![](/files/RILzh0Vi0gymT0kXhSo7)<br>
* **Number question followed by hybrid question with conditional rows and response-dependent validation**\
  \
  Number question determines row count in subsequent hybrid question. Hybrid question features number input, dropdown, and dropdown columns. Third column selections validated against second column responses.\
  \
  **Validation:** Row count matches previous number question. Third column selections must be compatible with second column responses, otherwise error message displayed.\
  \
  ![](/files/XE2lz3t10jMZYPJ0Ucp5)\
  \
  ![](/files/LqyMOq2DiWmeAd34MQn7)<br>
* **Number question with rows followed by number question with rows and columns featuring conditional row display and sum validation**\
  \
  Number question with rows determines which rows appear in subsequent number grid. Only rows with non-zero values from first question appear in second question. Sum of columns in second question must equal corresponding row total from first question.\
  \
  **Validation:** Conditional row display based on previous responses. Row totals in second question must match values from first question.\
  \
  ![](/files/OChrpXCl9dVIS8ovK6qT)\
  \
  ![](/files/OChrpXCl9dVIS8ovK6qT)<br>
* **Number question with rows and columns featuring exclusive checkbox validation for each row**\
  \
  Number question with rows and multiple columns including number inputs and exclusive checkbox column. Each row requires either number inputs OR checkbox selection, but not both and not neither.\
  \
  **Validation:** Each row must have either number inputs OR checkbox selected - error displayed if both are answered or if neither is answered.\
  \
  ![](/files/pVjk7HctHo68tMU3DXtn)<br>
* **Number question with rows and columns featuring exclusive checkbox row for each column**\
  \
  Number question with rows and columns including number inputs and exclusive checkbox row. Each column requires either number inputs OR checkbox selection, but not both and not neither.\
  \
  **Validation:** Each column must have either number inputs OR checkbox selected - error displayed if both are answered or if neither is answered within the same column.\
  \
  ![](/files/DSpsGrh2mIE5jIQIvEOA)<br>
* **Dropdown question with rows and columns featuring unique ranking validation per row and column frequency limits**\
  \
  Dropdown question with rows and columns for ranking selections. Each row requires exactly one first choice and one second choice. Each column has a maximum limit (3) for how many times it can receive first choice rankings across all rows.\
  \
  **Validation:** Each row must have unique first and second rankings. Each column limited to maximum 3 first choice selections across all rows.\
  \
  ![](/files/8t25fh4lcGzozkPSBiww)<br>
* **Checkbox question with rows and columns featuring conditional dropdown ranking validation**\
  \
  Checkbox and dropdown columns. Rankings validated to ensure they are only provided for checked items. Rankings must be sequential (1, 2, 3, etc.) matching the number of selected items without gaps.\
  \
  **Validation:** Rankings only valid for checked items. Rankings must be consecutive from 1 to number of selected items with no duplicates or gaps.\
  \
  ![](/files/RpSnRwlrvc6fyxuTZpbN)<br>
* **Checkbox question with rows and columns featuring number and dropdown inputs with complex validation**\
  \
  Checkbox, number input, and dropdown columns. Number and dropdown inputs validated only for checked items. Number inputs must sum to 100%. Dropdown selections must align with number input hierarchy (highest percentage gets highest risk level, etc.).\
  \
  **Validation:** Number and dropdown inputs only valid for checked items. Percentages must total 100%. Risk levels must correspond to allocation percentage rankings.\
  \
  ![](/files/nfLWbHzkYgsuMdjVOnnM)<br>
* **Text question with phone number format validation including country code**\
  \
  Text input field for phone number with validation requiring country code format (e.g., +1-234-567-8900).\
  \
  **Validation:** Phone number format validation ensures country code is included in proper international format.\
  \
  ![](/files/LOD5TRYHapGDORs6Uz9O)<br>
* **Text question with URL format validation for specific domain**\
  \
  Text input field for URL with validation requiring specific domain presence (e.g., "linkedin.com").\
  \
  **Validation:** URL format validation ensures specific domain is included in the entered URL.\
  \
  ![](/files/uefUyo6P1bXMArMF4OkI)<br>
* **Text question with keyword validation for specific terms**\
  \
  Text input field with validation requiring inclusion of specific keywords from predefined list (e.g., intern, junior, senior, lead, manager).\
  \
  **Validation:** Text validation ensures one of the specified keywords is included in the entered text.\
  \
  ![](/files/fSU3BbNy5qioIrXJzjvD)<br>
* **Mixed question with text and number input fields with year range validation**\
  \
  Multiple input fields including text inputs and number input with year validation. Number field restricted to specific year range (1950-2024).\
  \
  **Validation:** Year input field validated within specified range.\
  \
  ![](/files/0RubGDhZsjwFYXARhxKa)<br>
* **Text question with rows featuring format-specific validation**\
  \
  Multiple text input fields with different format validation requirements. Some fields require comma-separated format or specific text, others require structured format with name and phone combination.\
  \
  **Validation:** Different format validation applied to each field - comma-separated entries, specific text options, or structured contact format.\
  \
  ![](/files/ea0gwUyE2lPzCrd2l1Yx)<br>
* **Number question with rows and columns featuring complex multi-field validation**\
  \
  Number grid with multiple validation rules including range limits, ratio calculations between columns, and percentage-based comparisons across time periods.\
  \
  **Validation:** Multiple validation rules - no negative values, maximum limits, ratio calculations between columns, and percentage relationships across different time periods.\
  \
  ![](/files/LxHgCWHlhge9i77It9SF)<br>
* **Number question with rows and columns featuring complex validation with alerts and cross-field calculations**\
  \
  Number grid with individual column range validations, conditional alert triggers based on multiple field combinations, and calculated validation requirements comparing individual rows to overall averages.\
  \
  **Validation:**\
  \- Column 1 ≤ 30 minutes\
  \- Column 2: 0-100%\
  \- Column 3: 1-10 scale\
  \- Alert if Column 2 <85% AND Column 3 <7\
  \- Each row's Column 3 must be ≥85% of overall Column 3 average\
  \
  ![](/files/ZPbwDIA4qkH4CV0CJVEN)<br>
* **Number question with rows and columns featuring complex validation with row-specific limits and cross-department comparisons**\
  \
  Number grid with individual field validations, row-specific limits for emergency department, overall care time calculations, and patient load balance requirements across departments.\
  \
  **Validation:**\
  \- No negative value\
  \- Row 1 Column 1 ≤ 30 minutes\
  \- Row 1 (Column 1 + Column 2) ≤ 120 minutes\
  \- All rows (Column 1 + Column 2) ≤ 240 minutes\
  \- Column 3 gap between any departments ≤ 2x ratio\
  \
  ![](/files/0D8aMWp7E930wkKD4tQ0)<br>
* **Number question with rows and columns featuring complex validation with minimum thresholds and cross-location comparisons**\
  \
  Number grid with individual field validations, minimum sales requirements, cost percentage limits relative to sales, and performance benchmarking between specific locations.\
  \
  **Validation:**\
  \- No negative values\
  \- Column 1 ≥ $1,000\
  \- (Column 2 + Column 3) ≤ 70% of Column 1\
  \- Row 3 Column 1 ≥ 80% of average of (Row 1 + Row 2) Column 1\
  \
  ![](/files/FfmATc9sSA0njGpcy0Tb)<br>
* **Number question with rows and columns featuring complex validation with ratio calculations and minimum thresholds**\
  \
  Number grid with percentage range validations, negative value restrictions, cross-row ratio requirements, and minimum performance thresholds.\
  \
  **Validation:**\
  \- Column 1: 0-100%\
  \- Column 3: No negative values\
  \- Row 1 Column 3 : Row 2 Column 3 ratio between 0.33-3\
  \- Column 1 minimum value: 30%\
  \
  ![](/files/8bkq4cc3I1UDs9wzANGe)<br>
* **Number question with rows and columns featuring complex validation with efficiency ratios and cost calculations**\
  \
  Number grid with range validations, efficiency ratio requirements between columns, and calculated cost-per-unit limits.\
  \
  **Validation:**\
  \- No negative values\
  \- Column 1 ≤ 100 tons\
  \- Column 1 ÷ Column 2 ≥ 0.5\
  \- Column 3 ÷ Column 1 ≤ $1,000\
  \
  ![](/files/8lGSsonRh7LF4LYAtCp3)

<br>

\ <br>

\
\
\ <br>

\ <br>

\ <br>


# Custom Styling and Scripting

Metaforms supports a wide range of Custom Styling and Scripting in your surveys.

Let's take a look at all of them:

* **Normal number question that can be used for the other scenarios listed**\
  \
  !\[A white background with black text

  AI-generated content may be incorrect.]\(<https://lh7-rt.googleusercontent.com/docsz/AD\\_4nXfbp--veqgdGePWsn1WV3uhrJZ7TKZyd-O65IHve2yDLjTwCcep0zYfXQigW7eKxrbL06\\_NdVRBm56zzdPi\\_21J9hlYpjwGKtI1AXmpUQNXCSQA5OFrkqcB2ztvCr2sArWf2mofwZPyk41nOxi2RfI?key=L-rc9QGBfyKrb5L6hvfQiw>)<br>
* **Number list question with two columns: one column where respondent can answer and other column where the percentage is auto calculated by comparing the answer given in the previous number question.**

  Validation to make sure the sum of answers in the first column is equal to the number entered in the previous number question.\
  \
  !\[A screenshot of a computer

  AI-generated content may be incorrect.]\(<https://lh7-rt.googleusercontent.com/docsz/AD\\_4nXfcXT\\_NPKcT9zCbXKlAZK37g4JcsS41EupXhi5Hl4lAd9\\_CdZFGkktJ\\_I7\\_7WUP8j8fdX-eoIq3DQ5Dcy61Kfz4fKfwSFqzFrs4UgJ-R\\_Y-DXslEYiGTg30Ek3S3wtmmANHSISkQQLrDUh3QOJBfQ?key=L-rc9QGBfyKrb5L6hvfQiw>)<br>
* **Radio question with conditional follow-up question on same page**\
  \
  Validation to make sure if yes is selected, the follow up question should have answer and if no is selected the follow up question should not have answer

  \
  **When selection is "No" or nothing is selected**\
  \
  !\[A white background with black text

  AI-generated content may be incorrect.]\(<https://lh7-rt.googleusercontent.com/docsz/AD\\_4nXdSe1xdSl9-0ddgI-rbgrXG-E8GCGbOiu1e7YZeHTybHRnsyq\\_0ZWIylf9ocUWiIMkZBKKwIKNeK\\_nt0-ObkEUmrQ8T8sBMXiX1oBGX1h0UE1a9FYOHE6DqurbPEG8LQHNSFBWgYz9j2xGq6\\_g4yy0?key=L-rc9QGBfyKrb5L6hvfQiw)\\>
  \
  **When selection is “Yes”**\
  \
  !\[A screenshot of a questionnaire

  AI-generated content may be incorrect.]\(<https://lh7-rt.googleusercontent.com/docsz/AD\\_4nXdfsAcG5i\\_r-Qdiaof-alEHDL4hEn5Wk8Mn1OYyaWm\\_x1IoTQhwBAWB7R20BgjSZX7-OJyL0IWr1fRWoITyvr7LwFFR\\_c7rXci54Vt0-y1-IBRMeeDGLE6DvfTj92zzl\\_4NjJ3uZk8tITd3Vh23EmE?key=L-rc9QGBfyKrb5L6hvfQiw>)<br>
* **Checkbox list question with percentage input fields to fill in if the checkbox is selected in the row**\
  \
  If checkbox is selected, corresponding percentage field becomes active for input. If checkbox is not selected, percentage field remains disabled.

  \
  Validation to make sure the percentage can only be entered if corresponding checkbox is selected and the sum of all entered percentages must equal 100%. If checkbox is unchecked, corresponding percentage field should be empty

  \
  !\[A screenshot of a computer

  AI-generated content may be incorrect.]\(<https://lh7-rt.googleusercontent.com/docsz/AD\\_4nXcU9ClDzjd-st4avWZ6U\\_yTHtp7uulz1J9anpBAywh91uciC9JaoDKB0lejfKuOkzAlAnXAWUTI4s\\_qi9-SUhy3tBpHynnfrPTxzE8S6FjCnh-wpbl6Xa9lJHi2zb4UuUfLjQsNUTjausM1\\_su47AU?key=L-rc9QGBfyKrb5L6hvfQiw>)<br>
* **Number list question with two columns: current percentage (auto-populated from previous question), and future percentage input fields.**

  \
  Current percentage column displays data piped from Q10. Future percentage column requires user input for anticipated usage.\
  \
  Validation to ensure sum of all future percentages equals 100%. Only products with >0% usage from Q10 are displayed.

  \
  !\[A screenshot of a computer

  AI-generated content may be incorrect.]\(<https://lh7-rt.googleusercontent.com/docsz/AD\\_4nXdcEc3O0StRHQbDY3E6hwhBDKYFiqRAXOl6OG17B5dsitY8es0U9E-zFANZ\\_9HfnyC96\\_9qSqpKcWSF2lhyI82FfHUfwhv107\\_sxMj64pb4FAopCH8eq0oLvvy7ipwQ2Oy6HtJWdWdxzRJDSBTFN3Q?key=L-rc9QGBfyKrb5L6hvfQiw>)<br>
* **Multiple checkbox question with grouped answers and exclusive "None of the above" options within each group.**\
  \
  Each group has its own "None of the above" option that is exclusive to other selections within that specific group only.<br>

  Validation to ensure "None of the above" options are mutually exclusive with other selections within their respective treatment groups, but selections can be made across different treatment groups.

  \
  !\[A screenshot of a computer

  AI-generated content may be incorrect.]\(<https://lh7-rt.googleusercontent.com/docsz/AD\\_4nXeghqiEzmnUOVsvATpvn7bPYQj1XnEjVGYbef2MX-eKecnk3h39XgJZDdbgHxaPeeBfiaclJldtQS3hJ2MTZlxMPvwy2Wtwio0HK\\_fuboFHs3T60AMLgRexIIjyiueXUkKr7LEiXbC4pufSAeUYUQ?key=L-rc9QGBfyKrb5L6hvfQiw>)<br>
* **Showing subsequent text box only when the previous text box has data in it and with exclusive checkbox option.**\
  \
  Validation to ensure "I don't know" checkbox is mutually exclusive with text field entries. If "I don't know" is selected, all text fields must be empty. If any text field has content, "I don't know" cannot be selected\
  \
  !\[A screenshot of a computer

  AI-generated content may be incorrect.]\(<https://lh7-rt.googleusercontent.com/docsz/AD\\_4nXf6BFJZECammRbwViFAPfiQstcUAPWnwD\\_creXfEGdRFy1mDUcmeKCB8sVo7THAqAZq5Z8VE710hGYOfZaX6hJYpZYDCQeARjoHxqwQFMvQ9imgeS2jDS7kltmNkCEghtXUv316NfQCvmV9xuVLBFY?key=L-rc9QGBfyKrb5L6hvfQiw>)<br>
* **Checkbox list question with two columns: first column is auto-populated from previous question and second column is for respondent to select.**\
  \
  Validation to ensure respondents should select one option in each group.<br>

  !\[A screenshot of a medical survey

  AI-generated content may be incorrect.]\(<https://lh7-rt.googleusercontent.com/docsz/AD\\_4nXdx2sB-goLSPWiigL0TPd6lFe7R5Gjajse9Yj4sEGwju9p4ZF1EGMnLpeF9ZwvI59dODipTjWNrYLBNOyQb8FuplQWaDS7lunt2\\_ox7i70uGhmArqBf52boKp9jh52PoBNlPHMQP2JXTXzjIk3bej0?key=L-rc9QGBfyKrb5L6hvfQiw>)<br>
* **Showing the total number of selections dynamically in a checkbox question with rows and columns.**

  \
  Validation to make sure at least one response is given for each column.

  \
  !\[A screenshot of a computer

  AI-generated content may be incorrect.]\(<https://lh7-rt.googleusercontent.com/docsz/AD\\_4nXfqPW8hQLVAjRMJTcXwKIZ9RNND3YZPbH9BRCsMnA8HhimHEnEDUxWmZ\\_Xp61iOdOZG-YYLMfwlpqJ2L\\_LHhDanB3qfDisDR8SxG4sXNSIIY6GIvKlOes9AoXOiaZXo4Wbgkb3D\\_OvcbSeFaM4-iw?key=L-rc9QGBfyKrb5L6hvfQiw>)<br>
* **Enable continue button on clicking on a link in the page.**

  \
  **Without clicking on hyperlink**

  \
  ![](https://lh7-rt.googleusercontent.com/docsz/AD_4nXcJwG8G_UuZMQTOdbHFHfXsS8OatYKTkfPehM7-TbRPtj3D0ew6mdgJ49OXEousWinyAKV8KbmyYybWxCh6IIDq0kwbsaBO1dz-aXGnJf9LNrzkLxsoMJa3C0Br9UeKgauO-zQYbmhtyXK0Bx1YeEQ?key=2uTnrUm6Ldglp0iWUnbDyw)\
  \
  **With clicking on hyperlink**\
  \
  !\[A screenshot of a computer

  AI-generated content may be incorrect.]\(<https://lh7-rt.googleusercontent.com/docsz/AD\\_4nXcOheWyORPA\\_GSagiwHK4HAxCJlSt7yKHhhnNtiey3d5jisfk0teaOed\\_3owZx1G47tqy798dZg29-\\_-zaeMUxd7xP2gJcjg6TuNyV2\\_ioH6jJ6bWPVeLMX6HC8slZPUK4XO94G3vrivEeXPDEsABs?key=2uTnrUm6Ldglp0iWUnbDyw>)<br>
* **Exclusive checkbox for number list question with two columns.**\
  \
  Number boxes will be disabled when the checkbox is checked in that column. Validation to ensure if the checkbox is checked in the column, number boxes should not have data. If the number boxes have data, checkbox should not be checked in that column.\
  \
  !\[A screenshot of a medical survey

  AI-generated content may be incorrect.]\(<https://lh7-rt.googleusercontent.com/docsz/AD\\_4nXe5psASqrOT0RUkJAxt8CuT7KXLKU6HIO4A3LlED3fQknAJUv6SJYhJDYrTCUAkB5NEO1CaJ9iWa9QY6wjJ64maOQGCZQTt7mQvdnweFeGocuuAvdqrZ8Xrbo-5MdeuUSGN7jFBxMoBFXh8unS0DW4?key=2uTnrUm6Ldglp0iWUnbDyw>)<br>
* **Multiple question with collapsible question list**\
  \
  With collapsible list closed.

  \
  !\[A screenshot of a computer

  AI-generated content may be incorrect.]\(<https://lh7-rt.googleusercontent.com/docsz/AD\\_4nXedbxkItS-jXqLjyymO-QLkK9Dl\\_VcPL2o9JznvYFE73qCBoibFChqd0gF6mEID1oZExetlb2Meo7MdR3KEKCJFH8T8HYNpax25MfTX\\_8jRZvXgtzZMPN6O4WyeMFFtjlgLoDNKgh8fDrI2Iyiq3A?key=2uTnrUm6Ldglp0iWUnbDyw)\\>
  \
  With collapsible list opened.\
  \
  !\[A screenshot of a computer

  AI-generated content may be incorrect.]\(<https://lh7-rt.googleusercontent.com/docsz/AD\\_4nXd\\_OTYFMK7Z\\_8tmC-NMn9eCrDZFsVt1S9X8tXn-ClHqlczljA52oA3UZm-NvbeqTo4IltFQRm8C-\\_HgnlEVrTq8w70iq2oYR2GqewI7TJcBaxnxKRhaw9oquZg09qODuqL9DoiJ71yYLF4NKTKlAEI?key=2uTnrUm6Ldglp0iWUnbDyw>)<br>
* **Trigger based setup, based on radio question response.**\
  \
  Other questions will be displayed or hidden dynamically. Piping of the option selected in one radio question in to the title of the other radio question. Validation to make sure based on the response to the first question, check if the question that needs to be shown have data.<br>

  **With selecting None**

  \
  !\[A white background with black text

  AI-generated content may be incorrect.]\(<https://lh7-rt.googleusercontent.com/docsz/AD\\_4nXfLoX7awEkBdxT\\_0q1TPbk9nOeeECVUuu38DxunBvBg8yvH5L6Plk1HGze9W8XEyvBhpWnwy-KQ9fm50jtxAurmSho1Mrw02V5vapmEZPiV4WpiAPa9zZ5yiONJNKFbutnKBA\\_AlsskVStwsYce-p8?key=2uTnrUm6Ldglp0iWUnbDyw)\\>
  \
  **With selecting stub 1 it will show P6.**\
  \
  !\[A screenshot of a computer

  AI-generated content may be incorrect.]\(<https://lh7-rt.googleusercontent.com/docsz/AD\\_4nXeRymQmgTxuhbg28DSzoyH31WZUXMby0\\_-fIF3E26RZwyez7aZ8WlEp9NMnTDJyTRnjcNpL7bRchBY5fWfcj-vLNUjtSDnl5EqEaocJHALa8CcvAOhMOpI-qMjZZrtxhhjrpbcDJ7WpKcqlnPWVj\\_g?key=2uTnrUm6Ldglp0iWUnbDyw)\\>
  \
  **With selecting stub 2 it will show P5.**\
  \
  !\[A screenshot of a computer

  AI-generated content may be incorrect.]\(<https://lh7-rt.googleusercontent.com/docsz/AD\\_4nXc5vYPtYxNOvDna6II5sLOFmI72IO9C6utXwu5HzkzjOCOYk3z4pL\\_2o2eZQD4gWkAU8trAsLreGnBO4OvFRGEfSmY1RVYz-aJbuysWQJy5zd9MaqdRQEyZhin7EjnzRVxR9D-Ec1qcOVMD7Y\\_t4g?key=2uTnrUm6Ldglp0iWUnbDyw)\\>
  \
  **Piping the text with what is selected in P5.**\
  \
  !\[A screenshot of a computer

  AI-generated content may be incorrect.]\(<https://lh7-rt.googleusercontent.com/docsz/AD\\_4nXcbLXXTpN7VNVAX3iCKGhG0cMwXR43eQcsBfg7SL1Nprky5LMZBS\\_SGV4YzqBPefmfiultVMg17XvzRjxxT8Hd\\_NglD4bW--SIX2QtGZQP2jS9jjUqFZF5FlYlT16j9Ss-DcHMneicy7S03Lt2YMrY?key=2uTnrUm6Ldglp0iWUnbDyw>)<br>
* **Text box list question with a checkbox in the right and if the checkbox is checked the text boxes in that particular rows should be disabled.**\
  \
  If the text box is answered, the checkbox should not be checked for that particular row. Validation to make sure the text box is not answered if the checkbox is checked for that row. If the checkbox is not checked, the text boxes in that row should be answered.\
  \
  !\[A screenshot of a computer

  AI-generated content may be incorrect.]\(<https://lh7-rt.googleusercontent.com/docsz/AD\\_4nXc\\_2kDSKddWuVhQj1-hXe7d-Tu3aat0Ru-7RTlv8-9xrcyVQz3Pu9\\_aaBStQTYTPbCxGKn7sIH42zbdthJEyT6ya3q4CU-61ohjxvuPxmJ\\_259zWPNJarkClcpGwH\\_bQxIs7W7ZkLBrLlL1sfzLSQ?key=2uTnrUm6Ldglp0iWUnbDyw>)<br>
* **Open-ended question with popup validation for short responses:**
  * If a respondent's open-ended answer is less than 20 characters, a pop-up box will automatically appear.
  * This pop-up prompts the user with: "Would you please elaborate on your response?"
  * It provides two options:
    * "Yes, I will elaborate": If selected, the respondent is allowed to go back and edit their previous response, presumably to add more detail.
    * "No, I have nothing to add": If selected, the respondent is allowed to proceed.
  * A critical instruction is that if the respondent chooses "No, I have nothing to add" in the pop-up, the current page will automatically submit, moving them to the next question without requiring an additional click on a "Next" button.
  * Validation to validate if the character is less than 20 character, no should be selected in the radio question before moving forward. if more than 20 character, no response should be there in the radio question.\
    \
    !\[A screenshot of a computer

    AI-generated content may be incorrect.]\(<https://lh7-rt.googleusercontent.com/docsz/AD\\_4nXf85ANWM6fa\\_JyBjwLy1De3FcqJmEfAtAQljsu6lsD4U667pKx72PKP\\_VjT5ZbCkdBwj\\_glNj4bv4EEzH-vcDU5VdSIVQ0UeMUjxm3ob-0uRHnLGuedRuh6SQFoWluIgmJDBrEElYUXTB92xKHRNsQ?key=2uTnrUm6Ldglp0iWUnbDyw>)
* **Number question with range validation and input character limit.**\
  \
  Input field limited to maximum 3 digits (0-999). JavaScript prevents entry of additional digits after 3 characters are entered.<br>

  Validation ensures entered value is between 0-999 and no more than 3 digits can be input.

  \
  \
  ![](https://lh7-rt.googleusercontent.com/docsz/AD_4nXexbctwi57mdY4ddjX_JrDQVX4z7nBq_BqIVRQANpmbRs66s7lzLD_i6GXIbnELjqjiaY06ALvwHPgVOico3PUy3sfRb_LLRfc7UosJBt-_kOQPw9GI9fjX_txWUylKPQpNQC4EElV1WA0bTNy5uNg?key=D524biiMIq69Vsdz66zikw)
* **Radio question with rows and columns with grouped column headers.**

  \
  JavaScript dynamically adds hierarchical headers: "Reading Purpose" as main header, with "Learning" and "Entertainment" as sub-headers grouping the individual activity columns.

  \
  !\[A screenshot of a survey

  AI-generated content may be incorrect.]\(<https://lh7-rt.googleusercontent.com/docsz/AD\\_4nXc3yJxoXCTGulTuOoAcpj2chcGedaS7xr1t8qkI2fooWNaLRut07y2mPcO-5P01JDLqVY9JEXLabte6PzkIEorSUd7acRdQePQ8JDFh-44taGXzf3cCrzgZirtQ6mp2cH5NTfdL61j27ew5WVYJZQ?key=D524biiMIq69Vsdz66zikw>)<br>
* **Number list question with dynamic total and remaining points calculation.**\
  \
  Shows running total of entered points and remaining points needed to reach 100. Values update in real-time as respondent enters data.<br>

  Validation ensures total sum equals exactly 100 points across all activities.

  \
  !\[A screenshot of a survey

  AI-generated content may be incorrect.]\(<https://lh7-rt.googleusercontent.com/docsz/AD\\_4nXcb2RNTRSD8VjuDTMleY5uh58Ndq7Bwi3IaSiK31\\_2ICPeeEGPyf1uUBJyEvqtbAFWy1IypkfHBxylOzoiWT6nApzKd56Pl1X5owZhsIvRJJTe3H8K5bCdglLAKrhHtG5oNQXzbBymF5HG2m\\_dTA-I?key=D524biiMIq69Vsdz66zikw>)<br>
* **Number input question (Q34d) followed by slider question (Q34e) with dynamic range validation.**

  \
  Number input field with 5-digit ZIP code format validation using verify="zipcode" to ensure exactly 5 numeric digits.<br>

  **Validation:** ZIP code format validation ensures exactly 5 numeric digits using regex pattern.\
  \
  ![](/files/AaG4QdGodnBT7vtkBuO1)
* **Checkbox question with conditional option disabling based on previous question**\
  \
  **Q34d - Minimum daily reading goal:**\
  Simple number input field for entering minimum minutes.\
  \
  **Q34e - Maximum daily reading goal:**\
  Interactive slider with dynamic range:\
  \- Minimum value: Automatically set to Q34d answer\
  \- Maximum value: Fixed at 240 minutes\
  \- Real-time updates when Q34d value change\
  \
  Validation ensures maximum goal cannot be less than minimum goal entered in previous question.\
  \
  ![](/files/RhHPeXDYxHPuZHc9lXkA)<br>
* **Radio question with rows and columns featuring a corner label for clarity.**\
  \
  Corner label "Reading Format ↓ / Activity →" added to top-left cell using JavaScript to orient respondents on what each axis represents.<br>

  !\[A screenshot of a survey

  AI-generated content may be incorrect.]\(<https://lh7-rt.googleusercontent.com/docsz/AD\\_4nXekkjTBa5REnMLgM5VnIK\\_asy607eYDxY7lFrsIkswZXNbcFsH6atgHleMPgARP8byvGFvp7WTb297-H98t6zWbgDmrwp-NAsfo7XBSVclBdoFruOwg1Nb35iHCGz4cHxyoXSDXn3tMtHN1Vw-6GaQ?key=D524biiMIq69Vsdz66zikw>)<br>
* **Radio question with rows and columns featuring forced desktop layout on mobile devices.**<br>

  Forces desktop view layout for this matrix question on mobile devices to ensure optimal readability and interaction, preventing the condensed mobile layout that might make the grid difficult to navigate.<br>

  !\[A screenshot of a computer

  AI-generated content may be incorrect.]\(<https://lh7-rt.googleusercontent.com/docsz/AD\\_4nXfua-xD\\_VAPqNjHhZCqorUZl84SiqCmR37qZkb8oRWsNEJ8ODxAqyGT3AdoJD8FWEKApVoZ-i81boknsvzX-q49VO4u5uTdEtuUGl4B21pZaB6xY\\_NUdSUFf8c7WO4bw9AS1GmNEVQlxrY18-LIaQE?key=D524biiMIq69Vsdz66zikw>)<br>
* **Checkbox question with rows and columns featuring sticky/frozen column headers during scrolling.**<br>

  JavaScript applies sticky positioning to header row so column headers ("Physical Books," "E-books," "Audio books") remain visible at top of view port when scrolling through the genre list, maintaining context for users.\
  \
  ![](https://lh7-rt.googleusercontent.com/docsz/AD_4nXfLPBaFemyIF6LeLMscSdAaHUcW2iCQkHB9MZVDGQZgDBEwNNq3fYH-9wGSiiLXW-AkOMtnZI1LgoKKF_kDbhCjBNU3fNoeGtc_BonQBp3ysVV74R9fA8nhMzzWDHUp9M10f6AxfLUHEZQU1WYisaw?key=D524biiMIq69Vsdz66zikw)<br>
* **Checkbox question with drop-down multi-select interface.**

  \
  Genres are presented in a drop-down menu with check boxes instead of traditional list format. Selected items display in the drop-down box after selection, conserving screen space while allowing multiple selections.

  \
  !\[A screenshot of a computer

  AI-generated content may be incorrect.]\(<https://lh7-rt.googleusercontent.com/docsz/AD\\_4nXekHYnodb6XLOhLbN9Yyhod2f3o2fBWzemaX6WlYpfHRO8zzDp4GtHlg7HSdzZr6VxeYDSOSr9kUqEF9fIVdiZNpjyedmadKO99LxSJcCzJy\\_ihJeuOeclFvDS6tSpglZfEZrjqBQKBkRdX8LMkf1c?key=D524biiMIq69Vsdz66zikw>)<br>
* **Video/audio question with mandatory playback completion before proceeding.**

  \
  Continue button is hidden until the entire video/audio content has been played through to completion. System tracks playback status and only enables navigation after full consumption of the multimedia content.

  !\[A video game with a play button

  AI-generated content may be incorrect.]\(<https://lh7-rt.googleusercontent.com/docsz/AD\\_4nXfjtZ0ImEVgwk7G4KCcusBBS\\_hBtL5Jk68nR73Wrluii7UTNsnNO\\_cnncAbY2-i8\\_SZVxcwuTYh02cxa5xKLXzYyxSncOcXV24OFH4n18QCFJeSAaq3pGmewZWsTxwy8mgTtSaeUphHNB6fZ9veS-g?key=D524biiMIq69Vsdz66zikw>)<br>
* **Audio question with mandatory playback completion before proceeding.**\
  \
  Continue button is hidden until the entire audiobook excerpt has been played through to completion. System tracks audio playback status and only enables navigation after full consumption of the audio content.

  \
  !\[A screenshot of a video

  AI-generated content may be incorrect.]\(<https://lh7-rt.googleusercontent.com/docsz/AD\\_4nXcYrmCAdCxrE1M5E5EGMs9YpkZLeSVnaGG3DFu9nuEMmhYkYMtY2w3krERldNSrPBqE5ZAf9Gp0qhRY9ow7XG-cXcu4qNCaCFBJq0I8aOER2h\\_8oZWzG0XwMcaZPdfUAWFKgfY3MxjfI9M58pdpFw?key=D524biiMIq69Vsdz66zikw>)<br>
* **Number list question with "Other" option featuring dynamic placeholder text.**\
  \
  The "Other" row includes a text field with placeholder text "Please specify other category" in light grey that disappears when user starts typing. JavaScript manages the dynamic placeholder behavior and styling.<br>

  Validation ensures each number input is between 0-100.

  \
  !\[A screenshot of a computer

  AI-generated content may be incorrect.]\(<https://lh7-rt.googleusercontent.com/docsz/AD\\_4nXe1\\_6CSSiDGC\\_SXCfUt2XMtscdd4uaPd\\_d2VLG1NMdOJOu9g8fP-tIsTNJlhE3TQX7\\_2lFL9VZyiA7oDdW02vmCMWo8Sm1aDhn5ukxnsRFVegciXBdYDqmKWsdEkkmBUU6zCq8p-qpIDenLbESDNZA?key=D524biiMIq69Vsdz66zikw>)<br>
* **Checkbox question with "Other" option that requires text input to enable selection.**

  \
  The "Other" checkbox is initially disabled and can only be selected when text is entered in the specification field. If text is removed, the checkbox automatically becomes disabled and cleared.

  \
  Validation ensures "Other" selection is always accompanied by specific user-provided details.

  \
  !\[A white background with black text

  AI-generated content may be incorrect.]\(<https://lh7-rt.googleusercontent.com/docsz/AD\\_4nXfAf2oqvcQHHyibCD8P0sFKlXKfywp4jZfXJkhkBICqUUeepcHhu4qBd7cRtViIc6esYXspH8hdxzYRvWCuOwnA8l\\_p8bzIcUqterf-MEIfMoqP9X66pgVl3dhxOkRnoJV28CMJdfPCU11fprD-L7I?key=D524biiMIq69Vsdz66zikw>)<br>
* **Image display question with enlargeable pop-up functionality.**

  \
  Concept image is initially displayed in smaller inline format with "Click to enlarge" link. JavaScript creates pop-up modal with larger image version, overlay effect to focus attention, and close button to return to main survey.

  \
  !\[A screenshot of a computer

  AI-generated content may be incorrect.]\(<https://lh7-rt.googleusercontent.com/docsz/AD\\_4nXdXzfuEF3ZnQ-gDSEXFwkZH2KnsqkLvNPGSAhZBfrNBnR0eZ\\_ITEL8tzzwgKCp1jCkr7edwTbeGi9LRI2WjUCk0tEIcV0Atd0qHOKLwt54KSXqVaIK2LiBJnESeTMguuyWkIkNyp2wXVPIqbSWQD9E?key=D524biiMIq69Vsdz66zikw>)<br>
* **Checkbox question with ranking functionality: select genres and rank them in order of preference.**\
  \
  Rank input fields are initially disabled and only become active when corresponding genre checkbox is selected. System enforces consecutive ranking (1, 2, 3, etc.) and auto-adjusts ranks when selections change. Rank cells are clickable for easy ordering.\
  \
  Validation ensures ranks match number of selected genres and maintains consecutive numbering.\
  \
  !\[A screenshot of a survey

  AI-generated content may be incorrect.]\(<https://lh7-rt.googleusercontent.com/docsz/AD\\_4nXd8HR32jjTGEUoPNYXuWJNutgZWOhl4msEa5Zionv6wzzS4mwEH-CDHu3Tlh4jh-GduJnALDpj3Zh7w2MPLHHjNVLiPzOclsUD2gEIsj0lSHcdoRwXFlJ8Ijx\\_gdAnST3CCvvhaILiaByRnxAKTDMc?key=D524biiMIq69Vsdz66zikw>)<br>
* **Checkbox question with dynamic selection limit - maximum 3 selections allowed.**\
  \
  Once 3 genres are selected, all remaining unchecked options become disabled. If a selection is removed, disabled options become re-enabled, allowing users to change selections within the 3-item limit.\
  \
  JavaScript provides real-time feedback and enforces the selection constraint.

  \
  !\[A white background with black text

  AI-generated content may be incorrect.]\(<https://lh7-rt.googleusercontent.com/docsz/AD\\_4nXdszqynUuakKEDRE0UFKbHcMBfEen\\_0BgWWAAW5ipDzMXiO9mAsia-ezBN9LTHJY4SvPYeiERo7\\_VIj-X979ZPOXH7wskzqVydZzhzsRfXTjob2otuVaV-zpDT3ztvkqsg24cexGpdbLRSunhB\\_zP4?key=D524biiMIq69Vsdz66zikw>)<br>
* **Number question with real-time currency formatting.**\
  \
  JavaScript automatically adds commas for thousands separators and handles decimal points as user types (e.g., 1234.56 displays as 1,234.56). Range validation ensures input is between 0 and 999,999.\
  \
  Real-time formatting provides immediate visual feedback for improved readability of monetary values.\
  \
  !\[A white background with black text

  AI-generated content may be incorrect.]\(<https://lh7-rt.googleusercontent.com/docsz/AD\\_4nXe\\_xFQ7Uo9Zx4-FzbRWVPmF\\_NYD9CqydBOugUiFrwf4sD\\_IwidJgaK1P6BQmzLUlIrRFDH1NkZyKPLv8atpZycy\\_\\_X2I0TolLrj3kZXpTjXQP3XufzfR28xyGwczmjK2xv-sLxSubiudGR2-X3xvA?key=D524biiMIq69Vsdz66zikw>)<br>
* **Number question with conditional follow-up question on same page.**

  \
  Q37b asks for number of books owned (0-999 range). Q37c only appears if the number entered is greater than 50, asking about willingness to donate books with radio options "Yes, definitely," "Maybe," and "No."\
  \
  JavaScript dynamically shows/hides Q37c in real-time as the user types in Q37b, based on the 50-book threshold\
  \
  !\[A screenshot of a computer

  AI-generated content may be incorrect.]\(<https://lh7-rt.googleusercontent.com/docsz/AD\\_4nXfxq2BS-rvlKpaoS3-g5zardrvlv4OhVkYfLFGPPH\\_xfXYq9lge\\_9Q5dRTiVYv\\_mHi4AZX-wc6NB6Gn6FYBZ1r6wzeusDVWfwL6ZtDKOJXLOHD72kFrc9X6PFpqAtDDJ6WH2a5RSR\\_OfDearGeZ6dI?key=D524biiMIq69Vsdz66zikw>)<br>
* **Number list question with rows and columns featuring exclusive "None" check-boxes and automatic column totals.**\
  \
  For each row, selecting "None" disables and clears all number fields in that row. Entering numbers in any field automatically deselects and disables the "None" checkbox for that row.\
  \
  Column totals automatically calculate and display the sum of numbers entered across all formats for each genre in real-time.\
  \
  !\[A screenshot of a computer

  AI-generated content may be incorrect.]\(<https://lh7-rt.googleusercontent.com/docsz/AD\\_4nXdyY3swjD-3GFCzX6xLjRLEw-1b\\_jIF8vsm4Z5Uy99oYsD3bMvbUFKwjsjEG7ZP36PDUyrsqxuQcsoASzOPKMY5pWAUZIOQghfi0s9h\\_tbBBuSTGE\\_hMuutK2MlCP-uilLOK2E\\_vxD6bmPydaGM66w?key=D524biiMIq69Vsdz66zikw>)<br>
* **Drop-down question with different options for each row based on genre.**\
  \
  Each genre has tailored drop-down options:

  \- Fiction: Physical, E-book, Audio

  \- Non-Fiction: Physical, E-book, Audio, Digital

  \- Academic: Physical, E-book, PDF

  \- Children's Books: Physical, Interactive, Audio

  \
  JavaScript manages different option sets for each row while maintaining consistent styling across all drop-downs.\
  \
  !\[A screenshot of a computer

  AI-generated content may be incorrect.]\(<https://lh7-rt.googleusercontent.com/docsz/AD\\_4nXdaxtLEULw5NIKqsYsE2qUTOB6aORsFua57zc9tK4gpdtejBL-y0nHRV4CkCsOF5MUBT9MhvX85VnnVjMXw284ZPawhlqMghJ7g2z4ZMPTfu9eOx\\_xkx9Cuarh4IUotn\\_0CniMi7esGP\\_rIhxCP2Q?key=D524biiMIq69Vsdz66zikw>)<br>
* **Checkbox question with rows and columns featuring automatic selection dependency.**

  \
  When "Purchase" checkbox is selected for any genre, the "Read" checkbox for that same genre automatically becomes selected. The "Read" checkbox cannot be unchecked while "Purchase" remains selected, maintaining logical consistency that you must read a genre to purchase it.

  JavaScript enforces the dependency relationship between columns while allowing independent selection of "Read" only.

  \
  Validation ensures logical relationship between reading and purchasing behaviors across Fiction, Non-Fiction, and Academic genres.

  \
  !\[A screenshot of a computer

  AI-generated content may be incorrect.]\(<https://lh7-rt.googleusercontent.com/docsz/AD\\_4nXdIRXo6\\_qYjT4Y7VqvC7mRvscPbgwciHdPdxWNbjNEXmPZ0FEgI2VHhRw8aZWDoUKgUlZ4lncs1qvn624PPDWC\\_V3pPoDMGb9NEup8ehBj5cgzmfsEHEFHLY06Svc2saEhFsM57Vmk5Au0xbxWcPdg?key=D524biiMIq69Vsdz66zikw>)<br>
* **Checkbox question with rows and columns featuring column-specific validation and "Other" specification fields.**\
  \
  Validation requires at least one selection per time period column (Morning, Afternoon, Evening). The "Other" row includes separate specification text boxes for each column, appearing when "Other" is selected for that specific time period.<br>

  JavaScript manages column-specific "Other" specification and enforces minimum selection requirements per time period.

  \
  ![](https://lh7-rt.googleusercontent.com/docsz/AD_4nXeZ3Rt4eumoz32nSEDgd9VshDI67p8WuHuFanZzzsQJWZOjuvd2gtezcRgLoLq0CaEEkrZODnBByJKboZLnp_bTdFGa9WGSATYrYGH6YFXBYYwUAk57dDeZ9WBYzDG8cgKZ5ni2WCLdnzEKsMFm4kg?key=D524biiMIq69Vsdz66zikw)<br>
* **Number list question with rows and columns featuring auto-populated reference column from previous question.**\
  \
  The "Total" column is automatically filled with data from Q39c and is read-only/disabled for editing. Respondents enter Physical and Digital book counts for each genre, with the Total serving as a reference point.<br>

  Validation ensures data consistency by linking to previously entered totals while allowing breakdown by format.\
  \
  !\[A screenshot of a computer

  AI-generated content may be incorrect.]\(<https://lh7-rt.googleusercontent.com/docsz/AD\\_4nXfOT6MNolYPIg0EmvVF3DeB5NuDGEsbeRvkP3O7MLa6ocgFoRXm0JzLgM7AGuIu3iI4yEniC4YWjvtcFS-KDvVzCAn7NXeIC2PkwRx2Q\\_kebqsab4woh37kWRzAU2lbrHUuoX81hex8OSo78fyWl\\_8?key=D524biiMIq69Vsdz66zikw>)<br>
* **Number list question with rows and columns featuring auto-populated totals and sum validation.**

  \
  The "Total" column is auto-filled from Q39e and read-only. For each genre row, Physical + Digital must equal the Total. Validation displays error messages if the sum doesn't match, with visual indicators (red highlighting) showing validation status.

  \
  Clear validation instructions are displayed above the table explaining the sum requirement for each category.\
  \
  !\[A screenshot of a computer

  AI-generated content may be incorrect.]\(<https://lh7-rt.googleusercontent.com/docsz/AD\\_4nXcbjloPDPMr3-QQS\\_uH2AnJu\\_flba7jJidVZ95rKB7QXngJPRUjoN8XL668aELs4SVJaquo6kE6aNKuQfZ5mceReI\\_wGmAuuQc9KRqCL4voMpRDA1pr83XxxllppvxTjQ-9MdEiB0L6I7nMAgKDSFs?key=D524biiMIq69Vsdz66zikw>)<br>
* **Number list question with three columns featuring dynamic patient counts punched from previous question.**

  * Shows current patient counts from previous question (e.g., "2 HFpEF patients currently treated") and asks for treatment decisions across three categories:
    * Column A: Type of HF Patient (treatment changes/initiations)
    * Column B: With T2D (patients with diabetes and treatment changes)
    * Column C: With CKD (patients with kidney disease and treatment changes
  * Validation includes screening thresholds:
    * HFpEF treatment changes <3: terminate
    * HFmrEF treatment changes <3: terminate
    * HFrEF treatment changes <2: terminate

  \
  !\[A screenshot of a computer

  AI-generated content may be incorrect.]\(<https://lh7-rt.googleusercontent.com/docsz/AD\\_4nXdEkKe98CtBkeeFJxbmWhUPr6\\_zVe2MPQfUcoxvyt\\_zAUr1NngIfAd5mA2F0IYGqEw-s3Flz3zwFGExu6xs4iJ3E4Y34yacR53UN9KwGs23SoWzOOz\\_DggntT\\_CJR\\_ZSTx\\_62-CR\\_xhjrNJGL7kaEg?key=r1MNSvaMnECUmdUZMYQFyw>)

<br>

\ <br>

\
\
\ <br>

\ <br>

\ <br>


# Hybrid Questions

Metaforms supports a wide range of Hybrid Questions in your surveys.

Let's take a look at all of them:

* **Number question with exclusive checkbox for each row and auto-summing at bottom of the columns**\
  \
  For each row, selecting exclusive checkbox disables all number input fields in that row. Conversely, entering numbers in any field automatically disables the exclusive checkbox for that row.

  \
  Auto-summing displays real-time column totals at bottom and updated based on the number entered in the number input boxes in that column.

  \
  **Validation:** Number inputs range from 0-168. "I don't know" checkbox is mutually exclusive with number entries within each row.

  \
  !\[A screenshot of a computer

  AI-generated content may be incorrect.]\(<https://lh7-rt.googleusercontent.com/docsz/AD\\_4nXco7Nrfbiup4RKaK0\\_f9IOEXQ2gJn-gYGiIB\\_1E9k20jT02FoWPO2Qvyz4Yu0kTmegsuHoqmkOO0wLTLt3\\_0QpdCYwKDckcEeMvYHfekATDleUldblT3Cf1iqbAvEwC8svE8EZ4GKaB250BrllUCdM?key=7KTdCpHZKmzZ5alYNGsqOw)\\>
  \
  !\[A screenshot of a computer

  AI-generated content may be incorrect.]\(<https://lh7-rt.googleusercontent.com/docsz/AD\\_4nXdnMa0bYUgUdZ-S4GuC-Z82hHqSBglz9JwINXX3BXLG16kiYuZOXGA\\_gkm8KJbC00qzKt\\_Dy9EhynWIC9ZPqPSRMke246rNqI\\_QhY4BGtQyIq-Uw5q-PObMLT4WikE1WGpJjpcRAQZCsnDynZCWJ5w?key=7KTdCpHZKmzZ5alYNGsqOw>)<br>
* **Number question with rows and columns featuring auto-calculated row totals and exclusive checkbox for each column**

  For each time period row, number inputs (0-100 validation) automatically calculate and display running totals in the "Total" column.

  \
  Last row contains checkboxes that are mutually exclusive with number inputs in corresponding columns. Selecting checkbox for any format disables all number inputs in that format's column across all time periods.

  \
  **Validation:** Number inputs range 0-100. "I don't know" checkboxes are mutually exclusive with number entries in their respective format columns.

  \
  ![](https://lh7-rt.googleusercontent.com/docsz/AD_4nXd1hQBb_m4kWCUCBH5Zw6eFwzQVFXL8fu_hNJGPx5lipbgB9TApzbw4AiZ4pjdlXc84IlaQp3ZpdDYpUfmQ1O6ztmxH_Bg4y7N0eSinu1Pv26cu0mkAMs3cI2EkGfNAuSH2tJ6qJGyM3an4qsA5uN0?key=7KTdCpHZKmzZ5alYNGsqOw)<br>
* **Checkbox in first column and radio question in second column with validation to select the option in the radio column only if the checkbox is selected for that row**\
  \
  **Validation**: Radio button selection is only possible for services marked as "aware of" in checkbox column. Single radio selection enforced across all enabled options.

  ![](https://lh7-rt.googleusercontent.com/docsz/AD_4nXdGEEgEdofiDrreDpq9YO4fUFpTP1iLrmr23ABkFVPCbw_jqR6WObqDGV6_o0DG_OQEI2MESR0uBpH19zVAPOgCZSNytaMpjK3oApHyWSJEQFEp1-ijVc1ngHZKBpMow4bvpUW3sSRfSWGfLKbLFQ?key=7KTdCpHZKmzZ5alYNGsqOw)<br>
* **Checkbox in first column, number input in second column, and exclusive checkbox in third column with conditional enabling**\
  \
  Number input field (0-10,000 validation) is only enabled when corresponding checkbox is selected in first column. Third column checkbox is mutually exclusive with number input - selecting one disables the other within the same row.

  \
  **Validation**: Number input only accessible for checked formats. Third column checkbox and number input are mutually exclusive within each row.

  \
  !\[A screenshot of a survey

  AI-generated content may be incorrect.]\(<https://lh7-rt.googleusercontent.com/docsz/AD\\_4nXdZcu9gjp0bcFI88JdCKxcqGV2zgjPZKRK1ewgMMT8hmDTQlJnomfrJN4jn790Qc-SjXy-i0yVDGtDldPYVO2N-qOiXZvwIotMLj4HjaxDCxzeXrbJk5hmkN-SGSX7k\\_-YLFNbIfOhHE1wiPQdSb1Q?key=7KTdCpHZKmzZ5alYNGsqOw>)<br>
* **Hybrid Question with number in first column, drop-down in second column and text area in third column. Rows in this hybrid question are shown based on answer in the previous drop-down question**

  \
  Dropdown selection (0-10 range) determines number of children.\
  \
  The number of rows in shown in the hybrid question is based on the number of children selected in the dropdown in the previous question

  \
  !\[A white background with black text

  AI-generated content may be incorrect.]\(<https://lh7-rt.googleusercontent.com/docsz/AD\\_4nXdTbEedSeP38r1IQE5y\\_uctNScaXuGPY-ZoMQJts5vVSRuonncOMEfaLq5KUWUJO6ZwsDO0LF63HvsAiMcCC75lx1xDDcUaBI42U9BpDicyzGtrw8yHZ6KNpKV6CWWRGK9pHVtG0PaJHD6v5emDAxI?key=7KTdCpHZKmzZ5alYNGsqOw)\\>
  \
  !\[A screenshot of a computer

  AI-generated content may be incorrect.]\(<https://lh7-rt.googleusercontent.com/docsz/AD\\_4nXc70yATchjan0VwXUCk-uzl2GU2sammPt3f7XWMUe6x206pN1hLQTWqYQNmBSob\\_SgWLPthS9Cj2kNRNxBzasCN8PKrYnRJil6oeV98uU4MYas7B7oUHa468LQQ6POqhYRCHgCEIXsvJFmoGYmjmtg?key=7KTdCpHZKmzZ5alYNGsqOw>)<br>
* **Number question with exclusive checkbox for each row.**\
  \
  Number input fields (0-100 validation) with "I don't know" checkbox for each book type. Selecting checkbox disables number input for that row, and entering a number disables the checkbox for that row.<br>

  **Validation:** Number inputs and check boxes are mutually exclusive within each row.

  \
  !\[A screenshot of a computer

  AI-generated content may be incorrect.]\(<https://lh7-rt.googleusercontent.com/docsz/AD\\_4nXfn5k1G79aB74WFUCW-NhytYXgz7w94R4t3ZCYQbOwrYMDy2MauJBdUeDbYfRD9cSwePZ2fn-oRR6gMiPjT6y\\_E5y7hQYr15NotYq1ResNUkZsizis4xLKoNjiW6ctq6tgTvYqhoJ2v8MPSnJPUx3s?key=7KTdCpHZKmzZ5alYNGsqOw>)<br>
* **Number question with rows and columns featuring conditional row display and auto-populated reference column.**\
  \
  Only items with non-zero values from previous question appear as rows. First column auto-populates with values from previous question and is read-only. Additional number input columns with specified validation ranges.\
  \
  !\[A screenshot of a computer

  AI-generated content may be incorrect.]\(<https://lh7-rt.googleusercontent.com/docsz/AD\\_4nXfvxd6krSkKtaYmC6zMcl\\_4VdyYy\\_hilX-zPUUZ3UWal2\\_aG6KN45W9SvZ\\_7ALdeV6xOkpVGuZzQDRbLgiUL05zvTvgVlitZDJk37qVauc8KB-5x1iL\\_9kB1sjUO5RNxZDMigf\\_zXoXCkQFLskBcZ4?key=7KTdCpHZKmzZ5alYNGsqOw>)<br>
* **Number question with exclusive checkbox for each row**\
  \
  Number input fields (0-168 validation) with exclusive checkbox for each activity. Selecting checkbox disables number input for that row, and entering a number disables the checkbox for that row.\
  \
  **Validation**: Number inputs and check-boxes are mutually exclusive within each row.<br>

  !\[A screenshot of a computer

  AI-generated content may be incorrect.]\(<https://lh7-rt.googleusercontent.com/docsz/AD\\_4nXfLlL4UCgJlaX\\_Rycr52b\\_gph4Dl-iMfaOj8uNsyD9bYVk\\_\\_1kF-wTVtt1rVoATQctA9EB68lOr4Titu\\_f\\_0MNxfxZvxJu\\_V5oQAIlfAzuUsYboqX8-cBMHWOoM5KrM7W\\_RHMtAHjwjN3fMOonw98Y?key=7KTdCpHZKmzZ5alYNGsqOw>)<br>
* **Number question with rows and columns featuring conditional row display, auto-populated reference column, and sum validation.**

  \
  Only activities with non-zero values from previous question appear as rows. First column auto-populates with values from previous question and is read-only. Additional number input columns with validation ranges (0-168).

  \
  **Validation**: Rows conditionally display based on previous question responses. Reference column is non-editable. Sum of input columns must equal the total in reference column for each row.

  \
  !\[A screenshot of a computer

  AI-generated content may be incorrect.]\(<https://lh7-rt.googleusercontent.com/docsz/AD\\_4nXc0eqMmgeQ4FmxzpBgGCxZsIHBrKlaVy2Erl6j1UMI0mbuuxdaASuIbF4hYV8tdhjgSrs5y-X1K0F8-4kyNbf7-xs5i7vtIeXc05Qjm6l1jbLcYgwinK1tNGgfcLAY7Td1v9eylOiSOLR6K-bivv5c?key=7KTdCpHZKmzZ5alYNGsqOw>)<br>
* **Number question with rows and columns featuring exclusive checkbox for each row**

  \
  Number input fields (0-168 validation) across format columns with exclusive checkbox in last column for each location. Selecting "Don't Read Here" checkbox disables and clears all number inputs for that row. Entering numbers in any format column disables the checkbox for that row.

  \
  **Validation**: Number inputs and exclusive checkbox are mutually exclusive within each row.

  \
  !\[A screenshot of a computer

  AI-generated content may be incorrect.]\(<https://lh7-rt.googleusercontent.com/docsz/AD\\_4nXe2vbSLh5AccDPHYMaM-fZkVvDvLjlKVRII5uoZMqJSEaWQacVCCbZghdlVi4sRqmL\\_q5bYTeFSjwAysFetHBofTgIXS6AeX9XxnzaCqWSssAHI5mZwcd7v\\_wsZHsAc8TfRui6BQ500GXQ9FfbtPQ0?key=7KTdCpHZKmzZ5alYNGsqOw>)
* **Checkbox question in the first column and text box in second column.**<br>

  Respondents can select one or more checkboxes in the first checkbox column. Each checkbox is paired with a text box where respondents can specify more details. The text box is only relevant when the corresponding checkbox is selected.

  **Validation**

  * At least one checkbox option must be selected.
  * If a checkbox is selected, its corresponding text box must be filled.
  * If a text box contains a response, the corresponding checkbox must also be selected.

  ![](https://lh7-rt.googleusercontent.com/docsz/AD_4nXe6eTDfEXS_MjYUkW0EEmZciUzqOL7pT5kvLcE4v7Kq8ZUo6DwsrIklQwcPvPklEKzvSxy69GyHb7DyFRDZw6mVVwL71LfupQRzvUyyLtDuRIFrsovjp-9VP0ZzbBsVIiJhA4rwykTU8K_O4Ngvhw?key=fcMhRmOhITpAAjKbB8OLAA)<br>
* **Checkbox question in the first column and numeric text box in second column.**\
  \
  Respondents can select one or more options that apply. For each selected option, a numeric value must be provided. The number field is only relevant when the checkbox is selected.\
  \
  **Validation**

  * At least one checkbox option must be selected.
  * If a checkbox is selected, its corresponding numeric open end must be filled.
  * If a numeric open end contains a response, the corresponding checkbox must also be selected.
  * Number inputs range 0- 99999.

  ![](https://lh7-rt.googleusercontent.com/docsz/AD_4nXdcDLVt4v-7YxKBQ3LzBePYubLibKyyDmrxuIb1kHz_0jFFm6Olo2t5UOScI2sqjRx3Kp_szqJmCMzUO6ctlQiY0xLswTBSb_bkkwiPtWztWeU1uFHS9l-mqYAjq4BP8bxkz3M7OKF4ugFHJxLrPXA?key=fcMhRmOhITpAAjKbB8OLAA)<br>
* **Checkbox question in the first column and multiple numeric open-ends in the following columns.**\
  \
  Respondents can select one or more options to rate. For each selected option, numeric values must be entered across all columns. The number fields are only relevant when the corresponding checkbox is selected. Each numeric input within a row must have a unique score.\
  \
  **Validation**
  * At least one checkbox option must be selected.
  * If a checkbox is selected, its corresponding numeric open end’s must be filled.
  * If a numeric open end contains a response, the corresponding checkbox must also be selected.
  * Responses entered in the numeric open-ends must be unique.
  * Number inputs range 1- 10.\
    \
    ![](/files/e3vtMlqcdChb7Pc1pzgh)
* **Checkbox question in the first column and multiple numeric open-ends in the following columns.**\
  \
  Respondents can select one or more options in the checkbox column. For each selected option, numeric values must be entered across all columns. Values must follow a progressive increase from left to right. The numeric fields are only relevant when the checkbox is selected.\
  \
  **Validation**
  * At least one checkbox option must be selected.
  * If a checkbox is selected, all corresponding numeric fields must be filled.
  * If a numeric field contains a response, the corresponding checkbox must also be selected.
  * Numeric values across each row must be in ascending.
  * Number inputs range 0- 40.\
    \
    ![](/files/BziOo4SeIeCIGet5OItM)
* **Dropdown question in the first column with exclusive checkbox in the second column.**\
  \
  Respondents can rank the items using the dropdown (e.g., 1 to 4). Each item can be ranked only once, and ranks must be unique. The "Not Applicable" checkbox acts as an exclusive option if selected, the corresponding dropdown is disabled, and vice versa.\
  \
  **Validation**
  * Each item must have either a rank or "Not Applicable" selected.
  * Ranks must be unique across all rows.
  * Selecting "Not Applicable" disables the dropdown for that row.
  * If a rank is selected, the "Not Applicable" checkbox must be left unchecked.\
    \
    ![](/files/vj9U3NXTaXaHEfodAteF)<br>
* **Textbox ranking grid with exclusive checkbox in the last column.**\
  \
  Respondents can assign a unique rank to each option using the textboxes from left to right. Ranks must not repeat across the grid. The "Not Interested" checkbox works as an exclusive option selecting it disables all ranking inputs for that row, and entering any rank disables the checkbox.\
  \
  **Validation**
  * Each option must have either a rank or "Not Interested" selected.
  * Ranking values must be unique across all boxes.
  * If a rank is entered, the corresponding checkbox must remain unchecked.
  * If the checkbox is selected, all ranking inputs for that row must be empty.\
    \
    ![](/files/kvyujXrYauNWMNHwBo5Y)<br>
* **Slider question in the first column with exclusive checkbox in the second column.**\
  \
  Respondents can rate each item using a slider ranging from 1 to 10. If a respondent has not used the item, they can select the "Not Applicable" checkbox instead. Selecting the checkbox disables the slider.\
  \
  **Validation**
  * A response is required for each row either a slider value or "Not Applicable".
  * Sliders accept values only within the range of 1 to 10.
  * Selecting "Not Applicable" disables the slider in that row.\
    \
    ![](/files/URW3e1dj0oWXQ7uPydbq)<br>
* **Grid with multiple slider questions in first and second column and respective exclusive checkboxes in column third and fourth.**\
  \
  Respondents can rate each item using two separate sliders both ranging from 1 to 10. Each slider has its own exclusive "Not Applicable" checkbox. Selecting the checkbox disables the corresponding slider.\
  \
  Validation
  * A response is required for each rating either a slider value or its "Not Applicable" checkbox.
  * Slider values must be between 1 and 10.
  * If a "Not Applicable" checkbox is selected, the corresponding slider must be left empty.
  * If a slider value is entered, the related "Not Applicable" checkbox must remain unchecked.\
    \
    ![](/files/6xAQMeJOHxOP9pmLYzKp)<br>
* **Grid with checkbox in the first column, followed by open end text box and a dropdown in the next two columns.**\
  \
  Respondents can indicate interest by selecting the checkbox in the first column. If selected, they are expected to provide details in the open-end text box and select an option from the dropdown.\
  \
  **Validation**
  * If the checkbox is selected, a response must be entered in the open-end text box, and an option must be selected from the dropdown.
  * If the checkbox is not selected, the text box must remain empty, and no dropdown option should be selected.\
    \
    ![](/files/WMxROYt2rgxyDiXYUEEa)<br>
* **Multiple rating scale with open end text box in the last column.**\
  \
  Grid with two rating scales (1 to 5) in the first and second columns, followed by an open-end text box in the third column. Users rate each row item on two separate criteria. If a high score (i.e. greater than score 2) is selected in either rating scale, a comment is expected in the open-end text box to explain the rating.\
  \
  **Validation**
  * A rating from 1 to 5 must be selected in both rating scales for each row.
  * If the highest score (i.e. score greater than 2) is selected in either of the rating scales, a comment is required in the open-end text box.
  * If a lower score (i.e. score less than 3) is selected for both ratings, the comment box may be left empty.
  * Each row is validated independently.\
    \
    ![](/files/MsKJpfY6izhoWBdDiZdj)<br>
* **Numeric open-end question in first column, followed by multiple dropdown question.**\
  \
  Grid with a numeric input field for age, followed by drop-downs to rate multiple categories.\
  Users enter their age in the first column, then rate various entertainment options using the drop-downs in the subsequent columns. Ratings may be adjusted based on the entered age.\
  \
  **Validation**
  * Age must be entered as a numeric value within a defined valid range (e.g., 13 to 65).
  * A selection is required in each of the dropdown fields.
  * Dropdown selections must match valid predefined options (e.g., scale of enjoyment or relevance)
  * All fields must be completed before proceeding.\
    \
    ![](/files/FbMkJWPygNb6To2ujyyK)<br>
* **Multiple rating scale with open end text box in the last column.**\
  \
  Grid with two rating scales (1 to 5) in the first and second columns, followed by an open-end text box in the third column. Users rate each row item on brand familiarity and purchase likelihood. If a high score (i.e. greater than score 2) is selected for purchase rating scale, a comment is expected in the open-end text box to explain the rating.\
  \
  Validation
  * A rating from 1 to 5 must be selected in both rating scales for each row.
  * Purchase scale rating can only have higher rating only if brand familiarity scale rating is higher than 1.
  * If the highest score (i.e. score greater than 2) is selected for purchase rating scale, a comment is required in the open-end text box.
  * Each row is validated independently.\
    \
    ![](/files/4lcO6H9W3fNMXVQJ7HuY)
* **Numeric input**\
  \
  The first input captures the total number of children under 18 living in the household using a numeric open-end field.\
  \
  **Validation**
  * Entry must be a whole number within a valid range (e.g., 1 to 10).
  * Field cannot be left empty.\
    \
    ![](/files/G5zdhNh5SG9XbvR5c6WI)<br>
* **Numeric open-end question in first column, followed by 2 dropdown question in second and third column and last column for exclusive checkbox question.**\
  \
  Based on the entered number in the previous question, this is a follow-up grid dynamically displays one row per child, allowing input of specific details: age (numeric), gender (dropdown), school grade (dropdown), or an option to decline providing child information.\
  \
  **Validation**
  * The number of visible rows must match the number of children entered.
  * For each visible row:
    * If "Decline to Provide Child Info" is not selected, all three fields (age, gender, and school grade) are required.
    * If "Decline to Provide Child Info" is selected, all other fields in that row must remain empty.
    * Each row is independently validated based on the above logic.\
      \
      ![](/files/HaiChN0NCTHCEcmUdtyP)
* **Multiple open end text box with last column as exclusive checkbox.**\
  \
  Grid with open-end text fields to collect contact information (Name, Zip Code, Email Address, and Personal Address), followed by a checkbox to opt out of providing details.\
  Users can either provide complete contact information or select the opt-out checkbox indicating they decline to participate further or receive incentives.\
  \
  **Validation**
  * If "No Answer – Decline Incentives" is not selected:
    * All fields (Name, Zip Code, Email Address, and Personal Address) are required.
  * If the opt-out checkbox is selected:
    * All text fields must be left empty.
  * Email must be in a valid format if entered.\
    \
    ![](/files/o8zYHFKdlQjxNR0sTlzp)
* **Open end text box in first column with checkbox option in last column.**\
  \
  Grid with open-end text fields where users can list desired features. Each row includes a checkbox labeled "Other" that can be selected if the feature request does not fall within predefined categories. This allows respondents to specify unique or additional features not already covered.\
  \
  **Validation**
  * Each text field can be left blank unless the respondent wants to provide input.
  * If the "Other" checkbox is selected, the corresponding Feature Request text field must be filled in.
  * If the "Other" checkbox is not selected, the corresponding text field is optional.
  * Text entries should be free of special characters if restrictions apply.\
    \
    ![](/files/DbQxiIeZUzjyrrerl0j1)<br>
* **Multiple numeric open end rating question in first three column with column-level exclusive N/A checkboxes in last three column.**\
  \
  Grid where users rate multiple departments across three performance dimensions: Performance, Budget Efficiency, and Staff Quality. Each of these rating fields allows numeric input. For each metric, users can also select an exclusive N/A checkbox if the category is not applicable (e.g., if they cannot assess a department’s budget).\
  \
  **Validation**
  * Each rating input must be a numeric value within the defined range (e.g., 1 to 10).
  * If an N/A checkbox is selected for a column (e.g., N/A Budget), the corresponding input field in that column for that row must be left blank.
  * If a rating is provided, the corresponding N/A checkbox must remain unchecked.
  * All departments (rows) must be evaluated either with a valid rating or marked as N/A per column.
  * Rating fields should not contain non-numeric characters.\
    \
    ![](/files/wU0ufl9t6SXEtPrMGQ2I)
* **Grid with open end text input in first column and checkbox option in the second column.**\
  \
  This grid allows respondents to list product features they want to prioritize by typing them into the "Feature Description" column. To indicate priority, users check the boxes in the "Priority" column, following a consecutive order (e.g. first priority, second priority, third priority, etc.).\
  \
  **Validation**
  * At least one feature description must be provided.
  * Priority checkboxes should be selected in logical, consecutive order (e.g., avoid selecting rows 1 and 4 without selecting 2 and 3).
  * Each priority checkbox must correspond to a filled feature description field.
  * Duplicate priorities or skipped rankings should trigger an error message (if enforced).
  * All inputs must follow expected formats (e.g., no symbols in descriptions if restricted).\
    ![](/files/4RtNGggD4GZY8l3dEUVR)<br>
* **Checkbox question in first column along with the open-end text boxes in second column.**\
  \
  This setup uses a checkbox question in first column to allow users to select their preferred communication method. An additional open end text input field is available alongside each option to collect more details for the selected option.\
  \
  **Validation**
  * At least one communication method must be selected.
  * If any option is selected then additional information is mandatory to be filled.\
    \
    ![](/files/yjRZFpUnoY6kpo7dHgwr)
* **Dropdown question in first column along with the open-end text boxes in second column.**\
  \
  In the first column dropdown selection type combined with a open end input text field. The dropdown allows users to choose a service level from a predefined list.\
  \
  **Validation**
  * A service level must be selected from the dropdown.
  * If "Premium" is selected, the "Additional Requirements" text box must be completed.
  * If a service level other than "Premium" is selected, the "Additional Requirements" field must remain empty.\
    \
    ![](/files/dJFzXOF0WG5B5b790rBJ)<br>
* **Numeric input question in the first column along with an open-end text box in the second column.**\
  \
  The first column captures a numeric value within a specified range, while the second column provides an open-ended text field for entering related details.\
  \
  Validation
  * The numeric value must be within the range of 0 to 10,000.
  * If the numeric value is between 5,000 and 10,000, the open-end text box must be completed.
  * If the numeric value is below 5,000, the open-end text box must remain empty.\
    \
    ![](/files/Yl7n8Bj6uLUV1apKker8)
* **Open-end text box in the first column and numeric input in the second column**\
  \
  The first column provides an open-ended text box for entering descriptive input. The second column includes a numeric input field where a specific number is required within a defined range.\
  \
  **Validation**
  * The first column must contain a valid text entry.
  * The second column must be filled with a numeric value between 1 and 24.\
    \
    ![](/files/3NejSR7UBnZuzLcwcakx)<br>
* **Numeric input in the first column and single-selection radio buttons in the remaining columns**\
  \
  The first column features a numeric input field to enter a number value. The subsequent columns contain radio buttons, allowing only one project type to be selected at a time.\
  \
  **Validation**
  * The numeric input must be within the range of 0 to 50.
  * Only one project type can be selected using the radio buttons.\
    \
    ![](/files/jG0vj6HHRo4NpuQRdC3w)<br>
* **Single-selection radio buttons in the first column and multiple-selection checkboxes in the remaining columns**\
  \
  The first column contains radio buttons, allowing one option to be selected from a list of categories. The remaining columns contain checkboxes, enabling users to select one or more applicable options related to the selected category.\
  \
  **Validation**
  * Only one option can be selected using the radio buttons in the first column.
  * Any number of checkboxes in the remaining columns can be selected as needed.\
    \
    ![](/files/esUvNTVfdkiVcWpjAToq)<br>
* **Checkbox, radio button, and open-end text box combination**\
  \
  Each row begins with a checkbox to indicate whether an option is selected. If selected, a set of radio buttons (1 to 5) allows users to assign a rating, and a corresponding text box enables feedback entry. The radio buttons provide a single-selection scale for rating, while the text field captures optional comments.\
  \
  **Validation**
  * At least one checkbox must be selected.
  * If a checkbox is selected, a corresponding rating must also be selected using the radio buttons.
  * If a checkbox is selected, the text box in the same row must be completed.
  * If a checkbox is not selected, both the rating and text field in that row must remain empty.\
    \
    ![](/files/J4QuApfz3i8NEMOyBeC5)<br>
* **Slider question in first and second column**\
  \
  Each row uses two slider question to capture ratings. The first slider allows values from 1 to 10 for rating a feature, while the second slider captures a comment detail score ranging from 1 to 100. Users can drag each slider to their desired value or manually enter a number in the corresponding box.\
  \
  **Validation**
  * Values must be within their respective ranges:
    * Feature rating (first column): 1 to 10
      * Comment detail score (second column): 1 to 100
  * Both sliders are mandatory, and either cannot be left empty.\
    \
    ![](/files/5bN57zeqgCZinDlYdMVP)<br>
* **Slider question in first and open-end text box in the second column**\
  \
  Each row includes a slider input ranging from 1 to 10 in the first column and a corresponding open-end text box in the second column. The slider is used to assign a score, and the text box captures detailed input when required.\
  \
  **Validation**
  * The rating must be a numeric value between 1 and 10.
  * If the rating is above 7, the text box must be completed.
  * If the rating is 7 or below, the text box must remain empty.\
    \
    ![](/files/vHuGX3DjMr7O6Cp3QokS)<br>
* **Single-select per column in the first column, and single-select per row from column 2 to column 5**\
  \
  The first column supports single selection per column, allowing users to choose only one option among the available rows. Columns 2 to 5 function as a group of radio buttons where only one option can be selected per row. These columns represent different response categories, and the user must select one response within the same row.\
  \
  **Validation**
  * Only one option can be selected in the first column.
  * For the selected row in the first column, one and only one response must be selected from columns 2 to 5.\
    \
    ![](/files/HpbXIihqey506289KqXN)<br>
* **Dropdown in the first column and numeric input in the second column**\
  \
  The first column includes a dropdown menu to select a predefined option. The second column contains a numeric input field to enter a value.\
  \
  **Validation**
  * A selection must be made from the dropdown menu.
  * A numeric value must be entered in the second column.
  * The value entered must be within the valid range of 100 to 10000.\
    \
    ![](/files/yEk0G5E2VWsiRntEyGKZ)<br>
* **Numeric ranking question in the first column and open-end explanation in the second column**\
  \
  This question asks respondents to rank the listed features from 1 to 5 in the first column, with 1 being the highest priority. In the second column, respondents must provide a written explanation for the features they ranked highest.\
  \
  **Validation**
  * Each number from 1 to 5 must be used only once (unique ranking across the five features).
  * Rankings must be within the range 1 to 5.
  * If a feature is ranked 1 or 2, an explanation is required in the second column for that row.\
    \
    ![](/files/h6jFAXcdkPyLpFtnOF0o)<br>
* **Slider question in first and second column**\
  \
  Each row uses two slider questions to capture ratings. The first slider allows values from 1 to 10 for rating the service, while the second slider captures the same rating using a number input style slider, also ranging from 1 to 10. Respondents can drag each slider to their desired value or manually enter a number in the corresponding input box.\
  \
  **Validation**
  * Values must be within the range of 1 to 10 for both sliders.
  * Both sliders are mandatory and must be answered for each row.\
    \
    ![](/files/f6FDdebPbD0zn2VUnR2e)<br>
* **Slider question in first and open-end text box in the second column**\
  Each row includes a slider input ranging from 1 to 10 in the first column and a corresponding open-end text box in the second column. The slider is used to assign a score, and the text box captures detailed input when required.\
  \
  **Validation**
  * The rating must be a numeric value between 1 and 10.
  * If the rating is less than 6, the text box must be completed.
  * If the rating is 6 or above, the text box must remain empty.\
    \
    ![](/files/ZjT2AAq2yvgjeDLSRPbw)<br>
* **Single-select per column in the first column, and single-select per row from column 2 to column 4**\
  \
  The first column supports single selection per column, allowing users to choose only one department among the available rows. Columns 2 to 4 function as a group of radio buttons where only one option can be selected per row. These columns represent different service types, and the user must select one applicable service within the same row.\
  \
  **Validation**
  * Only one option can be selected in the first column.
  * For the selected row in the first column, only one response must be selected from columns 2 to 4.\
    \
    ![](/files/NGrEse4cLysYKY2PiquF)<br>
* **Dropdown in the first column and multi-select checkboxes in columns 2 to 5**\
  \
  The first column features a dropdown menu for selecting the desired service level. Columns 2 to 5 contain checkboxes that allow users to select multiple applicable features. Each checkbox corresponds to a specific feature that can be enabled based on the chosen service level.\
  \
  **Validation**
  * One option must be selected from the dropdown in the first column.
  * Users can select one or more checkboxes from columns 2 to 5 based on feature applicability.
  * At least one checkbox must be selected to proceed.\
    \
    ![](/files/aVOMVohkihHdgunj6zWZ)<br>
* **Checkbox question in the first column with numeric rating question in the second column**\
  \
  Checkbox in the first column where respondent can select multiple option in the checkbox first column and a numeric input field (ranging from 1 to 10) in the second column. Selecting a checkbox activates the corresponding numeric input field in the same row, allowing users to enter a value. If the checkbox is not selected, the numeric input should remain disabled or left empty.\
  \
  **Validation**
  * Users can select more than one checkbox across rows.
  * A numeric value between 1 and 10 is required for each selected row.
  * No input should be allowed in rows where the checkbox is not selected.\
    \
    ![](/files/F1A1mEOCOcZsn7rVpukf)<br>
* **Slider question in first and second column**\
  \
  Each row uses two slider question to capture ratings. The first slider allows values from 1 to 10 for rating a feature, while the second slider captures a comment detail score ranging from 1 to 100. Users can drag each slider to their desired value or manually enter a number in the corresponding box.\
  \
  **Validation**
  * Values must be within their respective ranges:
    * Feature rating (first column): 1 to 10
    * Comment detail score (second column): 1 to 100
  * Both sliders are mandatory, and either cannot be left empty.\
    \
    ![](/files/WCMVQEFrvyAmQGlqzCvg)<br>
* **Radio question in first column and two Slider Rating question in second and third column**\
  \
  Each row includes a single-select radio button in the first column to indicate experience level, followed by two slider inputs in the second and third columns for rating relevant tools on a scale from 1 to 10. Only one experience level can be selected across all rows.\
  \
  **Validation**
  * Only the row with the selected radio button (experience level) is active.
  * The corresponding sliders in that row become enabled for input, allowing users to rate both beginner and advanced tools.
  * All other rows remain disabled, preventing input in their sliders.\
    \
    ![](/files/zRMgpXVh4dTAxUTGPG5t)<br>
* Multiple open-end text questions in first and second column\
  \
  This layout features two open text fields per row, allowing users to input descriptive content. The first column is intended for a primary description (e.g., project or topic overview), while the second column captures any additional details or specific requirements related to the content entered.\
  \
  **Validation**
  * Both text input fields are open-ended and accept free-form responses.\
    \
    ![](/files/vJ8nFZeK1ArDh9zx2Doa)<br>
* **Checkbox question in first column followed by set of radio question along with group of checkbox question at the end of grid**\
  \
  Grid with a multi-select checkbox in the first column, a single rating scale (1 to 5) in the next five columns, and three support option checkboxes in the last columns. Users can select the services they use, rate each selected service, and choose applicable support channels such as phone, email, or chat.\
  \
  **Validation**
  * Users can select one or more services using the checkboxes in the first column.
  * If a service is selected, one rating from 1 to 5 must be selected in the same row.
  * Support option checkboxes (phone, email, chat) can be selected only if the service is checked in the first column.
  * Each row functions independently in terms of selection and validation.\
    \
    ![](/files/MQSoWy6VmwgXjo8kmVvx)<br>
* **Dropdown question in first column and open-end text box question in the second column**\
  \
  Grid with a dropdown menu in the first column for selecting a preferred service package, followed by a text input field in the second column to specify additional requirements based on the selection.\
  \
  **Validation**
  * A service package must be selected from the dropdown.
  * If a valid option is selected than the corresponding open-end field should allow respondent to enter specific requirements.\
    \
    ![](/files/Oh3Vfdh7fbDC6w7vWx8p)<br>
* **Open-End text boxes in first and second column**\
  \
  This grid has two columns, one for typing text and one for entering a number. The first box is for adding details, and the second is for entering a number like days or quantity.\
  \
  **Validation**
  * Enter text in the first box.
  * Enter numbers only in the second box.
  * Both boxes are mandatory.\
    \
    ![](/files/wxcCmsGtB4cpDqr9loeP)<br>
* **Numeric rating in the first column and single-select per row from column 2 to 5**\
  \
  The first column is a numeric input field where respondent can rate each feature from 1 to 50. Columns 2 to 5 contain single-select radio buttons, where respondent can choose one appropriate support level per row (Basic, Standard, Premium, or Enterprise).\
  \
  **Validation**
  * A numeric value between 1 and 50 must be entered in the first column for each row.
  * Only one option can be selected per row from columns 2 to 5.\
    \
    ![](/files/sIZLzQB2fVvUTrtSh4y6)<br>
* **Open-end text questions in column 1 to 3 and a dropdown question in the last column**\
  \
  This question includes three open-ended text fields for collecting contact details i.e. Name, Email address, and Phone number. The fourth column contains a single-select dropdown menu asking whether the respondent would like to be contacted about future studies.\
  \
  **Validation**
  * Text fields should accept valid entries (e.g., a proper email format for the Email field and numeric format for Phone number).
  * The dropdown menu in the fourth column requires the respondent to select one option from the list.\
    \
    ![](/files/k4MwVRjVbCJOaOwvplbh)

\ <br>


# Datasource

Metaforms supports a wide range of Data Source Setups in your surveys.

Let's take a look at all of them:

**Datasource setup using variable declared in the extraVariables attribute of survey tag.**\
\
Maps survey variables defined in the extraVariables attribute of the survey tag to datasource fields for data retrieval and pre-population.

Match source from URL with ID in dataset.

* **Mapping Process:**
  * Survey Variable: source (defined in extraVariables attribute)
  * Dataset Field: ID (unique identifier in external datasource)
  * Functionality: Matches the source value from URL parameters with corresponding ID
* **Example Flow:**
  * Survey URL contains: \`?source=12345\`
  * System searches datasource for record where \`id=12345\`
  * Retrieved data pre-populates designated survey questions
* **Auto populate text question from the datasource**

  \
  !\[A close up of a paper

  AI-generated content may be incorrect.]\(<https://lh7-rt.googleusercontent.com/docsz/AD\\_4nXf5ij2UT2p\\_NuTdYRdMqIh4CLlZB\\_dpacA3HJSDm6mGAYT4uKaXj2066YmqcZP23qW4RsONVsTrr\\_h-Iz5SqkxShByf\\_uUp2RCRfl8TRbM8fcdsqLvcTvVUF6-\\_ayd-iOA\\_fAG1m5zbWoMd9Im1TkA?key=odNjgDDDn4vmZj3NahWsig>)<br>
* **Auto populate text question with rows from datasource**\
  \
  !\[A close up of a paper

  AI-generated content may be incorrect.]\(<https://lh7-rt.googleusercontent.com/docsz/AD\\_4nXc5FktrBY4HIqDuy9knBv1zJX25Yx5V92M7bvfP3NPctAWCQfmhaP2jCtRX9BijUKpPKiC\\_IabnmeGQFj2ugQ-KcsW-pIavPwPtq1zRcjGPhnWxuYsF6t3smwoTnnd7EHDnr12HtwjsGxLkJa4GPhI?key=odNjgDDDn4vmZj3NahWsig>)<br>
* **Auto populate number question from datasource**\
  \
  !\[A close up of a paper

  AI-generated content may be incorrect.]\(<https://lh7-rt.googleusercontent.com/docsz/AD\\_4nXeJW-C\\_tDUj\\_Yu0Hy9j-78TA4Ub2DsUXZnvaKZjpWbfFj2xTYenxn-Ii0HJRf1nrKaupPyFkaxZpG8KAWVM-C9A1xm5VVysa7MINbqluHPaU0hs95fR2DKN13Amo3DgLkeBVyz1ZK2He5Ym4gDhkg?key=odNjgDDDn4vmZj3NahWsig>)<br>
* **Auto populate number question with rows from datasource**

  \
  !\[A close up of a paper

  AI-generated content may be incorrect.]\(<https://lh7-rt.googleusercontent.com/docsz/AD\\_4nXfsa22IYY2ihoyAjhjve0Sez9IC6Q2PebMdyZRjBQTXlSBu7wNjZAte\\_P-rwDyD7U-jtm3X6R5KGDZwzvEYXeBDpSKW5YrA9C7XFbQRiojAPhJhj8eiSmDKAWl0MtZpd49udkKGgHGMHMIaIF1HJnM?key=odNjgDDDn4vmZj3NahWsig>)
* **Auto populate float question from datasource**\
  \
  !\[A close up of a piece of paper

  AI-generated content may be incorrect.]\(<https://lh7-rt.googleusercontent.com/docsz/AD\\_4nXfnrivP1gWnWtt7IPMd01G2o7SGQHe6czqh8gIaAnu-9qYksuLthlZQadEHVlkX52ZdHtsZzAz1hkL1u6lpQ0Emni9NRnPaVRiZKaJ2tzqyYzd8sXlcKpkkgau1SnwuzTQmttycd0lHuaLj2JggNA0?key=odNjgDDDn4vmZj3NahWsig>)
* **Auto populate number question with rows from datasource**\
  \
  !\[A close up of a piece of paper

  AI-generated content may be incorrect.]\(<https://lh7-rt.googleusercontent.com/docsz/AD\\_4nXfAgMpDY7q9fCba-zfyN\\_XHsRCP3LLEYqJefnQ2ViSLZCr0LkF\\_oZ\\_243yi6U6CZvBtNJ0jA4ThSwATIhJzZiPPsXWjh1ssJoft8Pw3hLbo8hE8RjQJn\\_L8W6if-p7PkTL9t7RO\\_Q1gH2DaXw5rhVo?key=odNjgDDDn4vmZj3NahWsig>)<br>
* **Auto populate radio question with rows from datasource**\
  \
  !\[A close up of a paper

  AI-generated content may be incorrect.]\(<https://lh7-rt.googleusercontent.com/docsz/AD\\_4nXfvequJXSpRQkTNH4Yn-jk0Fdamu33pAiXW\\_ocspEY2dUVfWEMgD\\_1J-UpwQtfXea9PPHCpRXI376kp2hT7\\_AVKxLfI0UHJVrLhZS5t2pKdZ2WV4rlMh6KZk\\_yMdP8fw9dqPH9PXPTfdmfHg-2ayQ?key=odNjgDDDn4vmZj3NahWsig>)<br>
* **Auto populate radio question with columns from datasource**

  \
  !\[A screenshot of a computer

  AI-generated content may be incorrect.]\(<https://lh7-rt.googleusercontent.com/docsz/AD\\_4nXcNJxbru3bce6SzZOBHxbwvcHSROQw617YBojEDNnkAWoQ2lfhZaG57KnqMgR4im68FntCDHMCgQnj2ZSfJzSxjQmNuuhBCsF70JRF\\_MKiAt0q9eyn1eXH4xAa6WSwv-oVuCgHrAmIjY27U9gXQJ4k?key=odNjgDDDn4vmZj3NahWsig>)<br>
* **Auto populate radio question with rows and columns from datasource**

  \
  !\[A screenshot of a computer

  AI-generated content may be incorrect.]\(<https://lh7-rt.googleusercontent.com/docsz/AD\\_4nXdIYlWjIR4S9Y2qmVjUMCw4Mmpkw8Uupqx5KxBXFr5eNfNP8Xevu-Cda1Jd39oj1uOWEJk9iiC-YOwG1deyaetADFeoZ66QyrnjjGmmQnkEwsenMx1m-5mZzQSEpQxnMZh4vFX738B1liRqAyunWdY?key=odNjgDDDn4vmZj3NahWsig>)<br>

**Datasource Setup using variable declared in one of the sample source in survey**

Maps sample source variables to datasource fields for data retrieval and pre-population survey questions.

* **Mapping Process:**
  * Sample Source Variable: userId (from sample source tag)
  * Dataset Field: userId (unique identifier in dat file used for datasource file)
  * Functionality: Matches userId from sample source with corresponding userId in external datasource
* **Example Flow:**
  * Sample source variable contains: \`userId=ABC123\`
  * System searches dat file used in the datasource for record where \`userId=ABC123\`
  * Retrieved data auto-punches designated survey questions
* **Auto populate text question from datasource using sample source variable**\
  \
  !\[A close up of a paper

  AI-generated content may be incorrect.]\(<https://lh7-rt.googleusercontent.com/docsz/AD\\_4nXdSoiM-ZXxYo82AQ8aOFnJ8-\\_7etpVgOcQThs7olK1pUELsst49zTh8P8uqMemChrhgvCFaf6COXiD3G2Ux3Qp4SX-KmHxUiL0ePebUoneSMz\\_0TkHh1uLVuWrWOZGXQlFwLItzXIRlQxYOTuzamwE?key=ZxoeILFEXEnA5iq85boyaw>)<br>
* **Auto populate text question with rows from datasource using samplesource variable**\
  \
  !\[A close up of a paper

  AI-generated content may be incorrect.]\(<https://lh7-rt.googleusercontent.com/docsz/AD\\_4nXeI4zQZLNh\\_BEO0zJ96MAftLP7mOCi3jYPGTn1m8jJ8SEEGb90OVX75eBC1EfIqwBeIZvcQkzAzh0oh6N\\_SR34DKLQxuM3PRkZ5zOkx-qLIDkeyUA4Kf5w6klA-Shwu6c4xp1-fAtfHvmTBFDLTppo?key=ZxoeILFEXEnA5iq85boyaw>)<br>
* **Auto populate number question from datasource using samplesource variable**\
  \
  !\[A white crumpled paper

  AI-generated content may be incorrect.]\(<https://lh7-rt.googleusercontent.com/docsz/AD\\_4nXeMvUduJ17kqU-\\_YlEfWVzxmRaq2mRlX1MNcWbKRuZyuUxSWNNuf-YIJVOndvzLa-jfj7xConh6fWbgnqNLf0R4FZcIQi0P-YasceTT3WUg1\\_0D38H7pbJS6zEsIJZrQJHGa\\_o4AxG5GjHTuC0rUg?key=ZxoeILFEXEnA5iq85boyaw>)
* **Auto populate number question with rows from datasource using samplesource variable**\
  \
  !\[A close up of a paper

  AI-generated content may be incorrect.]\(<https://lh7-rt.googleusercontent.com/docsz/AD\\_4nXcZapMJimuFV7Hyn5k53\\_\\_Lo2bHEiA3vpIa7kpZ7fn6gV9k6TiuEqOv7snVdgw63Ej7lagMJxnr6kUAhyQepCmxr6xnDJI\\_9Di0rEOLCLb\\_PnkmhvxTec\\_Ehvq4u5T2EPhibcUfRlDjH7jayAxA3cI?key=ZxoeILFEXEnA5iq85boyaw>)<br>
* **Auto populate float question from datasource using samplesource variable**\
  \
  !\[A close up of a paper

  AI-generated content may be incorrect.]\(<https://lh7-rt.googleusercontent.com/docsz/AD\\_4nXeZNITiaWodJOlhoGBNp1YQ0lPLbnCbUlMIXQkf8WbnK21h9mdH0P\\_aVDN4VDLFA95RPckumjqopxs3kDn0hTiJjuuAMmZnc5dMq9BP9QHcvX3tT24M\\_OusTqyuUIUABA3N\\_xp\\_nPbasXJexHcAA\\_U?key=ZxoeILFEXEnA5iq85boyaw>)<br>
* **Auto populate float question with rows from datasource using samplesource variable**\
  \
  !\[A close up of a paper

  AI-generated content may be incorrect.]\(<https://lh7-rt.googleusercontent.com/docsz/AD\\_4nXejROSWamAzU7jjVgLh5NI72IV9xePuiSVJfU0Ju5cbYeXKY-VlLFUCCs3kmtvKXpRpxIG-KiB\\_jcgvkkhB50XSJjqATnOqW8O1QVgonMDBOY1E8tYmm1\\_UF\\_SA76Bg9uSA0v6J\\_bYDcjZfE\\_1-H40?key=ZxoeILFEXEnA5iq85boyaw>)<br>
* **Auto populate radio question with rows from datasource using samplesource variable**\
  \
  !\[A close up of a paper

  AI-generated content may be incorrect.]\(<https://lh7-rt.googleusercontent.com/docsz/AD\\_4nXeujr2cpfdS7T3cnPl6I\\_6sKVqRZYj6W03G3aOv2pB9Rbx6b-Rf9j75FN\\_NPzFLTagTshQOUY60VI1\\_bglNXC-Gq1r48DqVjUphFnDogWIfIXv48RWV22tH2CdfRE9ze8QwkGxchtcrmIqUzfsXhGk?key=ZxoeILFEXEnA5iq85boyaw>)<br>
* **Auto populate radio question with columns from datasource using samplesource variable**\
  \
  !\[A screenshot of a phone

  AI-generated content may be incorrect.]\(<https://lh7-rt.googleusercontent.com/docsz/AD\\_4nXdnlsaFLeDLnygO7-e2Zd6QWF9gvY\\_wiL8Jmp\\_tataumnA1y-o4Sc3e9CgHJLt4LQdF5zhig7Y9RlAEbLeAEeWI77pBuSJxboPkR7yBrRDAjbA0SjnZjPkEGDgWawwqJhPRK2WVAKAv8blgBwXAlTs?key=ZxoeILFEXEnA5iq85boyaw>)<br>
* **Auto populate radio question with rows and columns from datasource using samplesource variable**\
  \
  !\[A screenshot of a computer

  AI-generated content may be incorrect.]\(<https://lh7-rt.googleusercontent.com/docsz/AD\\_4nXfFGChZ6\\_EhWMVwYrwRJAKk6\\_uKPH8WE1fcZbOcSJFd4WUeWOVF95-qYKD50VnXlEP29I611aBgQ5zg1JwtXT5sNUNM6uaVgFucYZstTv7kmIkdlEm37eoq3Aw2w1B8XWUt5veebvKERQFw5axAug?key=ZxoeILFEXEnA5iq85boyaw>)<br>
* **Auto populate checkbox question from datasource using samplesource variable**\
  \
  !\[A close up of a paper

  AI-generated content may be incorrect.]\(<https://lh7-rt.googleusercontent.com/docsz/AD\\_4nXcDDKLwguhfc6acpVqFSyrt97JW4ztoLHI6pBDWEPEQkhkq02ip1bbgFIdysrwGg3H-v27yTE-awchYFZo52I7LGDeP3maxHdMi2-SXb8hQZn4Y\\_\\_GXFsr7T-6lfjAcfVhxglmTanCOdDHyfWVJCQ?key=ZxoeILFEXEnA5iq85boyaw>)<br>
* **Auto populate checkbox question with columns from datasource using samplesource variable**\
  \
  !\[A screenshot of a computer

  AI-generated content may be incorrect.]\(<https://lh7-rt.googleusercontent.com/docsz/AD\\_4nXcpjY1keNw8XZMj1JPEGZjdZKkyZtltDuMo5jqDTutg57\\_vRGfc78982IlSOHPDQBL5xIjSvp2HJ4JO-wuNoRzBqvzfdfobpIX2aVACuFn6YJyk6H1vBYt-P-cDMqh4DbXZgLLJHBEK0R4A1KwtTjs?key=ZxoeILFEXEnA5iq85boyaw>)


# Loops

Metaforms supports a wide range of Loops in your surveys.

Let's take a look at all of them:

* **Normal loop which shows some questions for brand list and the brand name is piped in those questions without any condition.**

  \
  ![](https://lh7-rt.googleusercontent.com/docsz/AD_4nXds0LGyInN8mIUiMsowlKDugwccwvrrHEp6KCKYgPeZkkfwzWguWP22g9RvO3cyBA8iFbB2X5bu0kFF9psBbJZXktLOWuJvX1bwibawhddbQ7YLDpBZjYN_riouMyXvva7GITi02qjyx3-W3UX-Rqc?key=p9-ZK2nRrJsXmd78v-iRAA)\
  \
  ![](https://lh7-rt.googleusercontent.com/docsz/AD_4nXcfjrNAM1qrB3etdCq9EpdOgSIRI25eNJxsSGNadHnXSzOzQbahxfnuTMbgDVx03-ric3oZsDJ1S2uZwdaotbSAxtIuqtriXTKsPpayKME2ZMS0laWm_gengBLR_VnEiIKuvQ4_nqv_AmidO0AaRX0?key=p9-ZK2nRrJsXmd78v-iRAA)<br>
* **Loop which shows some questions for the brand list and the brand name is piped in those questions and the loop is run only for the options selected in a previous multi select question.**\
  \
  **Base checkbox question.**\
  \
  !\[A white background with black text

  AI-generated content may be incorrect.]\(<https://lh7-rt.googleusercontent.com/docsz/AD\\_4nXdCbhIC3gyQEK9IDE\\_WvyvU\\_7wkzD4tTOQHRezruXK9qBkjFgqhYEWyhj1aSUFCmmvL-A-hSXBtDEO5qrnv-s7BzZbEkIs-6USAXsvsiIP6j1Bf6A-ZFO2\\_SA3ZAKBevICLEq3ViR1PtlLxu6ASZQ?key=p9-ZK2nRrJsXmd78v-iRAA)\\>
  \
  **Loop with two questions which are iterated for the option selected in the base checkbox question.**\
  \
  !\[A screenshot of a computer

  AI-generated content may be incorrect.]\(<https://lh7-rt.googleusercontent.com/docsz/AD\\_4nXeg0zLCQIoVV1olZlO7JIwORM2GMfm15nfmnnHaG35EIL2Rek9Yx3j7a6vxkkKSHFUgifKDaNiRkIwtGrKh8XiqlAp78o-JIqwUXMJ1A7pfhqzQGNMEc9jHAU7mN7M2YCSrxg-Do-Pn75i8bLByVg?key=p9-ZK2nRrJsXmd78v-iRAA)\\>
  \
  !\[A white background with black text

  AI-generated content may be incorrect.]\(<https://lh7-rt.googleusercontent.com/docsz/AD\\_4nXf1O8y\\_SjF\\_dItgc7r6tRGgBWIiPGGWX7Za4JtVhBagDfCwhRs6mhTitizuovOdBkNHZUruNt5MrGoGSgH\\_e4mWcYGYEX-9EILrmCoq\\_ll54glKm7ZgYthC-7sINDk8JBXDvmgHxOw4Lks120JdCQ?key=p9-ZK2nRrJsXmd78v-iRAA>)<br>
* **Loop with randomised iterations where one of the iterations is anchored.**\
  \
  !\[A screenshot of a computer

  AI-generated content may be incorrect.]\(<https://lh7-rt.googleusercontent.com/docsz/AD\\_4nXdccKSRc66WwkL\\_VeqVse7mlfn7UXWr1nQz4Nvhar3xTHeXJM2PbDub57gCc38Djamh4bn5Y8obTwzxXo23WvS84wm424piD-KkyVYVbKInPspAW9nKgE5d1Y5makpJfIGhLczOBqL53OAqDTuJudQ?key=p9-ZK2nRrJsXmd78v-iRAA>)<br>
* **Loop with iterations randomised based on the question outside of the loop.**
  * Base question from which the order of the loop will be controlled based on how the options are randomised in this question\
    \
    !\[A white background with black dots

    AI-generated content may be incorrect.]\(<https://lh7-rt.googleusercontent.com/docsz/AD\\_4nXck16zfvDfrGATgOvX0kzTOjmgfmIbNcmD1gCFwgwet\\_-h\\_Zir3DUpjL-ng\\_64vtWh7mk9teXqc76MqNvw-\\_j8I7gvqXzcdA8LjXwXCyvrjYJG6XwsrDqSFsI3xPnCfkO1csi2ZGTX7HZF5LrvL4e8?key=p9-ZK2nRrJsXmd78v-iRAA>)
  * Loop for which the randomisation order is maintained from the base question\
    \
    !\[A white background with black dots

    AI-generated content may be incorrect.]\(<https://lh7-rt.googleusercontent.com/docsz/AD\\_4nXfDpVWCxIImtifWt97tOUzRWGZShZ0\\_q5QWzJ5P25SYFuwT1iDdeAyrUxqeWM3zaPdYVbhVa70ENSfC7p7s7qvlR6uhqzUKrq9I3xg42omPqEfcsC0bFg84RLJ7dC-8hNjzm\\_K8KexeOteeYxiZaJM?key=p9-ZK2nRrJsXmd78v-iRAA>)<br>
* **Loop with multiple loop variable to pipe the text.**
  * **Example** - Knowledge and Tagline Fit (Publisher + Tagline Pairs)<br>

    !\[A green square on a white background

    AI-generated content may be incorrect.]\(<https://lh7-rt.googleusercontent.com/docsz/AD\\_4nXeMQzmEQujXqnio5mRckIdPby21A-T3\\_5qqXs9GMgR0XpzotKjPXcZKjNMrEQkG0\\_FcELzof5OXjusbvXiOKRcvrwu3JN6s8cLil66ZImmMMmOWiFBGGHAfwC2Xf1kVQQ7UeLKspGbMMZi2tHeR14Q?key=p9-ZK2nRrJsXmd78v-iRAA)\\>
    \
    !\[A screen shot of a computer

    AI-generated content may be incorrect.]\(<https://lh7-rt.googleusercontent.com/docsz/AD\\_4nXfQyXrFVGur5RNEkAlwiSWWNj2x39sGBIraKQMSO9LKk63Sf3IG6Aq5\\_Sr0pJJgfiPdZweDLLJ9\\_rmFPLF4d99mKmJRYpfqh97-K0tBXTbk\\_hcEDZ0ynuH50d9QA10Fgr5OIaRRAfcVxpu0TStcd\\_U?key=p9-ZK2nRrJsXmd78v-iRAA>)<br>
* **Loop with condition some loop iterations only.**
  * Before loop there are few radio questions as below.\
    \
    !\[A white background with black dots

    AI-generated content may be incorrect.]\(<https://lh7-rt.googleusercontent.com/docsz/AD\\_4nXfckR7TO9Khx2IX5\\_NvZtBAH6NOPnIUnn\\_Q6rACHay6ThU34G84MpwInVdxDVbovynVBoNQbb1z8cdruJOV3RXhgpzm97vJonlfqqgcX7keR6I9MSxWDIhLIrJ6rsXAJ9hcHSP4lu0qwZsYuppUg6w?key=p9-ZK2nRrJsXmd78v-iRAA)\\>
    \
    !\[A white background with black dots

    AI-generated content may be incorrect.]\(<https://lh7-rt.googleusercontent.com/docsz/AD\\_4nXfQAwpXfVFUuNlP9YmcpgVxT0K0LLm2pzQ\\_RhlGV6mM7vamowr7Y\\_UBjl31QVeioFav3IJq8F9UDOMtK65A6MA3q8U9tsEKDEhBI13iLcIYlgtnLmoHoULWMga48R9q6jgzI4Ne7Roe398HrRtV5po?key=p9-ZK2nRrJsXmd78v-iRAA>)<br>
  * Some iterations of the loop with condition based on previous question.

    \
    !\[A screenshot of a computer

    AI-generated content may be incorrect.]\(<https://lh7-rt.googleusercontent.com/docsz/AD\\_4nXf09G6PY1uuCSOXMeniIkz-uy01Y0J-1g309K5sq-fySFJIrILdRq9MF\\_hpVG0hEzHdniJpqVCPenX9pqp1fpTk7LHeFycxvJF3Mba7XhKKW\\_GaTHnjOso8Sn0Kwyhlc-Z1JBd4LwjONlpcfTYXC0c?key=p9-ZK2nRrJsXmd78v-iRAA>)<br>
* **Question inside Loop with conditions on the options based on the loop iteration implementing this logic using looprows attribute in rows.**\
  \
  **Example**: Timings are displayed based on the type of the book\
  \
  !\[A green box with black text

  AI-generated content may be incorrect.]\(<https://lh7-rt.googleusercontent.com/docsz/AD\\_4nXd2RxR-G0-sIjP5DXcTqH3bF934wNA8jUG9tb0JhYk5gJc4MXxQshSE7Y6GqKJ4isVClglS\\_WWBqwieowkx04nN0QoopP2DC-VR8CgQhV7jQ3PsIuC6rTCGNklhu\\_75Rq2T8X4Kh4\\_px4-NCWCVVA?key=p9-ZK2nRrJsXmd78v-iRAA)\\>
  \
  !\[A white background with black dots

  AI-generated content may be incorrect.]\(<https://lh7-rt.googleusercontent.com/docsz/AD\\_4nXca98gjWz4oUnAhuE7-f3dJBB9MYLrbL2ieX2v4x8nm8Y30N0OAZ8LitA-OWAimAfFfcje-2HFGkxcDiXvL08xiTXfRhhu9LXW5Opd3M2h5T8FvHLxszPEFVzi7Hpsrag81i0F\\_7e4\\_BwE6qWIzxQ?key=p9-ZK2nRrJsXmd78v-iRAA)\\>
  \
  !\[A white background with black text

  AI-generated content may be incorrect.]\(<https://lh7-rt.googleusercontent.com/docsz/AD\\_4nXeK5TY6pZwKoPovtPzvf3DKYf8Zv-Azc9d4Z56CMbSskTrXXwfh7fteRImSoIFf7EakAcQub0bwZ5qKAheSCwfavH8QEx3rxS7BzhPyUW2T2fpJKJveU1tmh0VZnygToCqgE9Rjvj4RBcgB0AhRYA?key=p9-ZK2nRrJsXmd78v-iRAA)\\>
  \
  !\[A screenshot of a computer

  AI-generated content may be incorrect.]\(<https://lh7-rt.googleusercontent.com/docsz/AD\\_4nXdrsCYK9b1IUKFgOHfG-aobi2P8IzRAekMpvelywXMnbWkFwfwyBz4X4iGxyN1QkXkSPzPVt-7IgJEDd5EXB7ARbljkz7wmIcFM4FJv4kgSasb8l6uz59Xs07XF0CwDMcz0cyU5iiNLuM8xCnqZLw?key=p9-ZK2nRrJsXmd78v-iRAA>)<br>
* **Loop iteration shown based on the least fill logic of previous checkbox question.**

  \
  !\[A white background with black dots

  AI-generated content may be incorrect.]\(<https://lh7-rt.googleusercontent.com/docsz/AD\\_4nXfYctO7Xdn\\_Qq7bhCmW6206\\_jNXz5vZISAttgkRLmOnDs-1JS67kBNLv0vezpGQM9q\\_oFsvusZfXIiI7beNh5Ieg-ggQ5abvjOrL-svzckb1whN-n4IrsuPP8F1Is6H29AHWPJ7bhC\\_t4Wb8Odjvjs?key=p9-ZK2nRrJsXmd78v-iRAA)\\>
  \
  !\[A screenshot of a computer screen

  AI-generated content may be incorrect.]\(<https://lh7-rt.googleusercontent.com/docsz/AD\\_4nXcn8XwEEFpZjAtM9xeq-UTqHRNduzBlgezeZnAyDD9w9pBrcLtQQenoIuyBwuyo\\_RMbjeIlmCMxZ6k-Z2cuF2i45jdgWWTvuGTldqjtJ-kjWpqTvu24GO8VVxHzXCpsZROS4BYCWEBMqDi5eSCEXCY?key=p9-ZK2nRrJsXmd78v-iRAA)\\>
  \
  Along with the main loop, below are the nested loop where options are shown based on the which iteration is currently running in the outer loop and inner loop.\
  \
  !\[A screen shot of a computer

  AI-generated content may be incorrect.]\(<https://lh7-rt.googleusercontent.com/docsz/AD\\_4nXcGbN4anc9wq1QrNHryyZTxGUKfkFBr7X1rup9eiuJm3CF-XFKBJi7wO4M8tqwBwypeYBSJm7dUZ-3IrwRX4Ez0eppsALFraHZVpVxbyRg2YOY81Jw6gwlrlHNIq4gYbKpS2yZY410yvIh4sD7PZJQ?key=p9-ZK2nRrJsXmd78v-iRAA)\\>
  \
  !\[A screenshot of a computer

  AI-generated content may be incorrect.]\(<https://lh7-rt.googleusercontent.com/docsz/AD\\_4nXdJMM1GvMuCll8dLBEkzNfm3YkOl3iMI7hXLBWYlgrtGawc0I9-GTQPaO7HaLytirsIBwMpguKXDZh6u4B8zLHvUILcOo1mYpxshCNmf2t8HV2gMiTDSGveo-0JuIm0AwnRz4PlMAXi9e1EtqpJGA?key=p9-ZK2nRrJsXmd78v-iRAA>)<br>
* **Nested loop with the below logic implemented**
  * Multi-select checkbox question with different types of vehicles.\
    \
    ![](https://lh7-rt.googleusercontent.com/docsz/AD_4nXfQPY-CitX4DdzTdCFO6dV0SBWeRHBA6I0hP_pR5_Gl1qNhnTz1WD-wtCpIcpd13ewFyfKVmo8RfP2bZSbc-EHyUVYzjxvj_ptfn3IE-NbMyoTWdfgE7ioqEyKR_Q9S2_WvuS3ga69NIaRAnDAooSg?key=u6tiYUB_6T6H89odRgBJEA)<br>
  * Based on previous multi-select checkbox question, we have main loop which is asked based on the selected vehicles type.\
    \
    !\[A screenshot of a white page

    AI-generated content may be incorrect.]\(<https://lh7-rt.googleusercontent.com/docsz/AD\\_4nXdI6jblb\\_K13iNs2A0wPbCWZRM3KkZea7-fbpkoveCn0PaoeovRAsZSSt3xrdaGzI9ewoAyPK5R\\_vRH2yPjd14r6Iok27Y4n6i6FLTKXOmY7D4aspUkzoCjxeWFmhRBS2\\_FJAdbKnUvphS-Bx6sKA?key=u6tiYUB\\_6T6H89odRgBJEA>)<br>
  * Inside the main loop, there is a numeric question where the vehicle type appears in the question text, and different vehicle models are shown as options based on the vehicle types selected in the previous checkbox question.\
    \
    ![](https://lh7-rt.googleusercontent.com/docsz/AD_4nXf2VDyBUlH4gvOBDw4YkU6WZ1SDP_om4AzLGh89_upf2a4cNio3ztgDIxPCKHKrNY_q4vJzTLS-RoDBFgqSQPBspziQBB5n687Y1Ve9pXjS6YYtSIK_akN6qjZX640L4jRokwyFK3ie7_-y66t71RI?key=u6tiYUB_6T6H89odRgBJEA)<br>
  * Inside the main loop there is inner loop based on the vehicle models, which is shown if vehicle model has value more then zero at the previous number question.\
    \
    ![](https://lh7-rt.googleusercontent.com/docsz/AD_4nXf4p1U3hHf_Fa0xB0OmKdZotN9_s5L7mTjWqewrPcIDWE5AwmVj51tbFStLajxCLDHmbT8_Hm6xEkFiP8LlEwl3qtiIabz9BbEYBTOx3Zb9S-_ZpjLOYke4r7IRp29EwZJ7zgy-HqA-XWDEBVS2pHQ?key=u6tiYUB_6T6H89odRgBJEA)<br>
  * For inner loop there are number and radio question, where value from previous number question and vehicle model text are shown in the question text.

    \
    !\[A white background with black text

    AI-generated content may be incorrect.]\(<https://lh7-rt.googleusercontent.com/docsz/AD\\_4nXcvcl9ltxXhTBLHIWIqJ6B0Pj6qTDPulWNPxNb2glHbPVuYW1N4x\\_DUylkQ7ZQYmi11SevmRzDFW-40fq9WAF3HbkRf3vHIGWMT1xA9XjIqpmqSxttkeu3HNk20Iw5UmvrQvKpQl6nujr72ZLFYew?key=u6tiYUB\\_6T6H89odRgBJEA)\\>
    \
    !\[A white background with black dots

    AI-generated content may be incorrect.]\(<https://lh7-rt.googleusercontent.com/docsz/AD\\_4nXftPNCkj8Xp2EtmvwRSJzZV6Ez6aARO8w9GcG8zWqAnKoFXImPDlGLn5t1V29PprAS4RIq647aEwxJx1wZRn1IiP7tyBZQxSTj6f82v\\_ZuqIjcvCsuvDPKgSP0Dg7TzuvpN0MhJYV2fixxeFqfK960?key=u6tiYUB\\_6T6H89odRgBJEA>)

<br>


# Maxdiff Indices

Metaforms supports a wide range of Maxdiff Indices in your surveys.

Let's take a look at all of them:

* **Maxdiff using Indices method with 2 columns.**

  \
  We are following the standard way of creating the Maxdiff given by the Forsta for the Maxdiff Indices method.\
  \
  Reference URL with steps provided by Forsta for creating Maxdiff using Indices method: <https://forstasurveys.zendesk.com/hc/en-us/articles/4417353757083-Creating-a-MaxDiff-Question-Indices-Method>
* After the Maxdiff is created it would look like this:
  * The quota tag will be there to select the version.\
    \
    ![](https://lh7-rt.googleusercontent.com/docsz/AD_4nXd47ldakmvNY_BhTbeDDJhNVdtp0x7c9j3egpHcbhvPSRd6AIy-9GQmjBE4sNcmMjqC_Lw_0uEkolulH2lADaPdKn-qcGm9MEQvovuWaKP7NWhtF2puuYk6fZlxkY4uyF_rxO-wRaoK1lBb6goctao?key=EreHVtLgAx12Jt38-c0C1A)<br>
  * Question will be there to store the version selected in the quota.\
    \
    ![](https://lh7-rt.googleusercontent.com/docsz/AD_4nXdqUWVP9JZFme62qCO6FZE-EWoIvkWog1GL52cvgwiTNz-3N7asMqSFn1xjwNdfo2ZfvMbCLPhtZb-F_Kl1QqCTBgciDdA0io3n0KnjIGs4g51FgZa4ZxzI0h43Ss_kIncuhhsaW6Ool_T-yl132g?key=EreHVtLgAx12Jt38-c0C1A)<br>
  * Intro question will be programmed if any provided in the QNR.\
    \
    ![](https://lh7-rt.googleusercontent.com/docsz/AD_4nXfNjAIO4-M20ORZ3TPg9uuKfJObDQ3Nsc0CGftPAEuBf3lKuvvmA5M8IWoIDGxE-lKhvqVs4XVLZMUtCz3aDaZgUIvXJksoU-AKbMoaYog4kzDmT41B_VWf1nusCPDAcXkAMTua-940bKaAJbbuE5U?key=EreHVtLgAx12Jt38-c0C1A)<br>
  * The Maxdiff question will look like this. It will have the most and least column and the exact wordings for that column will be as per the QNR. The attributes/rows shown will be based on the QNR, the design file and the version selected in the quota.\
    \
    ![](https://lh7-rt.googleusercontent.com/docsz/AD_4nXcAaBA0-ycaqR3YIMuxFTgIzRTNNpyMXYq03Qyw9PkvZyZe9qVybFLqTX-dlGQORbolnl-3nLwsVGrm2RogDA45vNI2diRgoo_fc2UzAyz6idaPapic9vq2qMG88SCVEobrqY88j4FWkyHl1WCN4ks?key=EreHVtLgAx12Jt38-c0C1A)<br>
  * If there is any conditional text that should be shown for a particular iteration of the loop, it would be taken care also.\
    \
    ![](https://lh7-rt.googleusercontent.com/docsz/AD_4nXeR-qFKPNSHsAPO5qJ08w12evgtc8h3R2dVmXBjUvOOonK9l-Rwu5wr6rEiuInssSNZGAWeaf_ViMQMdH6CMbXEHIgt-nmocZ6Wa2nojR1AK5z9OOLJz0lRGOJ7YGL0NUUVg2p0R7b-AnMZWT03EYw?key=EreHVtLgAx12Jt38-c0C1A)<br>
  * If the answer is not provided, validation will raise an error.\
    \
    ![](https://lh7-rt.googleusercontent.com/docsz/AD_4nXdkdKAtHFHerd4rKq5VJbttmEAj7R1ElP0R7y2GcUfQP0aI1BEjDG1YvRNvYvAcLJdhmIWgkUOhQgnoDntwwuIrn_e7llA4iMNgEYih5JlLAMT4NPyFLKC9541TIO04Ksp9SUlLOQsNl8cm-zU3QKo?key=EreHVtLgAx12Jt38-c0C1A)<br>
  * If the same row is selected for both the most and least column, validation will raise errors.\
    \
    ![](https://lh7-rt.googleusercontent.com/docsz/AD_4nXfb_sncVMC7L4QSaba0NZpbnbgc5x5AWS5XKhFW638Oua3UJRt1bqzbz_-MrFHEOngC8zqU6b7fj8_qjeJ_nZTUEEYzV4Zhy6c2y-HFAZvuh1IthRDSOies96eYCkiGtIz2uLwOkwvp5k7f4hThgQ?key=EreHVtLgAx12Jt38-c0C1A)<br>
* **Maxdiff using Indices method with 6 columns.**

  \
  If the Maxdiff has six columns, it would be displayed like the one below. The remaining steps shown above will remain as it is.\
  \
  ![](https://lh7-rt.googleusercontent.com/docsz/AD_4nXc-8NibpNsGTOCygM0MTiEjKIDPiomq3tdqlIuFxv-fAnGQdFiqqbtTEOG3gdJTw-T-J50eOJY8unI_TJ-BEwo-dy4EPOd90hMMSbCGDgE4H4zORhdLOkYM99m3D_wMzjwHbaTvJD5DrY-ooYFfoQ?key=EreHVtLgAx12Jt38-c0C1A)<br>
* **Walkthrough of how to create Maxdiff using indices method using Metaforms**
  * <https://drive.google.com/file/d/1AuHuJjLKZ--3TOqWURKCgWBX9U_msV-d/view?usp=drive_link>


# Quotas

Metaforms supports a wide range of Quotas in your surveys.

Let's take a look at all of them:<br>

* **Dynamic priority for quota controlled using quota hook function as shown in the below example.**

  * **Q1**. How likely are you to use these streaming services in the next 6 months?<br>

    | Service      | Extremely likely | Likely      | Somewhat likely | Not likely  | Not at all likely   |
    | ------------ | ---------------- | ----------- | --------------- | ----------- | ------------------- |
    | Netflix      | <p><br></p>      | <p><br></p> | <p><br></p>     | <p><br></p> | <p><br></p>         |
    | Amazon Prime | <p><br></p>      | <p><br></p> | <p><br></p>     | <p><br></p> | <p><br></p>         |
    | Disney+      | <p><br></p>      | <p><br></p> | <p><br></p>     | <p><br></p> | <p><br></p>         |
    | Hulu         | <p><br></p>      | <p><br></p> | <p><br></p>     | <p><br></p> | <p><br></p>         |
    | HBO Max      | <p><br></p>      | <p><br></p> | <p><br></p>     | <p><br></p> | <p><br><br><br></p> |

  <br>

  * **Q2**. Which streaming service would you prefer most?\
    \
    1\. Netflix 2. Amazon Prime 3. Disney+ 4. Hulu 5. HBO Max<br>
  * \[Programming Notes]

    Auto-punch Q2 based on Q1 responses with following priority:

    * First, select row with "Extremely likely" (column 1)
    * If no "Extremely likely", select row with "Likely" (column 2)
    * If no "Likely", select row with "Somewhat likely" (column 3)
    * If multiple rows have same rating, select first occurrence

    If all rows are rated "Not likely" or "Not at all likely", no auto-punch<br>
* **Simple quotas and cross quotas are mentioned in the QNR in tabular format as given in the example below and each quota is added in a separate sheet in a quota sheet.**<br>

  | UK | 200 |
  | -- | --- |
  | US | 200 |
  | DE | 200 |

  <br>

  | Male   | 50% |
  | ------ | --- |
  | Female | 50% |

  <br>

  | 1-17  | 85 |
  | ----- | -- |
  | 18-24 | 85 |
  | 25-34 | 85 |
  | 35-44 | 85 |
  | 45-54 | 85 |
  | 55-64 | 85 |
  | 65+   | 90 |
* Simple quotas and cross quotas are mentioned in the QNR in list format as given in the example below and each quota is added in a separate sheet in the quota sheet.\
  \
  \[SCREENER SECTION]\
  \
  \[QUOTA SETUP]
  * Individual Quotas:\
    \- Country (200 each)\
    \- Gender (300 each)\
    \- Age Ranges (85-90 each)
  * Country x Gender Quotas:\
    \- US Male: 100\
    \- US Female: 100\
    \- UK Male: 100\
    \- UK Female: 100\
    \- DE Male: 100\
    \- DE Female: 100
  * Gender x Age Range:\
    \- Male x Each Age Range: \~42-45\
    \- Female x Each Age Range: \~42-45
  * Country x Age Range:\
    \- Each Country x Each Age Range: 30
  * **Q Country:** In which country do you currently reside? (Select one)\
    1\. United States (US)\
    2\. United Kingdom (UK)\
    3\. Germany (DE)\
    \
    **Programmer Note for QCountry:**\
    \- Set up country quota: US=200, UK=200, DE=200.\
    \- Terminate if country quota is full.<br>
  * **Q Gender:** What is your gender? (Select one)\
    1\. Male\
    2\. Female

    \
    **Programmer Note for QGender:**\
    \- Set up gender quota: Male=300, Female=300\
    \- Terminate if gender quota is full<br>
  * **Q Age:** What is your age?\
    (Please enter your age in years)\
    \[Numeric text box]\
    \
    **Programmer Note for QAge:**\
    \- Accept only numeric values\
    \- Minimum value: 1\
    \- Maximum value: 99\
    \- Show error message: "Please enter a valid age between 1-99"\
    \- Calculate and populate QHiddenAge based on entered value\
    \- Terminate if age range quota is full\
    \
    \&#xNAN;**\[Hidden]**
  * **Q HiddenAge**: Age Range\
    1\. 1-17\
    2\. 18-24\
    3\. 25-34\
    4\. 35-44\
    5\. 45-54\
    6\. 55-64\
    7\. 65+

    \
    **Programmer Note for QHiddenAge:**\
    \- Auto-populate based on QAge response\
    \- Set up age range quotas:\
    \* 1-17: 85\
    \* 18-24: 85\
    \* 25-34: 85\
    \* 35-44: 85\
    \* 45-54: 85\
    \* 55-64: 85\
    \* 65+: 90<br>
* **Single punch least fill as given in the below example.**
  * **Q1**. Which reading devices do you currently use? (Select all that apply)\
    1\. E-reader\
    2\. Tablet\
    3\. Smartphone\
    4\. Laptop/Computer
  * Q1LeastFilled. \[Auto-select one device based on least-fill quota]\
    \
    **Quota Note:**
  * Target: 150 completes per option.
  * System should automatically route respondents to the option with lowest current count.
  * Example: If current counts are:\
    \* E-reader: 100\
    \* Tablet: 50\
    \* Smartphone: 75\
    \* Laptop/Computer: 80
  * Next respondent will be routed to Tablet.
  * For respondents who select multiple devices, system should assign them to the device category with lowest count.<br>
* **Multi punch least fill as given in the below example**
  * **Q2a**. Which of these book genres have you read in the past 3 months? (Select all that apply)

    1\. Mystery

    2\. Romance

    3\. Science Fiction

    4\. Fantasy

    5\. Biography

    6\. Self-Help\
    \
    Q2aLeastFilled. \[Program to automatically select 2 least-filled genres from Q2a]

    \
    **Quota Note:**
  * Need 100 completes for each genre
  * System should select 2 genres per respondent based on least-filled quotas
  * Example: If current counts are:
    * Mystery: 80
    * Romance: 40
    * Science Fiction: 60
    * Fantasy: 30
    * Biography: 70
    * Self-Help: 50
  * System will select Fantasy and Romance for next respondent
  * Continue until all genres reach target.<br>
* **Cross quota with least fill as given in the below example.**
  * **Q3a**. Which of the following book formats do you use? (Select all that apply)\
    1\. Physical Books\
    2\. E-books\
    3\. Audiobooks
  * **Q3b**. Which of the following book genres do you read? (Select all that apply)\
    1\. Mystery/Thriller\
    2\. Romance\
    3\. Science Fiction\
    \
    \&#xNAN;**\[Hidden Question]**\
    Q3LeastFilled.\
    \[Auto-select one format x genre combination based on least-fill quota]

    \
    **Cross Quota Note:**
  * Total sample: 300.
  * Need balanced distribution across all combinations.
  * 9 cells (3x3 matrix).
  * Target \~33 completes per cell.
  * System should route to least-filled combination.
  * **Example**: If current counts are:
    * Physical Books x Mystery: 20
    * Physical Books x Romance: 15
    * Physical Books x SciFi: 10
    * E-books x Mystery: 25
    * E-books x Romance: 5
    * E-books x SciFi: 30
    * Audiobooks x Mystery: 15
    * Audiobooks x Romance: 20
    * Audiobooks x SciFi: 25
  * Next respondent will be routed to "E-books x Romance" combination.
  * Continue until all cells reach target.
* **Quota with question referred in many cross quotas and have to maintain the count among the quotas, using plus in defines and doit="1" in quota tag**<br>
  * **Q Gender**. What is your gender? (Select one)\
    1\. Male\
    2\. Female
  * **Q Age**. What is your age?\
    (Please enter your age in years)\
    \
    \&#xNAN;**\[Hidden]**
  * **QAgeRange**. Age Range\
    1\. 18-24\
    2\. 25-34\
    3\. 35-44\
    4\. 45-54\
    5\. 55+
  * **Q5a**. Which of these book publishers do you know? (Select all that apply)\
    1\. Penguin Random House\
    2\. HarperCollins\
    3\. Simon & Schuster\
    4\. Macmillan\
    5\. Hachette\
    \
    **Cross Quota Note:**
  * 1\. Publisher x Age Quota:\
    \- Each Publisher x Age Group combination needs 30 completes
  * Publisher x Gender Quota:\
    \- Each Publisher x Gender combination needs 40 completes\
    \
    \&#xNAN;**\[Hidden Question]**
  * Q5LeastFilled. \[Single select]\
    1\. Penguin Random House\
    2\. HarperCollins\
    3\. Simon & Schuster\
    4\. Macmillan\
    5\. Hachette

    \
    **Programming Notes:**
  * Single hidden question for least-filled publisher assignment.
  * Consider both quota matrices when selecting publisher.
  * Update both quotas simultaneously.
  * Terminate when quotas are full.<br>
* **Quotas with static priority as given in the below example**<br>
  * **Q6a**. Which of these book genres have you read in the past year? (Select all that apply)\
    1\. Mystery/Thriller\
    2\. Romance\
    3\. Science Fiction\
    4\. Fantasy\
    5\. Biography\
    6\. Self-Help
  * **Q6b**. How likely are you to recommend **\[PIPE-IN GENRE]** books to others? \[Show genre based on priority and least-fill]\
    1\. Very likely\
    2\. Somewhat likely\
    3\. Not very likely\
    \
    **Priority and Quota Note:**
  * Priority Order: Mystery/Thriller, Romance.
  * If Mystery/Thriller (code 1) is selected in Q6a, pipe it into Q6b.
  * If Mystery/Thriller not selected but Romance (code 2) is selected, pipe Romance.
  * If neither priority genre is selected, pipe the least-filled genre from respondent's other selections.
  * Target: 100 completes per genre.<br>
* **Quota with different priority for logic for different conditions e.g., for male give priority to some brands and for female give priority for some other brands as shown in the below example.**<br>

  * **QGender**. What is your gender? (Select one)

    1\. Male

    2\. Female
  * **Q28a**. Which of these publishers have you heard of? (Select all that apply)

    1\. Penguin Random House

    2\. HarperCollins

    3\. Simon & Schuster

    4\. Macmillan

    5\. Hachette

    6\. Bloomsbury

    \
    **Hidden Question - System Generated**

    Q28select. \[Auto-select one publisher based on gender-specific priority and leastfill]\
    \
    **Priority Logic:**
  * If Male:

    1\. First try to assign Penguin Random House.

    2\. If quota full, try HarperCollins.

    3\. If quota full, try Simon & Schuster.

    4\. If all priority quotas full or not selected, assign least-filled among remaining publishers.
  * If Female:

    1\. First try to assign Bloomsbury.

    2\. If quota full, try Macmillan.\
    3\. If quota full, try Hachette.\
    4\. If all priority quotas full or not selected, assign least-filled among remaining publishers.\
    \
    **Quota targets:**
  * Male respondents:

    \- Penguin Random House: 100

    \- HarperCollins: 75

    \- Simon & Schuster: 75

    \- Others: 50 each
  * Female respondents:

    \- Bloomsbury: 100

    \- Macmillan: 75

    \- Hachette: 75

    \- Others: 50 each\
    \
    **Programming Note:**
  * Apply priority logic based on gender.
  * Only consider publishers selected in Q28a.
  * **Q28b**. How familiar are you with \[PIPE: SELECTED PUBLISHER]? (Select one)

    1\. Very familiar

    2\. Somewhat familiar

    3\. Not very familiar

    4\. Not at all familiar

    \
    \
    \
    \ <br>

  \ <br>

  \
  \ <br>

  \ <br>

\ <br>

<br>

\ <br>

\ <br>

\
\
\
\ <br>


# MaxDiff - Alternatives Method

Metaforms follows the standard way of creating a MaxDiff which is provided by Forsta for the Maxdiff Alternatives method.

You can use the following reference URL from Forsta for creating MaxDiff with Alternatives Method:\
<https://forstasurveys.zendesk.com/hc/en-us/articles/4417360578075-Creating-a-MaxDiff-Question-Alternatives-Method><br>

### With 2 columns

After a MaxDiff setup is created it would look like the following:

1. Quota tag to select version\
   ![](/files/qGlGBe0CS7XRWXy1rYVB)<br>
2. Question to store the version selected in the quota\
   ![](/files/ihkOVqZoFBWps99Fvhks)<br>
3. Intro question will be programmed (if provided in the QNR)\
   ![](/files/jlqAASKqi4ZFYmSVYGMW)<br>
4. The MaxDiff question should look like the provided image below. It should have a column for the MOST and LEAST along with the exact wordings for those columns as per the QNR. The attributes/rows shown should be based on the QNR, design file and the version selected in the quota.\
   ![](/files/EYd348otYAVKMJV17jsq)<br>
5. If there is any conditional text that needs to be shown for a particular iteration of the loop - would also be taken care of.\
   ![](/files/rEReodTTF7hscAMG0Kiy)<br>
6. If the answer is not provided, validation would raise an error.\
   ![](/files/Tt1fGc6kZWkQc80dNE7s)<br>
7. If the same row is selected for both the MOST and LEAST columns, validation would raise errors.\
   ![](/files/gU4NRseqIj8pqz8dD4Q7)

### With 6 Columns

If the MaxDiff has six columns, it would be displayed like the image provided below. The rest of the steps stay the same as 2 Column MaxDiff described above.\
\
![](/files/iGn0DwVRGJsfWiwsSrVH)

### Walkthrough : How to Create MaxdDiff (Alternatives Method) using Metaforms

You can refer to the attached Google Drive Link to access our video walkthrough and step by step instructions to setup Maxdiff (Alternatives Method) using Metaforms:\
<https://drive.google.com/drive/folders/16CJrXgfINK1jxJ9NwjcU32X0gM5mFZZ-?ths=true>


# Conjoint

Metaforms follows the standard way for creating Conjoint(DCM) Setups provided by Forsta.

You can use the following reference URL from Forsta for creating MaxDiff with Alternative Method:\
<https://forstasurveys.zendesk.com/hc/en-us/articles/4409469905307-Creating-a-Discrete-Choice-Model-DCM-Question>

\
After the Conjoint(DCM) is created it would look like this:

1. Quota tag to select the DCM version\
   ![](/files/PWNzu7yJ8hko7S3OpIWD)<br>
2. Question to store the version selected in the quota\
   ![](/files/gXottKRGhTRdcha0JsrW)<br>
3. Conjoint question will look like the image provided below. It would have separate columns for each of the alternative as per the design file. The attributes shown would be based on the QNR and the design file and the version selected in the quota.\
   ![](/files/FNaLZ47J3N3ovZLb3GnD)<br>
4. If the answer is not provided, validation would raise an error.\
   ![](/files/1GexKN5e7z5Lv3dUXtfc)

### Walkthrough : How to Create Conjoint (DCM) using Metaforms

You can refer to the attached Google Drive Link to access our video walkthrough and step by step instructions to setup Conjoint (DCM) using Metaforms:\
<https://drive.google.com/drive/folders/1ptw83FaHQ5JTfn2mWiBK6sdJD2DT0NN9?ths=true>


# Patient Charts

Metaforms supports a wide range of Patient Charts (Patient Forms) for your surveys and can replicate almost any chart format.

It provides features such as Style Tags, loops, hybrid questions, qualifying logic, and custom JavaScript (jQuery) - helping you design complex Patient Charts quickly and efficiently. Metaforms can reproduce the exact chart layout from your questionnaire, or you can customize and enhance the design as needed, even if the original format is not well structured.

Here are a few examples to explore:

#### 1. Patient Chart Created in a Loop (Table Format)

This is a custom Patient Chart that appears in a loop for each qualified patient profile. It displays multiple questions on a single screen in a structured layout, along with the patient’s name and avatar.\
\
• A Style tag is created to match the questionnaire layout exactly.\
• Based on qualifying criteria, hidden questions and loops are generated.\
• An HTML table is used to organize all questions in the correct cells.\
• jQuery is added to handle trigger-based logic and validations.

![](/files/CWRvthnUDqn64aDHiU6o)

#### 2. Patient Chart with Variable Number of Questions per Row

The example below demonstrates a flexible layout where each row in the table may contain a different number of questions. It includes answer grids within table cells, and each element’s width is carefully managed for a clean, responsive design.

![](/files/QjsUXlN57FKbU8tvN0Q2)

#### 3. Patient Chart with Hybrid Questions and Trigger-Based JavaScript

**Example 1**

* The first question is a hybrid question with a checkbox in the first column and radio buttons in the remaining columns.
* JavaScript ensures that only the targeted question updates dynamically, without affecting others.
* The last question appears based on the answer to the second-last question, and its text updates dynamically based on the numeric value entered.
* Validation is applied to every optional question.

![](/files/ykXTIImkllvWgpSQFbZq)

**Example 2**

* The checkbox options selected in the second column are automatically reflected in the checkbox question in the third column. 
* The FEV1 percentage question appears only if “Yes” is selected in the preceding question. 
* Validation is applied to all optional questions.

![](/files/koHdaknfu6ePAE2xQwVi)

**Example 3**

* The fourth row contains hidden cells that only appear when the qualifying checkbox option is selected.
* The cell size automatically adjusts based on the visible content.

![](/files/6DtSfXtE6rVzCHKWy0rj) ![](/files/Pbe7492FFRSt89afuNKO)

**Example 4**

* This example contains nested JavaScript logic. 
* A grid hybrid question is displayed based on the selected answer in the first question. 
* JavaScript enables text input only when the checkbox in that row is selected. 
* When the first question’s input changes, the hybrid question hides again, and all responses are cleared.

![](/files/K8sI1o2kTCzwszIVUklY) ![](/files/Pfgn3a0IPDIuRDSvKYFe)

#### 4. Patient Chart with Hybrid Questions Only (No Custom HTML Table)

Metaforms also allows you to create Patient Charts consisting solely of hybrid questions, without using custom HTML tables. These charts usually contain multiple input fields in a single grid cell.  

* Multiple questions of various input types are arranged both row-wise and column-wise. 
* JavaScript hides unnecessary rows or columns and merges their input fields into the required layout dynamically.

![](/files/ZL6wfSwtlehOqN7XkXVM) ![](/files/7xBFoEk03P5ifj3hI35K) ![](/files/tzlfyrix0KBgKmX9PoyQ)

#### 5. Patient Chart with More Than 20 Questions on a Single Page

In the examples below, all questions are displayed on a single screen, following the same sequence and pattern as in the original questionnaire.

![](/files/oNDr86385GipyRspvtFJ) ![](/files/VPRKPYEi3jvEo93YsewG)

![](/files/3vI9aQyncsiyNMs0uKXl)

Metaforms is highly flexible - whether you’re building a complex chart with nested logic or a simple patient profile grid, you can adapt the structure, styling, and interactivity according to your survey requirements.


# Starting a Dimensions Project

Get started with MetaForms by creating a new Dimensions project and configuring it through the setup wizard. This guide walks you through project creation, uploading your questionnaire, and selecting your build preferences.

***

### Create a New Project

**Step 1:** From the Projects page, select **New Project**.

![](https://usercontent.in.prod.clueso.io/743138ba-7933-4a1a-90b2-26ddeb90ccbd/05bff956-b6b9-43fb-a3e7-da02dc5a8ddc/72abdf46-28de-4a4d-984b-fc8019b95247/images/3255e7a8-d2fc-4503-bfc6-75004051e6b6.png)

**Step 2:** Enter your **project name** and **project ID** (used for internal tracking), then click **Create Project**.

![](https://usercontent.in.prod.clueso.io/743138ba-7933-4a1a-90b2-26ddeb90ccbd/05bff956-b6b9-43fb-a3e7-da02dc5a8ddc/72abdf46-28de-4a4d-984b-fc8019b95247/images/bd73a3c6-9bdf-4843-a9a2-81f5c0fd8a0d.png)

***

### Upload Your Questionnaire

**Step 4:** In the left menu, hover and select **Build**.

![](https://usercontent.in.prod.clueso.io/743138ba-7933-4a1a-90b2-26ddeb90ccbd/05bff956-b6b9-43fb-a3e7-da02dc5a8ddc/72abdf46-28de-4a4d-984b-fc8019b95247/images/318cf00e-0656-4a7b-8410-0ff61c67ee29.png)

**Step 5:** Upload your questionnaire file and click **Upload**.

![](https://usercontent.in.prod.clueso.io/743138ba-7933-4a1a-90b2-26ddeb90ccbd/05bff956-b6b9-43fb-a3e7-da02dc5a8ddc/72abdf46-28de-4a4d-984b-fc8019b95247/images/e1eec8d5-14c6-4d26-94fd-00d7342d7f0f.png)

**Step 6:** On the confirmation screen, click **Start Building**.

![](https://usercontent.in.prod.clueso.io/743138ba-7933-4a1a-90b2-26ddeb90ccbd/05bff956-b6b9-43fb-a3e7-da02dc5a8ddc/72abdf46-28de-4a4d-984b-fc8019b95247/images/652a0f3c-4614-46a6-80a6-62ad328f8f08.png)

***

### Configure the Setup Wizard

**Step 7:** Choose **Unicorn** as your survey hosting platform and click **Next**.

<figure><img src="/files/FtqSoI7JQRbraRgbn2zT" alt=""><figcaption></figcaption></figure>

**Step 8:** Choose whether to start a **New Project** or work on an **Existing Project**.

* For an existing project, click **Browse** and select your local directory.

![](https://usercontent.in.prod.clueso.io/743138ba-7933-4a1a-90b2-26ddeb90ccbd/05bff956-b6b9-43fb-a3e7-da02dc5a8ddc/72abdf46-28de-4a4d-984b-fc8019b95247/images/93c81caf-1b58-4fad-809b-0ddcbdb52c2c.png)

* For a new project, choose your directory and pick a template if available.

![](https://usercontent.in.prod.clueso.io/743138ba-7933-4a1a-90b2-26ddeb90ccbd/05bff956-b6b9-43fb-a3e7-da02dc5a8ddc/72abdf46-28de-4a4d-984b-fc8019b95247/images/a2a09b7c-6f07-477b-9922-babc7d9399b0.png)

**Step 9:** Set up your **AI rules** if you have any, then upload any needed **option lists, media, or external files**.

![](https://usercontent.in.prod.clueso.io/743138ba-7933-4a1a-90b2-26ddeb90ccbd/05bff956-b6b9-43fb-a3e7-da02dc5a8ddc/72abdf46-28de-4a4d-984b-fc8019b95247/images/6c5a5d2b-ea40-4b28-92b5-3d70a80b438e.png)

![](https://usercontent.in.prod.clueso.io/743138ba-7933-4a1a-90b2-26ddeb90ccbd/05bff956-b6b9-43fb-a3e7-da02dc5a8ddc/72abdf46-28de-4a4d-984b-fc8019b95247/images/ae32ae59-db6b-47e5-8ac4-d863f842783f.png)

**Step 10:** Pick your specialization level — **Basic** or **Advanced** — and click **Start Programming**.

<figure><img src="/files/Mhq08uxUDfCjINk7wx7E" alt=""><figcaption></figcaption></figure>

You're now inside your workspace and ready to start programming. See[Programming Page Walkthrough](/survey-programming-dimensions/programming-page-walkthrough) to learn your way around.


# Programming Page Walkthrough

Once your Dimensions project is set up, you'll land in the **Programming** tab — the central workspace for scripting, reviewing, and managing your survey. This guide introduces the key panels and features you'll use day-to-day.

<figure><img src="/files/bIqEapKUDTkMaCTIfOIL" alt=""><figcaption></figcaption></figure>

***

### Script Panel

The left side of the screen displays your survey script, split into two tabs:

* **Metadata** — defines your questions, answer lists, and variable types.
* **Routing** — controls survey flow and logic.

![](https://usercontent.in.prod.clueso.io/743138ba-7933-4a1a-90b2-26ddeb90ccbd/05bff956-b6b9-43fb-a3e7-da02dc5a8ddc/72abdf46-28de-4a4d-984b-fc8019b95247/images/dabdc36d-1265-4cab-b4f3-4800fa359b24.png)

You can use the **split screen** feature to view or edit metadata and routing scripts side-by-side — either vertically or horizontally.

![](https://usercontent.in.prod.clueso.io/743138ba-7933-4a1a-90b2-26ddeb90ccbd/05bff956-b6b9-43fb-a3e7-da02dc5a8ddc/72abdf46-28de-4a4d-984b-fc8019b95247/images/925e4120-a4e3-4be5-9c47-3e31c6538446.png)

<figure><img src="/files/T7W9V1JEDL69cutIFRWa" alt=""><figcaption></figcaption></figure>

***

### Quotas Panel

At the top, you'll find the **Quotas** panel. It starts empty and populates once quotas are generated through the AI agent.

![](https://usercontent.in.prod.clueso.io/743138ba-7933-4a1a-90b2-26ddeb90ccbd/05bff956-b6b9-43fb-a3e7-da02dc5a8ddc/72abdf46-28de-4a4d-984b-fc8019b95247/images/a6062b88-7334-41df-9e8f-3f6c994193a4.png)

***

### Design Files & Agent

The right side of the screen gives you access to two key panels:

* **Design File** — displays your uploaded questionnaire as a constant reference while you work.

<figure><img src="/files/rvIRSVzJXgz6rJVBPllw" alt=""><figcaption></figcaption></figure>

* **AI Assistant** — chat-based agent that helps you program questions, quotas, and logic.

<figure><img src="/files/K32XOoIqBs57ENJLZjGI" alt=""><figcaption></figcaption></figure>

***

### Edit History

View a timeline of all file changes and versions, so you can track what was modified and when.

![](https://usercontent.in.prod.clueso.io/743138ba-7933-4a1a-90b2-26ddeb90ccbd/05bff956-b6b9-43fb-a3e7-da02dc5a8ddc/72abdf46-28de-4a4d-984b-fc8019b95247/images/f12aba2f-3353-42fe-800d-f93ab70988c5.png)

<figure><img src="/files/kLeSxC6ZfeQWdv4W2Dfh" alt=""><figcaption></figcaption></figure>

#### Saving Checkpoints

You can manually save a checkpoint at any point to bookmark your progress. Give it a descriptive name and click **Save Checkpoint**.

<figure><img src="/files/NhFOifdMeV5ykK3i7PDv" alt=""><figcaption></figcaption></figure>

![](https://usercontent.in.prod.clueso.io/743138ba-7933-4a1a-90b2-26ddeb90ccbd/05bff956-b6b9-43fb-a3e7-da02dc5a8ddc/72abdf46-28de-4a4d-984b-fc8019b95247/images/71132b06-8753-4dc2-baf5-383125bab067.png)

***

### Save, Sync & Test

When you're ready to push your work back to your Dimensions project directory:

1. Click **Save and Sync** at the top to write your code changes back to the project directory.
2. Click **Test** to launch the Unicorn app and preview your survey build directly.


# Programming with AI

MetaForms includes a built-in AI agent that helps you program survey questions, quotas, and logic directly from the Build interface. You can interact with it through the chat panel or use the inline Generate widget for quick edits.

***

### Programming Questions via AI Assistant

**Step 1:** Ask the agent to program questions — for example, *"Program the first five questions from the questionnaire"* (or specify any section or range).

![](https://usercontent.in.prod.clueso.io/743138ba-7933-4a1a-90b2-26ddeb90ccbd/05bff956-b6b9-43fb-a3e7-da02dc5a8ddc/72abdf46-28de-4a4d-984b-fc8019b95247/images/862f500b-3938-438d-b2ac-1ef0186b1cab.png)

**Step 2:** The agent updates your metadata and routing code based on your request. Review the proposed changes in the script panel on the left.

![](https://usercontent.in.prod.clueso.io/743138ba-7933-4a1a-90b2-26ddeb90ccbd/05bff956-b6b9-43fb-a3e7-da02dc5a8ddc/72abdf46-28de-4a4d-984b-fc8019b95247/images/1d9d4001-b242-4c9f-9665-130d6b13ca2e.png)

**Step 3:** Click **Accept All** or **Reject All** to finalize or dismiss the changes. Make sure to apply your decision in both the **Metadata** and **Routing** tabs.

![](https://usercontent.in.prod.clueso.io/743138ba-7933-4a1a-90b2-26ddeb90ccbd/05bff956-b6b9-43fb-a3e7-da02dc5a8ddc/72abdf46-28de-4a4d-984b-fc8019b95247/images/35137e21-4d58-4487-b2e6-9be27ea048a9.png)

***

### Programming Quotas

**Step 4:** To generate quotas, ask the agent in a new or existing chat — for example, *"Program quotas based on the given QNR."*

![](https://usercontent.in.prod.clueso.io/743138ba-7933-4a1a-90b2-26ddeb90ccbd/05bff956-b6b9-43fb-a3e7-da02dc5a8ddc/72abdf46-28de-4a4d-984b-fc8019b95247/images/015359d2-6992-45f0-aac7-63e0cad3f747.png)

**Step 5:** Review and accept the agent's changes as before. Once accepted, the **Quotas** panel at the top will display the generated tables

![](https://usercontent.in.prod.clueso.io/743138ba-7933-4a1a-90b2-26ddeb90ccbd/05bff956-b6b9-43fb-a3e7-da02dc5a8ddc/72abdf46-28de-4a4d-984b-fc8019b95247/images/b861d2c6-446b-4ad7-8a0d-87c484943c46.png)

<figure><img src="/files/DjjT6L6x7o0brpy9Q36h" alt=""><figcaption></figcaption></figure>

***

### Inline Editing with the Widget

For quick, targeted edits you can use the inline widget.

**Step 6:** Hover over any line in the script. Two options appear:

* **Generate** (on an empty line) — asks the agent to write new code at that position.

  You'll also have the option to select the number of questions to generate at a time between 3, 5 and 10.

<figure><img src="/files/YMxx0FaecnkQVLVAzt5p" alt=""><figcaption></figcaption></figure>

* **Edit** (incase a set of lines are selected) — asks the agent to modify the selected code. Type your request into the chat and the agent will propose changes inline.

![](https://usercontent.in.prod.clueso.io/743138ba-7933-4a1a-90b2-26ddeb90ccbd/05bff956-b6b9-43fb-a3e7-da02dc5a8ddc/72abdf46-28de-4a4d-984b-fc8019b95247/images/1b03a347-f3b6-4038-8796-4302e1dc9a3a.png)

**Step 7:** Review and **Accept** or **Reject** the inline changes, just like you would with chat-generated edits.

***

### Tips

* Use the **Design File** panel on the right as a reference while you prompt the agent — it shows your original questionnaire.
* Navigate between the **script**, **design file**, and **AI assistant** panels to cross-check your updates.
* Save a **checkpoint** before making large changes so you can roll back if needed.


# Change Management

Use Change Management when an existing project has a revised questionnaire or related project files. It helps you identify the update, resolve any ambiguity, and apply the resulting script changes with a reviewable record.

## Before you begin

You need an existing project with its current questionnaire loaded, plus the revised files for the next version. Changes are easiest to identify when the revised questionnaire uses tracked changes or highlights. See [What We Support](/survey-programming-dimensions/change-management/what-we-support) for the full guidance and limitations.

## The workflow at a glance

1. [Start a new version](/survey-programming-dimensions/change-management/starting-a-new-version) — upload the revised files and start Change Management.
2. [Review changes](/survey-programming-dimensions/change-management/review-stage) — answer, dismiss, or add clarifications so the intended change is clear.
3. [Apply changes](/survey-programming-dimensions/change-management/apply-stage) — preview and accept each proposed script update, then finish the version.

{% hint style="info" %}
Change Management proposes and applies script updates; it does not replace your final QA. Review the generated clarifications and previews before finishing the version.
{% endhint %}

If the workflow does not behave as expected, see [Troubleshooting](/survey-programming-dimensions/change-management/troubleshooting).


# What We Support

Change Management works best when the updated questionnaire clearly shows what changed. This helps Metaforms identify the right updates, ask the right follow-up questions, and guide you through applying the changes to your survey.

### Supported Inputs

Metaforms supports questionnaire updates that use:

* **Highlights** to mark new, changed, or important content.
* **Tracked changes** to show edits, additions, and removals directly in the document.

When these are present, Metaforms can use them as signals during the review and apply stages.

### Supported Change Types

Metaforms supports **cascading questions**. This means it can help with changes where one update affects related questions later in the questionnaire, such as follow-ups, dependent questions, or question flows that need to stay aligned.

### Current Limitations

Metaforms cannot yet reliably find every change between two questionnaire versions when the changes are not clearly marked.

For example, if you upload a new questionnaire without highlights or tracked changes, Metaforms may not always identify every difference between the old and new versions. You should review the generated clarifications and applied changes before finishing the version.

### Upcoming Roadmap

We are working on:

* **Better questionnaire version comparison** to improve change detection accuracy between questionnaire versions.
* **Changelog Excel file support** so changelog files can be used as another way to identify updates.

These improvements will help Metaforms identify changes more reliably, even when updates are not fully marked with highlights or tracked changes.


# Starting a new version

## Before you start

Before starting, make sure you have:

* The current questionnaire is already loaded in the project. For help creating the project, see [Starting a Dimensions Project](/survey-programming-dimensions/starting-a-dimensions-project).
* You have the revised files ready to upload, such as the updated questionnaire.
* You know whether this is a new tracker wave. Select that option only when the version represents a new wave; it preserves past questions in the script.

{% hint style="info" %}
Files you do not remove during upload carry forward from the current version. Review the upload list carefully so an outdated file is not carried into the new version.
{% endhint %}

***

## Upload and start the new version

**Step 1:** Open your existing project in Metaforms and click **Upload New Version** in the Project top bar.

<figure><img src="/files/S5LSCD5f3l0a4Hwdrh1H" alt=""><figcaption></figcaption></figure>

**Step 2:** Enter a name for the new version — this could be a wave name or any identifier that helps you track iterations.

{% hint style="info" %}
In a tracker study, you can select 'Mark this version as a new wave' to ensure that we preserve past questions in the script.
{% endhint %}

<figure><img src="/files/W2VL3T8Rgcb0kR2NTbWV" alt=""><figcaption></figcaption></figure>

**Step 3:** Upload the files you want to replace, such as the revised questionnaire. Files you leave in place carry forward from the current version.

<figure><img src="/files/WytIb0h3gEULqfTcnlE1" alt=""><figcaption></figcaption></figure>

**Step 4:** Click **Create** to finalise the version. Metaforms will process your upload and prompt you to choose how to proceed.

**Step 5:** Select **Change Management** to enter the structured review workflow, then click **Start Version**.

<figure><img src="/files/t8eDuTbyaTCuri8qCuu3" alt=""><figcaption></figcaption></figure>

You will now enter the **Review** stage. Next, [review the detected changes](/survey-programming-dimensions/change-management/review-stage).


# Review Stage

The **Review** stage is where you make the intent behind each detected change clear before anything is applied to the script. Metaforms creates clarifications for changes that may be ambiguous; review them before moving to Apply.

## Your goal in this stage

For every clarification, decide whether it needs an answer. Answer items that need context, dismiss items that do not need action, and add a clarification when a missing question should be considered. You can move on with unresolved items, but they may block the related change in Apply.

***

### The Review Screen

When the review stage loads, you'll see:

* **Left:** The **clarification sheet** — a list of system-generated clarifications highlighting potentially ambiguous changes.
* **Right:** Your project files (questionnaire, scripts, quota files) for reference.

![](https://usercontent.in.prod.clueso.io/743138ba-7933-4a1a-90b2-26ddeb90ccbd/3e5aa6ac-618d-4b74-b0e4-2a048abafd8c/28b2c723-6911-4e71-bf54-5d410fee081c/images/e4a4756b-8cfd-4742-8fd8-b2acb6e8e907.png)

***

## Work through clarifications

**Step 1:** Review the generated clarifications. Each one highlights a change that may need further context or a decision.

![](https://usercontent.in.prod.clueso.io/743138ba-7933-4a1a-90b2-26ddeb90ccbd/3e5aa6ac-618d-4b74-b0e4-2a048abafd8c/28b2c723-6911-4e71-bf54-5d410fee081c/images/ed4e6b88-7a11-4c4c-91df-f19cb4ed778e.png)

**Step 2:** For each clarification, choose the outcome that best describes it:

* **Answer or comment** when the agent needs context or a decision.
* **Resolve** the item once the answer is complete.
* **Dismiss** it when no action is needed.

![](https://usercontent.in.prod.clueso.io/743138ba-7933-4a1a-90b2-26ddeb90ccbd/3e5aa6ac-618d-4b74-b0e4-2a048abafd8c/28b2c723-6911-4e71-bf54-5d410fee081c/images/106a8737-d1d3-44e5-bfb6-d206c32c4961.png)

You can also **add new clarifications** manually if additional questions arise, or **delete** ones that are no longer relevant.

**Step 3:** If you need to share clarifications externally (e.g., with a client or PM), click **Export Excel** to download the sheet.

<figure><img src="/files/gmESSTx9caZQkBSKxaxa" alt=""><figcaption></figcaption></figure>

***

## Move to Apply

**Step 4:** Once you've addressed all clarifications, click **Done Reviewing Changes** to move to the Apply stage where changes are applied to your scripts.

<figure><img src="/files/TQ4BbydT67lHFfOlRXkX" alt=""><figcaption></figcaption></figure>

{% hint style="warning" %}
You can move on without resolving every clarification. Unresolved items carry into Apply and can block the related questions until they are answered and checked.
{% endhint %}

Next, [apply the proposed changes](/survey-programming-dimensions/change-management/apply-stage).


# Applying all changes

In **Apply**, work through the checklist to preview, accept, and finalise the proposed script updates. Treat each item as a review point: confirm the preview matches the intended questionnaire change before accepting it.

## Before you accept a change

Check the proposed metadata and routing update against the revised questionnaire and any clarification answers. If the proposal is incomplete or incorrect, ask the Change Management agent to revise it rather than accepting it.

***

### The Apply Screen

* **Left:** A checklist of all questions (by ID, in order). You must work through the changes sequentially.
* **Middle:** The Change Management agent conversation and the currently selected Question card.
* **Right:** Review/Editor Workspace — Script (metadata & routing), quota tables, clarification sheet, and questionnaire.

<figure><img src="/files/MmFegHjhG4hhGIDlBTza" alt=""><figcaption></figcaption></figure>

#### The checklist

You can click on any question to see the changes detected and the edit proposed. Along with describing what's changed and where, as you work through the changes using the checklist, it captures your progress with change management.

<figure><img src="/files/RVZFerNxG23EujlMCVLD" alt=""><figcaption></figcaption></figure>

***

## Preview, accept, and finish

**Step 1:** Once the checklist is generated, you will land on the first detected change.

<figure><img src="/files/Tc41rNcWGub3143k1wAd" alt=""><figcaption></figcaption></figure>

**Step 2:** Review the suggested change and its description. Click **Preview Changes** to see a diff of exactly what will be modified in Metadata and Routing.

<figure><img src="/files/mc08L44bNU1mlHVW3P2f" alt=""><figcaption></figcaption></figure>

**Step 3:** If the preview is correct, click **Accept All** to apply it. The question status changes to **Done**. If it is incorrect, ask the agent to update the proposal, then review the new preview before accepting.

<figure><img src="/files/37BCRNNDqOncom2VHP5n" alt=""><figcaption></figcaption></figure>

**Step 4:** You can navigate to the next Change using the buttons in the Question item, or by clicking through the checklist on the left.

## Clarification-blocked questions

An unresolved clarification from the Review stage may block some questions. This will be shown explicitly as information on that question.

**Step 5:** Answer the blocking clarification, then click **Check Resolution**. This asks the AI to re-evaluate the change and, when enough context is available, unblock the question.

<figure><img src="/files/V0sor0mgGnshxRv5HVOt" alt=""><figcaption></figcaption></figure>

***

## Cascading changes

* `+n cascades` means the current change affects that number of later questions.
* `cascading` means the required update was handled when you accepted an earlier change.

<figure><img src="/files/WjRfFzycxjbQ2zVi9sMU" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}
The checklist also acts as a map to the cascading impact from a question, hover over a question to see which questions get affected.
{% endhint %}

***

## Use the Change Management agent

The Change Management agent can read your Questionnaires, the MDD Script (Metadata\&Routing), Quota tables and the checklist on the left.

Once the checklist is prepared, you can ask the agent to create a missing change or revise a change that is wrong.

{% hint style="info" %}
The agent is always informed of the selected Question, Minimise the card if you want to un-focus the agent from the current question.
{% endhint %}

<figure><img src="/files/x6cd2Rcf3eZApW5V0lI7" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}
Tip: You can ask the agent to update one or many changes using `@` to mention questions in the checklist (it autocompletes).
{% endhint %}

<figure><img src="/files/973lM3h4XmLmyHBkCWLc" alt=""><figcaption></figcaption></figure>

***

## Finish the version

When every checklist item is applied or marked **Done**, **Finish CM** appears. Select it to return to the Programming tab and continue programming. Complete your normal final QA before treating the version as ready.

<figure><img src="/files/oz7kQjGk0tOnGAVUPPmw" alt=""><figcaption></figcaption></figure>


# Troubleshooting

Use this guide when you cannot start Change Management, a change is missing or unclear, a question is blocked, or you cannot finish the version.

## I cannot start a new version

Confirm that the project already has its current questionnaire loaded and that you selected **Upload New Version** from that project. Check that the revised questionnaire is included in the upload. If the project is a tracker, confirm whether it is truly a new wave before selecting the new-wave option.

## The expected change was not detected

First, confirm that the revised file was uploaded and that the intended change is visible in it. Metaforms identifies changes most reliably when the questionnaire uses tracked changes or highlights. Add a clarification to describe the missing update, then ask the Change Management agent to create the change. Review the resulting preview before accepting it.

## The detected change is wrong or incomplete

Do not accept it. Use the agent to explain what should change and reference the relevant question or questions with `@`. Include the intended wording, answer options, routing, or quota impact. Preview the revised proposal, then accept it only when it matches the questionnaire.

## A question is blocked by a clarification

Open the linked clarification, add the missing answer or context, and select **Check Resolution** on the blocked question. The agent will re-evaluate the change. If it remains blocked, make the clarification more specific—for example, state which question, option, or routing outcome is intended.

## I cannot see **Finish CM**

Every checklist item must be applied or marked **Done** before **Finish CM** appears. Check the checklist for incomplete or blocked questions, resolve any linked clarifications, and retry the item. Finish only after reviewing all accepted previews and completing your normal QA.

## I uploaded the wrong or outdated file

Before proceeding, review the files carried into the new version. Files not removed during upload carry forward from the earlier version. If an outdated file affects the detected changes, do not rely on the current results; correct the version inputs before applying changes.

## Still need help?

Share the project and version name, the affected question ID, the clarification text or checklist status, and a screenshot of the preview or error. This gives the support team enough context to reproduce the issue.


# Templates

### What Are Survey Programming Templates?

Templates are reusable survey shells that help you standardize project structure and speed up new project creation. A template contains your starter metadata and routing code — the boilerplate that every project of a particular type needs — along with any linked AI Rule folders that should be applied by default.

Instead of writing the same base scripts from scratch every time, you define them once in a template and select it when initializing a new project. Templates allow you to build on top of MetaForms' baseline intelligence with your own custom logic, helping standardize survey structure across teams and clients.

**A Survey Programming Template includes:**

* Starter metadata code
* Starter routing code
* Linked AI Rule folders (optional)

***

### Getting Started

Navigate to the **Templates** section under the **Build** tab to view, create, and manage your survey programming templates.

![](https://usercontent.in.prod.clueso.io/743138ba-7933-4a1a-90b2-26ddeb90ccbd/a372a2f6-f998-4490-8644-43d1b34811fd/c86c7d1f-8c61-4b3b-9bec-6f0c915a5365/images/fa595329-2b4e-4b85-b383-b13c945477d8.png)

***

### Creating a Template

**Step 1:** Click **New Template**.

![](https://usercontent.in.prod.clueso.io/743138ba-7933-4a1a-90b2-26ddeb90ccbd/a372a2f6-f998-4490-8644-43d1b34811fd/c86c7d1f-8c61-4b3b-9bec-6f0c915a5365/images/4473209f-c2cc-4687-ae22-927d96970b56.png)

**Step 2:** Enter a descriptive name for your template. Use a name that reflects the team, client, or project type it's designed for — for example, "Client A - Standard Tracker" or "CATI Team Template." This makes it easy for programmers to pick the right template when starting a new project.

Choose Unicom as the Survey Hosting Platform.

**Step 3:** Select your **Survey Hosting Platform** (e.g., Unicorn) and click **Create Template**.

<figure><img src="/files/wQcqUhgb5yhpepHaU2v2" alt=""><figcaption></figcaption></figure>

***

### Adding Starter Code

**Step 4:** After creation, you'll see fields to add our started code. Paste your desired metadata and routing starter code into these fields. This is the boilerplate shell that will be pre-loaded into every project that uses this template — things like standard variable definitions, common routing blocks, or shared includes.

![](https://usercontent.in.prod.clueso.io/743138ba-7933-4a1a-90b2-26ddeb90ccbd/a372a2f6-f998-4490-8644-43d1b34811fd/c86c7d1f-8c61-4b3b-9bec-6f0c915a5365/images/6bc778dd-0357-40d7-a384-85b06ad20e27.png)

**Step 5:** Click **Save Changes** to store your template.

![](https://usercontent.in.prod.clueso.io/743138ba-7933-4a1a-90b2-26ddeb90ccbd/a372a2f6-f998-4490-8644-43d1b34811fd/c86c7d1f-8c61-4b3b-9bec-6f0c915a5365/images/3ea6f5c1-f5b1-43ee-af64-0d4383bbf6dd.png)

***

### Linking AI Rules to a Template

You can link AI Rule folders to a template so that the relevant rules are automatically pre-selected whenever someone creates a project using this template. This ensures the AI agent follows the right programming conventions from the start.

**Step 6:** Click the **Link AI Rules** option at the top of the template editor.

![](https://usercontent.in.prod.clueso.io/743138ba-7933-4a1a-90b2-26ddeb90ccbd/a372a2f6-f998-4490-8644-43d1b34811fd/c86c7d1f-8c61-4b3b-9bec-6f0c915a5365/images/5d7498bb-ffa5-4f11-af68-3f06b165ccbd.png)

**Step 7:** Select the AI Rule folders you want to associate with this template and click **Save Changes**.

***

### Using a Template in a New Project

When you create a new project and navigate to the **Programming** tab, you'll go through a setup wizard before entering the programming interface. During this initialization:

**Step 1:** When prompted, select the template you want to use. Your starter code will be pre-loaded into the project.

<figure><img src="/files/VvUcaEusuw6uAPV3IHFE" alt=""><figcaption></figcaption></figure>

**Step 2:** On the AI Rules screen, any folders linked to the selected template will be automatically pre-selected. You can still check or uncheck additional "If Selected" folders as needed before proceeding.

The project will then open with your starter code already in place and the AI agent configured with the linked rules — ready to start programming.


# AI Rules

### What Are AI Rules?

AI Rules allow you to define and organize programming logic that guides MetaForms' AI agent when generating survey code. Instead of relying solely on the model's baseline intelligence, you provide your own instructions, examples, and code patterns — so the agent produces output that matches your team's conventions, client requirements, or platform-specific standards.

Rules are organized into **folders**. Each folder acts as a logical grouping — for example, one folder for a specific client's conventions, another for a particular question type pattern. When a project is created, the relevant folders are applied and the AI agent follows the rules contained within them.

**An AI Rule Folder includes:**

* A folder name and hosting platform selection
* Folder-level instructions (shared guidance for all rules in the folder)
* A collection of individual AI Rules
* Usage permissions (who can edit)
* Usage insights and version history for each rule

***

### AI Rule Folder Types

There are two types of folders, which determine how they're applied to projects:

| Folder Type     | Behavior                                                                                                                                                  |
| --------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Always**      | Applied to every project automatically. Cannot be removed during project creation. Use for organization-wide standards.                                   |
| **If Selected** | Optional. Can be checked or unchecked during project creation. Pre-selected only when linked to a Template. Use for client-specific or situational rules. |

> **Tip:** "Always" folders are best for universal conventions (e.g., "all single-select questions must have an exclusive 'None of the above' option"). "If Selected" folders work well for client-specific or team-specific logic that only applies to certain projects.

***

### Getting Started

Navigate to the **AI Rules** from the main menu to view, create, and manage your rule folders.

<figure><img src="/files/t8WTRk4i5RavqsNj3Z3D" alt=""><figcaption></figcaption></figure>

***

### Creating an AI Rule Folder

**Step 1:** Click **Create** to start a new folder. Enter a descriptive folder name — use names that reflect the team, client, or use case it covers (e.g., "Client A Conventions", "CATI Standard Rules", "Grid Question Patterns"). This helps programmers quickly identify which folders to select during project setup.

![](https://usercontent.in.prod.clueso.io/743138ba-7933-4a1a-90b2-26ddeb90ccbd/a372a2f6-f998-4490-8644-43d1b34811fd/c86c7d1f-8c61-4b3b-9bec-6f0c915a5365/images/de04e3e2-4f36-42fb-9fe0-829c4d57813a.png)

**Step 2:** Select when to use the folder (**Always** or **If Selected**), choose who can edit it, select the **Survey Hosting Platform** (e.g., Unicom), and click **Create**.

![](https://usercontent.in.prod.clueso.io/743138ba-7933-4a1a-90b2-26ddeb90ccbd/a372a2f6-f998-4490-8644-43d1b34811fd/c86c7d1f-8c61-4b3b-9bec-6f0c915a5365/images/8fd4d1d1-5d3b-4c8a-8c6b-c53fb03b262b.png)

***

### Adding Rules to a Folder

Once your folder is created, open it to start adding individual rules.

**Step 3:** Click **Create Rule** and enter a descriptive name based on the rule's purpose or scenario — for example, "Single Select with Exclusive Option" or "Looped Grid Routing Pattern."

<figure><img src="/files/6xhHkWr9XI4x0Kj0A2IM" alt=""><figcaption></figcaption></figure>

**Step 4:** Fill in the rule content. A well-defined rule has three parts:

* **Explanation** — Describe when and how this rule should be applied. Clarify the intent so the AI knows the "why," not just the "what."
* **Examples** — Provide sample question structures or scenarios that demonstrate the expected output. The more concrete, the better.
* **Code / Instructions** — Add the actual script or code pattern the AI should follow when this rule is triggered.

<figure><img src="/files/3j83f3MpXwl7YMbYKiDx" alt=""><figcaption></figcaption></figure>

**Step 5:** Click **Save** to store the rule.

![](https://usercontent.in.prod.clueso.io/743138ba-7933-4a1a-90b2-26ddeb90ccbd/a372a2f6-f998-4490-8644-43d1b34811fd/c86c7d1f-8c61-4b3b-9bec-6f0c915a5365/images/eb1e01e9-d14d-48dd-9903-5fb4533287d0.png)

***

### Folder-Level Instructions

Beyond individual rules, you can set **folder-level instructions** that provide overarching guidance for the entire folder. These instructions apply across all rules in the folder and help the AI understand the broader context — for example, "This folder covers Client A's Dimensions projects. Always use their standard variable naming convention (Q1a, Q1b...) and include their standard termination logic."

**Step 6:** Open the folder settings and edit the folder-level instructions field.

![](https://usercontent.in.prod.clueso.io/743138ba-7933-4a1a-90b2-26ddeb90ccbd/a372a2f6-f998-4490-8644-43d1b34811fd/c86c7d1f-8c61-4b3b-9bec-6f0c915a5365/images/f5ddecc2-e869-442c-84af-670b65cb3ae9.png)

***

### Using AI Rules in a Project

AI Rule folders are selected during the **build initialization** wizard when setting up a new project:

* **"Always" folders** are automatically applied — they appear pre-selected and cannot be removed.
* **"If Selected" folders** appear as checkboxes, you can toggle on or off. If a folder is linked to the template you selected, it will be pre-checked.

After the project is created, you can still add or remove "If Selected" folders from the **Config** panel inside the Build interface.

***

### Improving AI Rules (Continuous Tuning)

AI Rules are a living system — the better you define them, the more accurate and consistent your outputs become. When something isn't working as expected:

1. **Check if a rule exists** for the scenario. If it does but isn't producing the right output, update the explanation or examples to be more specific.
2. **Look for conflicting rules.** Remove or reword anything that contradicts your intended logic.
3. **Add new rules** for any missing logic. Clearly define the scenario and support it with concrete examples.
4. **Test your changes.** Save the updated rule, refresh the project, and re-generate the same questions to confirm the behavior is fixed.

This is a continuous improvement process. Every refinement reduces future manual intervention and speeds up programming.


# Unified Flow for Survey Programming (Dimensions)

Improvements and Efficiencies Compared to the Legacy Flow

## Introduction

The Unified Flow is the next generation of the Metaforms survey programming experience for Dimensions. While the workflow looks different from the Legacy Flow, every change has been made with one goal: reducing the number of manual steps, clicks, and repeated instructions needed to program a survey, so your programmers spend their time on survey logic rather than on operating the tool.

This document outlines the specific improvements and efficiencies your team will gain when transitioning from the Legacy Flow to the Unified Flow for Dimensions. Each section explains how a task worked in the Legacy Flow, how it works now, and the practical benefit of the change.

## Improvements and Efficiencies

### 1. Metadata, Routing, and Quotas Programmed Together, in a Single Step

In the Legacy Flow: Programming a question in Dimensions meant working on the Metadata and Routing sections as separate generation steps, and quotas were created in yet another separate step. You generated the metadata for a question, then separately generated or wrote the matching routing logic, and then set up any related quotas on top of that — and it was your responsibility to keep all of them aligned. A mismatch between these sections was one of the most common sources of test failures.

In the Unified Flow: A single prompt in the AI Assistant generates the metadata, the corresponding routing, and the related quotas together, keeping all of them perfectly in sync. This applies to complex setups as well, including error messages defined in metadata and referenced from routing, piping variables, and randomization logic. Everything is presented for your review, and you accept the changes together before saving and syncing.

What this means for you: Question and quota programming drops from a multi-step, multi-section workflow to one instruction. There is no risk of the metadata, routing, and quotas drifting out of sync, because they are generated together as one coherent change.

### 2. Edit with AI — No Need to Select Code

In the Legacy Flow: To edit a specific section, you had to scroll to and select the exact metadata or routing lines you wanted to change, open the Edit with AI widget, and then provide your instruction inside that widget. The edit only applied to the selection you made, and edits touching both metadata and routing had to be handled separately.

In the Unified Flow: You simply describe the change in the AI Assistant chat box. The AI identifies where in the script the edit needs to be made and applies it — in the metadata, the routing, or both at once — even if the change spans multiple questions. If you want to target a specific place, you can include the question name in your prompt.

What this means for you: No more hunting through the script to find and select the right lines before every edit. You describe what you want; the AI finds where it belongs and updates every affected section together.

### 3. Faster Survey-Wide Edits

In the Legacy Flow: Applying a generic change across the entire survey (for example, a naming convention, a label formatting rule, or a standard error message pattern that affects every question) meant repeating the select-and-edit process section by section, which was slow for large scripts.

In the Unified Flow: A single instruction in the chat applies a generic edit across the whole survey in one pass. The AI locates every place the change is needed — across both metadata and routing — and updates them together.

What this means for you: Global changes that previously took many repeated edit cycles are completed significantly faster, with consistent results across the full script.

### 4. Your Manual Edits Are Understood and Respected

In the Legacy Flow: If a programmer made manual edits directly in the metadata or routing, subsequent AI generations had no reliable awareness of those changes, so the AI could produce output that did not follow the pattern the programmer had established by hand — for example, a client-specific randomization function or a naming convention.

In the Unified Flow: The AI specifically reads your manual edits before each generation to understand what you have changed. When it continues generating, it follows the patterns and conventions you have established in the script — including your preferred functions, variable naming, and error-message style.

What this means for you: Much higher probability that AI output matches your hand-written style and structure. Manual work and AI work blend together instead of fighting each other, reducing rework.

### 5. Fewer Edits on Complex Logic (Assigners, Piping, Loops)

In the Legacy Flow: Complex setups involving assigners and randomization functions, dynamic and poly piping, or looped sections typically required several rounds of generation and correction before the metadata and routing matched the intended behavior.

In the Unified Flow: Because the agent reasons through the requirement and asks clarifying questions before programming, the number of edits required for these complex setups is considerably lower. The first output is much closer to the final result — with error messages placed correctly in metadata, piping variables referenced accurately in routing, and client-approved functions used consistently — and refinements are handled through simple follow-up prompts.

What this means for you: The most time-consuming parts of Dimensions programming — advanced routing logic with assigners, piping, and loops — need noticeably fewer correction cycles, which is where the largest time savings are realized.

### 6. One Chat, Full Context — No Repeating Yourself

In the Legacy Flow: Each generation or edit was an isolated action. If you established an instruction or convention for one question — for example, which randomization function to use or how to structure error messages — you had to repeat that instruction every time you worked on another part of the survey, because the tool retained no memory of your earlier requests.

In the Unified Flow: All programming happens in a single AI Assistant conversation, so the AI has the full context of everything that has happened in the script. If you give an instruction once — for example, a naming convention or a routing pattern for a particular question type — the AI carries that context forward and applies it without being told again.

What this means for you: Less typing, fewer repeated instructions, and more consistent output across the survey. The tool learns your project’s conventions as you go.

### 7. Long Questionnaires No Longer Break Generation

In the Legacy Flow: The generation widget read the entire questionnaire for every generation or edit. For long QNRs, this could cause generation to fail outright because of the document’s size, sometimes forcing manual workarounds such as trimming the file.

In the Unified Flow: The agent reads only the questions and sections it actually needs for the current generation or edit, rather than the whole questionnaire every time. Large, complex questionnaires — including multi-sheet documents and multi-country studies with long brand lists — are processed in manageable parts.

What this means for you: Long questionnaires can be programmed smoothly from start to finish, without the size-related generation failures seen in the Legacy Flow.

### 8. Restructure Your Script with a Prompt

In the Legacy Flow: Structural reorganization of the script — for example, regrouping metadata definitions, reordering routing blocks, or cleaning up redundant commented lines — was either not practically possible or extremely slow, since it had to be done through manual cut-and-paste across the file.

In the Unified Flow: These structural moves are now possible and fast. You describe the reorganization you want in the chat, and the AI restructures the metadata and routing accordingly in a fraction of the time.

What this means for you: Script housekeeping and standards alignment that programmers previously avoided (or did painfully by hand) becomes a quick, prompt-driven task.

### 9. Ask the AI Why — and Keep Asking

In the Legacy Flow: There was no meaningful way to interrogate the tool about its output. If you wanted to understand why a routing block or an assigner was implemented a certain way, you had to reverse-engineer the code yourself.

In the Unified Flow: You can ask the AI directly why a script is implemented the way it is, and then ask follow-up questions for further clarification — all within the same conversation. The AI explains its reasoning with full awareness of your project’s context, including the templates and AI rules applied.

What this means for you: Faster reviews, easier debugging, and a built-in learning resource. Junior programmers can understand advanced Dimensions setups by asking, and senior programmers can validate the AI’s decisions before accepting changes.

### 10. A Head Start on Change Management

In the Legacy Flow: Change Management is not available in the Legacy Flow.

In the Unified Flow: Change Management for Dimensions is built on the same agent architecture as ad-hoc survey programming in the Unified Flow — the same AI Assistant chat, the same accept/reject review workflow, and the same prompt-driven way of working. Every ad-hoc project your team programs in the Unified Flow is, at the same time, hands-on practice for Change Management.

What this means for you: By adopting the Unified Flow for ad-hoc projects now, your team becomes familiar with the platform and is ready to use Change Management effectively.

## Summary

Taken together, these changes remove the most repetitive mechanics of the Legacy Flow — keeping metadata, routing, and quotas aligned by hand, selecting code before every edit, repeating instructions, and manually building complex routing logic — and replace them with a single, context-aware assistant that understands your questionnaire, your script, your templates and AI rules, and your manual edits.

There is a learning curve in moving from direct script editing to a prompt-driven workflow, and we expect the first projects to feel different. But once your team is past that initial adjustment, the Unified Flow consistently requires fewer steps, fewer corrections, and less time per survey than the Legacy Flow — and it is where all new capabilities, such as Change Management, are being built. The Legacy Flow remains accessible throughout your transition, so your team can adopt the Unified Flow at a comfortable pace without any disruption to live work.

<br>


# Metaforms Chrome Extension – Confirmit Guide

Welcome to Metaforms! This extension helps you quickly create surveys in **Confirmit’s Survey Designer** by uploading your questionnaire and automatically generating questions, folders, and reusable lists.

### What You Can Do With This Extension

* Works only on **Confirmit Survey Designer** (not supported on the old **Professional Authoring** interface).
* Lets you generate survey questions from your uploaded questionnaire.
* Recognizes and builds required folders and reusable lists.
* Allows review and editing of questions after generation.
* Does **not** support editing existing surveys. You must create a **new survey**.

You *can* view or tweak generated questions in **Professional Authoring** after generation, if needed.


# Installation Instructions

To install the Metaforms extension in Chrome:

1. Download the extension from the chrome webstore [here](https://chromewebstore.google.com/detail/fmdnebajjpgkgegefbgoebcomamnokii?utm_source=item-share-cb).
2. Click on “Add to chrome”

<figure><img src="/files/lZYHj7aaquc8EUXctGiS" alt=""><figcaption></figcaption></figure>

3. Click the Extensions (🧩) icon on the Chrome toolbar and pin Metaforms for easy access.

<figure><img src="/files/TyhmHyXHuY1JAGaPQOM0" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/viqBbmoHjUomb3IgPHe7" alt=""><figcaption></figcaption></figure>

And you're all done with installation!


# Using Metaforms: Step-by-Step

#### 1. Log In to ConfirmIt

* Open ConfirmIt in Chrome and **log in as usual**.
* Make sure you are on the **Survey Designer page**.

#### 2. Log In to Metaforms

* Open the extension by clicking the Metaforms icon.

<figure><img src="/files/212dsGMvgBE1sMkO3Pro" alt=""><figcaption></figcaption></figure>

* Log in using your **Metaforms credentials**.

<figure><img src="/files/3y9ikezAFDWyQzJDOyVi" alt=""><figcaption></figcaption></figure>

#### 3. Start a New Survey

* The Metaforms extension will detect the page.
* It will prompt you to **open a new survey** in Survey Designer.

<figure><img src="/files/MheqiEZ3mFYsvZOFSb1C" alt=""><figcaption></figcaption></figure>

* ⚠️ Currently, **only new surveys** are supported.

#### 4. Upload Your Questionnaire

* Upon creating a new survey, the tool automatically reads the survey details.

<figure><img src="/files/wGxoKVyEeGMGVHa4xidS" alt=""><figcaption></figcaption></figure>

* Inside the extension, **upload your questionnaire file** and click on **Generate session**.

<div><figure><img src="/files/Vd2SI6DEFrUhmDPNz3eF" alt=""><figcaption></figcaption></figure> <figure><img src="/files/wHv1B01aQw30h8xW1z7Z" alt=""><figcaption></figcaption></figure></div>

* Metaforms will analyze your document and generate an initial skeleton containing:
  * Folder structure
  * Reusable lists (if any)
  * Standard call blocks

<figure><img src="/files/n9VNrXWMwaXUlCV4OYd8" alt=""><figcaption></figcaption></figure>

#### 5. Generate Questions (up to 5 at a time)

* You’ll see a prompt to **"Generate next 5 questions"**.
  * Alternatively, on clicking the dropdown, you can choose to create between 1-5 questions.

<figure><img src="/files/AMh1sX0WQgjm7bcPkhUh" alt=""><figcaption></figcaption></figure>

* After clicking on "Generate next 5 questions", the screen is temporarily blocked from creating new questions/nodes while Metaforms is processing.

<div><figure><img src="/files/zGYcUcCAlw1UxWOu6H40" alt=""><figcaption></figcaption></figure> <figure><img src="/files/DtbD1s1gm7BFzhFYxslU" alt=""><figcaption></figcaption></figure></div>

{% hint style="success" %}
On clicking any of the generated questions or nodes, you will be navigated to that specific element on the ConfirmIT screen
{% endhint %}

<figure><img src="/files/WyC66FHCynvhzWFnuGnE" alt=""><figcaption></figcaption></figure>

* After each batch, a new bubble will appear prompting you to generate the next set of questions.\
  Before continuing, we recommend reviewing the questions, answer options, and any nodes or scripts that were created. You can edit, add, or delete items as needed.

<figure><img src="/files/vW63Ngx6U8Sp6gf9qehh" alt=""><figcaption></figcaption></figure>

* Once you're satisfied with the current batch, click **"Create next 5/4/3/2/1 questions"** to proceed.
* Continue generating till you're done!
* **Why 5 questions at a time?**
  * This allows you to **review** and fix issues early.
  * It improves accuracy for the remaining questions


# Prompting & Workflow Best Practices (Confirmit)

This document outlines prompting patterns and workflow practices that produce the most reliable programming output on Metaforms.

Many programmers initially approach Metaforms without being detailed in instruction. However, Metaforms performs best when instructions are explicit, scoped, and structured.

The prompt practices shared in this document are based on observations from real Metaforms users and are intended to help the teams improve programming accuracy, reduce debugging time, and increase speed.

#### Core Principle: Explicit Instructions, Including Constraints

Metaforms performs best when you describe the intended outcome clearly before generation. The clearer the instruction, the higher the accuracy of Metaforms output.

| **Incorrect/Non-Ideal Workflow**         | **Ideal Workflow**                           |
| ---------------------------------------- | -------------------------------------------- |
| Generate everything and fix errors later | Generate limited questions in batches        |
| Short instructions                       | Explicit instructions                        |
| Debug code after every generation        | Use Edit with AI for modification/ changes   |
| Edit with AI for very small changes      | Manually fix if takes less than 5-10 seconds |
| Implicit assumptions                     | Explicit constraints                         |

#### Writing Good Prompts – Examples…

**Task:** Generating the next 3–5 questions from the questionnaire and program them in the survey using the correct Qre structure.<br>

1. **Constraints:**
   1. Follow the survey programming structure.
   2. Maintain correct question numbering and labels.
   3. Apply existing survey logic and formatting standards.
2. **Focus:**
   1. Only generate the next 3–5 questions from the questionnaire.
3. **Dont’s:**
   1. Aim to modify previously generated questions, logic, or earlier survey sections.
4. **Good Prompt:**
   1. Generate the next 3 questions (Q12-Q14) using the questionnaire, add masking and validation to all (relevant) questions.

**Task:** Reviewing the recently generated questions and correct any syntax, validation, or any errors so they do not repeat in later generations.<br>

1. **Constraints:**
   1. Ensure all question types are generated as per questionnaire.
   2. Ensure correct formatting is done; if not, try to do it manually.
   3. Maintain the existing question logic and numbering.
2. **Focus:**
   1. Fix only the issues present in the selected generation.
3. **Dont’s:**
   1. Do not regenerate the questions. Fix each question separately.
4. **Good Prompt:**
   1. Update Q15-Q17 as 3D grid question structure with numeric list question as per the document, ensure correct numeric validation is applied.<br>

**Task:** Generating the JavaScript logic required for a question behavior basis on the provided structure.<br>

1. **Constraints:**
   1. Follow standard JavaScript practices.
   2. Use the correct question IDs or classes from the HTML structure.
   3. Ensure the script does not interfere with existing survey logic.
2. **Focus:**
   1. Only generate the JavaScript logic required for the specified question functionality.
3. **Dont’s:**
   1. Do not modify the HTML structure or other survey questions.
4. **Good Prompt:**
   1. Create JavaScript for Q39 so selecting the checkbox in column 2 automatically selects column 1, using the existing HTML classes without affecting other questions. (User Task: add the relevant HTML code using Inspect Element.)<br>

**Task:** Creating the hidden variables and calculation logic needed to compute values based on provided rules or table.

1. **Constraints:**
   1. Use hidden variables for calculations where required.
   2. Ensure calculations match the rules provided in the questionnaire.
   3. Maintain consistent naming conventions for hidden variables.
2. **Focus:**
   1. Only implement the hidden variable logic for the specified question.
3. **Dont’s:**
   1. Do not modify question wording or answer options.
4. **Example Prompt:**
   1. Generate S7b using hidden variables hS7bx1 and hS7bx2, calculating values based on the scoring table without modifying the visible question. (User task: Also, explain the logic used for hS7bx1 and hS7bx2)

**Task:** Update the generated questions to ensure they follow the project’s programming standards and coding rules.

1. **Constraints:**
   1. Maintain existing question structure and numbering.
   2. Apply the required survey formatting and validation standards.
   3. Ensure no new syntax errors are introduced.
2. **Focus:**
   1. Apply the required updates only to the specified questions.
3. **Dont’s:**
   1. Do not regenerate questions or modify unrelated sections.
4. **Good Prompt:**
   1. Update Q21–Q23 inside loop. Add current date validation to ensure no future dates are accepted.

<br>


# Best Practices

### Best Practices

* Always start fresh with a new survey.
* Generate in batches of 5 questions/nodes for better control.
* Avoid closing the extension or browser mid-generation.
* For edits, wait until Metaforms completes all generations before making changes.
* Use Survey Designer for generation, and Professional Authoring for review/editing.

***

Need help? Reach out to the Metaforms team anytime at <help@metaforms.ai>

***


# Languages Supported

Metaforms Confirmit Extension currently supports the languages listed below. Please ensure you select from the following languages in your Confirmit Projects to ensure Metaforms Extensions works the best for you.

* English
* English (Australia)
* English (Belize)
* English (Canada)
* English (Carribean)
* English (Costa Rica)
* English (Egypt)
* English (Ghana (Pidgin))
* English (India)
* English (Ireland)
* English (Jamaica)
* English (Jordan)
* English (Kazakhstan)
* English (Korea)
* English (New Zealand)
* English (Philippines)
* English (Qatar)
* English (Saudi)
* English (South Africa)
* English (Thai)
* English (Trinidad)
* English (United Kingdom)
* English (United States)
* English (Zimbabwe)
* Dutch
* Dutch (Netherlands)
* Dutch (Belgium)

Follow the steps below to ensure you are choosing the supported language to work with:

1. When creating a new survey within Confirmit:

<div align="center" data-full-width="false"><figure><img src="/files/5Zhi2qDlpLhaUeLMR0UO" alt="" width="563"><figcaption></figcaption></figure></div>

2. When selecting/editing languages in Overview page:

<figure><img src="/files/S7S8LSuwZxKTkVYunt3D" alt="" width="563"><figcaption></figcaption></figure>


# Change Management — Tracker Surveys

Metaforms change management workflow lets you efficiently update tracker surveys in Forsta (Confirmit). It currently supports surveys up to Level 3 (L3). This guide walks you through preparing your materials, comparing survey versions, reviewing changes, and applying updates in manageable batches.

Updating a tracker survey often involves multiple versions and precise control over changes. With the Metaforms extension, you'll upload your base XML or use an existing programmed survey and your previous wave and current wave questionnaires, let the system identify updates, review suggested updates, and apply them smoothly — all while managing clarifications and verifying updates.

### Requirements

* The base XML (or existing programmed wave survey)
* The previous wave questionnaire (v1)
* The current wave questionnaire with required changes clearly marked (v2), using your agreed color-coding or tracked changes. As of now, only color-coded changes and tracked changes are supported in our tool.

***

### Workflow

1. [Import the previous wave survey](/survey-programming-confirmit/change-management/import-previous-wave-survey)
2. [Launch the extension and configure Tracker mode](/survey-programming-confirmit/change-management/launch-extension-and-configure-tracker)
3. [Upload v1 and review folders](/survey-programming-confirmit/change-management/upload-v1-and-review-folders)
4. [Upload v2 and run change management](/survey-programming-confirmit/change-management/upload-v2-and-run-cm)
5. [Review clarifications](/survey-programming-confirmit/change-management/review-clarifications)
6. [Apply changes](/survey-programming-confirmit/change-management/apply-changes)
7. [Manage batches and exceptions](/survey-programming-confirmit/change-management/manage-batches-and-exceptions)
8. [Complete the session](/survey-programming-confirmit/change-management/complete-session)

Begin with [Import the previous wave survey](/survey-programming-confirmit/change-management/import-previous-wave-survey).


# Import the previous wave survey

Open Survey Designer page, then click on "**New Survey**" dropdown and select **Import Survey Definition.**

![](https://usercontent.in.prod.clueso.io/743138ba-7933-4a1a-90b2-26ddeb90ccbd/924f877b-9e6f-4e92-b3cc-e9b180da2705/94258b79-a2a9-4399-8a80-95dce4a9b89d/images/260e4639-eafa-46a9-ae4c-f4d8fa22e80a.png)

In the popup, drag and drop the previous wave survey definition file, or click **Browse** to select it (the file must be zipped), then click **Import**.

![](https://usercontent.in.prod.clueso.io/743138ba-7933-4a1a-90b2-26ddeb90ccbd/924f877b-9e6f-4e92-b3cc-e9b180da2705/94258b79-a2a9-4399-8a80-95dce4a9b89d/images/cbace233-d0be-4f57-98b5-04f990b1c5c8.png)

![](https://usercontent.in.prod.clueso.io/743138ba-7933-4a1a-90b2-26ddeb90ccbd/924f877b-9e6f-4e92-b3cc-e9b180da2705/94258b79-a2a9-4399-8a80-95dce4a9b89d/images/e74449f4-e465-4f99-a669-41dd4c7f35ca.png)

**Once the base survey document (v1) is selected, click on Open Survey.**

![](https://usercontent.in.prod.clueso.io/743138ba-7933-4a1a-90b2-26ddeb90ccbd/924f877b-9e6f-4e92-b3cc-e9b180da2705/94258b79-a2a9-4399-8a80-95dce4a9b89d/images/1c0f3c86-ae54-4b8b-877c-cb3ed3d414bc.png)

If the previous wave survey is already available in Confirmit, skip the import and just open it.

![](https://usercontent.in.prod.clueso.io/743138ba-7933-4a1a-90b2-26ddeb90ccbd/924f877b-9e6f-4e92-b3cc-e9b180da2705/94258b79-a2a9-4399-8a80-95dce4a9b89d/images/455be740-97fb-4ea6-a0e7-1b190934263f.png)

See [Launch the extension and configure Tracker mode](/survey-programming-confirmit/change-management/launch-extension-and-configure-tracker) for next steps.


# Launch the extension and configure Tracker mode

Launch the Metaforms extension from the survey page. You'll see project details like name, creator, and creation date, along with two workflow options under **Survey Type**: **Adhoc** and **Tracker**.

![](https://usercontent.in.prod.clueso.io/743138ba-7933-4a1a-90b2-26ddeb90ccbd/924f877b-9e6f-4e92-b3cc-e9b180da2705/94258b79-a2a9-4399-8a80-95dce4a9b89d/images/adb88399-376e-4bd4-9530-81ef0a2c196d.png)

Choose **Tracker** for wave updates.

![](https://usercontent.in.prod.clueso.io/743138ba-7933-4a1a-90b2-26ddeb90ccbd/924f877b-9e6f-4e92-b3cc-e9b180da2705/94258b79-a2a9-4399-8a80-95dce4a9b89d/images/952dc126-8068-484a-8b81-6381aad2dbfe.png)

***

### (Optional) Review and select relevant AI rules

Click the **AI Rules** button to see if any AI rule options are enabled for your org for Tracker surveys.

![](https://usercontent.in.prod.clueso.io/743138ba-7933-4a1a-90b2-26ddeb90ccbd/924f877b-9e6f-4e92-b3cc-e9b180da2705/94258b79-a2a9-4399-8a80-95dce4a9b89d/images/bc444f27-91d7-411a-8901-31fabe2b22c6.png)

If any AI rules are available, select the ones applicable to your org and the survey standard you want to follow you are programming, then click **Save Selection**.

![](https://usercontent.in.prod.clueso.io/743138ba-7933-4a1a-90b2-26ddeb90ccbd/924f877b-9e6f-4e92-b3cc-e9b180da2705/94258b79-a2a9-4399-8a80-95dce4a9b89d/images/b7db9ae0-989e-4227-9ce2-0d72bcca7376.png)

See [Upload v1 and review folders](/survey-programming-confirmit/change-management/upload-v1-and-review-folders) for next steps.


# Upload v1 and review folders

### Select your v1 (previous wave) document

In the **Questionnaire** section of the extension panel, click **Choose a file** or drag and drop your v1 document — the base survey document used in the current programmed XML. Supported formats are PDF, DOCX, XLSX, and MD, up to 10 MB.

![](https://usercontent.in.prod.clueso.io/743138ba-7933-4a1a-90b2-26ddeb90ccbd/924f877b-9e6f-4e92-b3cc-e9b180da2705/94258b79-a2a9-4399-8a80-95dce4a9b89d/images/30c36687-20a2-47d6-938e-93743ae63be3.png)

Choose the base survey document used in the current programmed XML. Once you've selected base document (v1), click on Continue to allow Metaforms to analyze the folders and reuseable lists.

![](https://usercontent.in.prod.clueso.io/743138ba-7933-4a1a-90b2-26ddeb90ccbd/924f877b-9e6f-4e92-b3cc-e9b180da2705/94258b79-a2a9-4399-8a80-95dce4a9b89d/images/295c4b9f-0067-4fd6-b218-ed50dbd9d8e9.png)

Once you click on **Continue**, Metaforms will start analyzing all the sections and create folders as per the document along with the reuseable answer lists (if any).

![](https://usercontent.in.prod.clueso.io/743138ba-7933-4a1a-90b2-26ddeb90ccbd/924f877b-9e6f-4e92-b3cc-e9b180da2705/94258b79-a2a9-4399-8a80-95dce4a9b89d/images/cbb5f5d8-684e-4791-b48d-3eb4545217de.png)

***

### Review the folders identified from v1

Once the document is uploaded, all the relevant folders will be created inside the survey tree. You can check the survey tree for identified folders. Once all the folders are added, you need to review the placement of these folders. You can **click** on the **arrow icon** next to each folder in the extension which will route you to the correct position of the folder in your survey tree.

![](https://usercontent.in.prod.clueso.io/743138ba-7933-4a1a-90b2-26ddeb90ccbd/924f877b-9e6f-4e92-b3cc-e9b180da2705/94258b79-a2a9-4399-8a80-95dce4a9b89d/images/8c78547d-bde5-445b-b557-b7989249a947.png)

***

### Remove duplicate or extra folders and Reuseable lists (Mandatory step)

Since the folders are already present in your last wave XML or survey, you need to **delete** extra folders and reuseable lists created by the extension. This will prevent any new question from being placed inside duplicate folders while the current doc gets programmed. Keep unique folders (**like new sections**) and **reuseable lists** created for any new set of questions. Place the folders in their relevant positions.

![](https://usercontent.in.prod.clueso.io/743138ba-7933-4a1a-90b2-26ddeb90ccbd/924f877b-9e6f-4e92-b3cc-e9b180da2705/94258b79-a2a9-4399-8a80-95dce4a9b89d/images/ff8461ea-4962-4833-a7ea-05d5a938de80.png)

For deleting the reuseable lists, you can click on the icon beside the name of reuseable-list from the extension. It will route you to the exact location of the lists.

![](https://usercontent.in.prod.clueso.io/743138ba-7933-4a1a-90b2-26ddeb90ccbd/924f877b-9e6f-4e92-b3cc-e9b180da2705/94258b79-a2a9-4399-8a80-95dce4a9b89d/images/6f37d0c4-142c-41bc-8346-7ff6d2344abc.png)

You can select the new reuseable lists from the available ones and click on delete to remove it.

![](https://usercontent.in.prod.clueso.io/743138ba-7933-4a1a-90b2-26ddeb90ccbd/924f877b-9e6f-4e92-b3cc-e9b180da2705/94258b79-a2a9-4399-8a80-95dce4a9b89d/images/e5a0b9a7-eec4-4007-bf17-0d6d464583f0.png)

See [Upload v2 and run change management](/survey-programming-confirmit/change-management/upload-v2-and-run-cm) for next steps.


# Upload v2 and run change management

### Upload v2 (current wave) document

Once the duplicate folders are removed you need to now upload the current wave document (v2). From the top of extension there are few icons. You need to click on **Open Documents.**

![](https://usercontent.in.prod.clueso.io/743138ba-7933-4a1a-90b2-26ddeb90ccbd/924f877b-9e6f-4e92-b3cc-e9b180da2705/94258b79-a2a9-4399-8a80-95dce4a9b89d/images/8720122c-ae64-4cff-aa63-62160461bb26.png)

After that you need to click on **Upload New Version.** You can either drag and drop v2 document into the drop box area or click on the **Upload File** on the drop box and select your document which you want to program for the current wave.

![](https://usercontent.in.prod.clueso.io/743138ba-7933-4a1a-90b2-26ddeb90ccbd/924f877b-9e6f-4e92-b3cc-e9b180da2705/94258b79-a2a9-4399-8a80-95dce4a9b89d/images/9a82a8c3-efc5-46cf-b0d5-6d7e27eab000.png)

Once the document is selected, you can click on **Upload File** and let Metaforms analyze the current document (v2).

![](https://usercontent.in.prod.clueso.io/743138ba-7933-4a1a-90b2-26ddeb90ccbd/924f877b-9e6f-4e92-b3cc-e9b180da2705/94258b79-a2a9-4399-8a80-95dce4a9b89d/images/d4d149a5-e8fd-4908-820c-9d011c62c404.png)

***

### Wait while Metaforms processes the document

Metaforms will now start processing your current document (v2) and this process usually takes around 2 - 5 minutes depending on the complexity and length of the questionnaire. You can wait until the uploading is done.

![](https://usercontent.in.prod.clueso.io/743138ba-7933-4a1a-90b2-26ddeb90ccbd/924f877b-9e6f-4e92-b3cc-e9b180da2705/94258b79-a2a9-4399-8a80-95dce4a9b89d/images/cffb55a5-7808-4b30-8015-62594f70dc41.png)

Once ready, **v2** becomes your default document instead of **v1** (last wave document). The extension will read all the data from the current document now. This also becomes your active document. You'll see a **Run CM** (change management) button beside your current document.

![](https://usercontent.in.prod.clueso.io/743138ba-7933-4a1a-90b2-26ddeb90ccbd/924f877b-9e6f-4e92-b3cc-e9b180da2705/94258b79-a2a9-4399-8a80-95dce4a9b89d/images/4711fc1a-d42b-428b-b99f-96a00b6fafc1.png)

***

### Click Run CM

After confirming your current document, to move forward with the change management process, click on Run CM button shown next to your current document.

![](https://usercontent.in.prod.clueso.io/743138ba-7933-4a1a-90b2-26ddeb90ccbd/924f877b-9e6f-4e92-b3cc-e9b180da2705/94258b79-a2a9-4399-8a80-95dce4a9b89d/images/a8ba251e-8139-41d6-8bf3-5c321a1d69a8.png)

Once you click on **Run CM**, the extension starts detecting the changes present in the current document. It will analyze all the color coded changes and tracked changes in the current doc. It also compares "**what changed in the document** (through color highlights and tracked changes)" vs "**what exists in the base XML** (the skip logics, masking, lists, loops, cascades etc)".

**Metaforms currently identifies only color coded changes and tracked changes from the document. Any change not highlighted in the document will not be recognized by the AI as a change. It needs to be reviewed and updated either manually or using the help of edit with AI**.

![](https://usercontent.in.prod.clueso.io/743138ba-7933-4a1a-90b2-26ddeb90ccbd/924f877b-9e6f-4e92-b3cc-e9b180da2705/94258b79-a2a9-4399-8a80-95dce4a9b89d/images/f0e30989-5b9e-4497-b248-7af7120248f3.png)

See [Review clarifications](/survey-programming-confirmit/change-management/review-clarifications) for next steps.


# Review clarifications

Once the review of v2 is completed, the **Clarifications** page opens. Metaforms may ask about items which are not very clear to the tool such as duplicate precodes, masking, cascading questions etc. based on the changes. These are referred as clarifications raised by the tool.

![](https://usercontent.in.prod.clueso.io/743138ba-7933-4a1a-90b2-26ddeb90ccbd/924f877b-9e6f-4e92-b3cc-e9b180da2705/94258b79-a2a9-4399-8a80-95dce4a9b89d/images/f35d74a0-a4bd-4313-8337-7437a473968e.png)

Answer clarifications if necessary, or select **Dismissed** from the dropdown if they're not relevant. You need to either select "Dismissed" or "Answered" for each of the clarification raised to proceed further in change management.

![](https://usercontent.in.prod.clueso.io/743138ba-7933-4a1a-90b2-26ddeb90ccbd/924f877b-9e6f-4e92-b3cc-e9b180da2705/94258b79-a2a9-4399-8a80-95dce4a9b89d/images/c7cee512-b24e-4f63-8cfa-2dc9adae90d7.png)

You can also add your own notes for the AI to consider in future steps. If there's any additional details you want the AI to consider for any question, you can add your own clarification. Once written, you can click on "**Add**" button to add them to the list.

![](https://usercontent.in.prod.clueso.io/743138ba-7933-4a1a-90b2-26ddeb90ccbd/924f877b-9e6f-4e92-b3cc-e9b180da2705/94258b79-a2a9-4399-8a80-95dce4a9b89d/images/f836b77f-12bd-4653-9114-ea2987a1f9ff.png)

***

### Apply clarifications and proceed

After responding to clarifications, select **Continue to Apply Changes**. It will now take you to the application phase were you can see all the affected questions being listed down by the tool.

![](https://usercontent.in.prod.clueso.io/743138ba-7933-4a1a-90b2-26ddeb90ccbd/924f877b-9e6f-4e92-b3cc-e9b180da2705/94258b79-a2a9-4399-8a80-95dce4a9b89d/images/64dfaf1c-b983-4615-921d-9466248dac61.png)

See [Apply changes](/survey-programming-confirmit/change-management/apply-changes) for next steps.


# Apply changes

### Review the list of changes (QIDs detected)

This is an important step where you need to review all the questions shown in the list of QIDs affected and match it with your current document. You can click on any QID to review the requested update and what Metaforms has understood before anything is applied.

Even though the changes are detected by AI, we recommend reviewing all changes as there's a slight chance the AI might not have detected few changes. Hence, reviewing every detected change before applying is important. If any changes are missed, they should be made manually after applying the AI-generated changes.

![](https://usercontent.in.prod.clueso.io/743138ba-7933-4a1a-90b2-26ddeb90ccbd/924f877b-9e6f-4e92-b3cc-e9b180da2705/94258b79-a2a9-4399-8a80-95dce4a9b89d/images/b8ccfb82-dabf-4ec1-b8fa-dd642e9ca8e6.png)

Click any Question ID to see full details of recommended updates. Once you click on the any QID, it will list down all the necessary changes which are detected by the tool for that particular question and also list down which questions are getting affected with the change. **Review changes one by one or in manageable batches**.

![](https://usercontent.in.prod.clueso.io/743138ba-7933-4a1a-90b2-26ddeb90ccbd/924f877b-9e6f-4e92-b3cc-e9b180da2705/94258b79-a2a9-4399-8a80-95dce4a9b89d/images/7e80170d-b7d9-4628-bac9-2059ec576839.png)

***

### Select which questions to update and apply changes

For straightforward updates, three to five changes at a time is recommended. For a complex update, especially one that affects survey logic or structure, you can apply that change individually.

**Note**: We recommend applying changes in a sequential manner rather than skipping any question to apply changes which are later in the survey.

![](https://usercontent.in.prod.clueso.io/743138ba-7933-4a1a-90b2-26ddeb90ccbd/924f877b-9e6f-4e92-b3cc-e9b180da2705/94258b79-a2a9-4399-8a80-95dce4a9b89d/images/3ab474e7-3d5d-4303-ac5e-c4437f2a45d7.png)

Once you have reviewed and selected the question IDs you need to implement changes, click on **Apply Selected**. Metaforms will now implement the chosen changes. A batch normally takes around two to three minutes, depending on the number and complexity of the updates.

![](https://usercontent.in.prod.clueso.io/743138ba-7933-4a1a-90b2-26ddeb90ccbd/924f877b-9e6f-4e92-b3cc-e9b180da2705/94258b79-a2a9-4399-8a80-95dce4a9b89d/images/f1e19f4b-a626-4046-a47b-a698e518c5d4.png)

***

### Review applied changes

The system applies updates, usually in 2–3 minutes per batch. Green ticks confirm successful application.

![](https://usercontent.in.prod.clueso.io/743138ba-7933-4a1a-90b2-26ddeb90ccbd/924f877b-9e6f-4e92-b3cc-e9b180da2705/94258b79-a2a9-4399-8a80-95dce4a9b89d/images/88ba9594-d4c4-4320-98b3-4740fb1fe004.png)

Once the changes are applied, click on any QID to see **"AI actions"** card and updated fields. If you want to see what changes were made by the AI, click on the QID, navigate to the AI Action card. Here you can see what changes are made. You need to click on each QID, review the action items, confirm that all changes have been applied correctly without any omissions, and make manual modifications if needed. **It is recommended to review these very carefully to understand what changes are made by the tool.**

![](https://usercontent.in.prod.clueso.io/743138ba-7933-4a1a-90b2-26ddeb90ccbd/924f877b-9e6f-4e92-b3cc-e9b180da2705/94258b79-a2a9-4399-8a80-95dce4a9b89d/images/eb112af9-acc8-43e3-a7e9-06f8a4673539.png)

If you wish to directly jump to the node ids where the changes are made by the tool, you can click on the arrow button present at the top left of the AI Action card. It will take you to the exact location of that particular node ID where the change was made.

![](https://usercontent.in.prod.clueso.io/743138ba-7933-4a1a-90b2-26ddeb90ccbd/924f877b-9e6f-4e92-b3cc-e9b180da2705/94258b79-a2a9-4399-8a80-95dce4a9b89d/images/9149c7fd-7c79-454f-b854-8c3cfd44aa5e.png)

See [Manage batches and exceptions](/survey-programming-confirmit/change-management/manage-batches-and-exceptions) for next steps.


# Manage batches and exceptions

### Manually edit or manage exceptions (if needed)

If additional changes are required for a particular question or a batch of questions, either update it manually once all the questions are completed from the list or exit CM to go to "**Edit with AI**". Use **cross icon** for different exit/keep options.

![](https://usercontent.in.prod.clueso.io/743138ba-7933-4a1a-90b2-26ddeb90ccbd/924f877b-9e6f-4e92-b3cc-e9b180da2705/94258b79-a2a9-4399-8a80-95dce4a9b89d/images/22c190a8-fc97-499d-8394-a41092fb1534.png)

Once you click on the "X" icon, you will see three options:

* **Cancel**: Do not exit CM
* **Discard**: Abandon pending changes, jump to Edit with AI, returning will restart a new CM session
* **Keep and Exit**: Save changes and pause session for later continuation

![](https://usercontent.in.prod.clueso.io/743138ba-7933-4a1a-90b2-26ddeb90ccbd/924f877b-9e6f-4e92-b3cc-e9b180da2705/94258b79-a2a9-4399-8a80-95dce4a9b89d/images/f2fb19f9-e012-40e8-956a-d9316c9e9818.png)

***

### Continue applying and reviewing batches until all are done

You can continue to apply changes in the similar manner until all the changes are done. The process remains the same and recommended. Click on each QID to review changes, apply in manageable batches depending on the complexity. Review the changes with respect to the document (v2).

![](https://usercontent.in.prod.clueso.io/743138ba-7933-4a1a-90b2-26ddeb90ccbd/924f877b-9e6f-4e92-b3cc-e9b180da2705/94258b79-a2a9-4399-8a80-95dce4a9b89d/images/98690c76-af10-477b-b12f-41b0e47307bc.png)

If you see any change not as per the questionnaire, you can skip applying those particular changes. First you need to select the relevant QIDs from the given list. Once selected you can click on "**Skip Selected**".

![](https://usercontent.in.prod.clueso.io/743138ba-7933-4a1a-90b2-26ddeb90ccbd/924f877b-9e6f-4e92-b3cc-e9b180da2705/94258b79-a2a9-4399-8a80-95dce4a9b89d/images/7d6aa9bb-098f-433d-96ae-d4be6bde9afe.png)

See [Complete the session](/survey-programming-confirmit/change-management/complete-session) for next steps.




---

[Next Page](/llms-full.txt/1)

