> ## Documentation Index
> Fetch the complete documentation index at: https://docs.voxworks.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Readiness

> The Setup → Readiness tab: the Voice readiness panel, the Findings and Validation target cards, every blocker that stops a survey compiling or publishing, every warning, and how to fix each one.

## What is Readiness?

**Readiness** is the third tab in **Setup** mode of the [survey workspace](/surveys/survey-workspace). Its panel is titled **Voice readiness**: *"Validate the selected version before publishing it for voice execution."*

Readiness checks the selected version against one set of rules and sorts what it finds into two kinds:

* **Blockers** stop the version from compiling and publishing. Fix every one first.
* **Warnings** never block. They point at things worth checking before you publish.

The same checks run when you press **Validate** or **Publish** in the workspace header, so what you see here is exactly what those buttons act on. When a version has blockers, the header shows *"(n) blocker(s) prevent this version from compiling for voice."* with a **Review in Readiness** button.

In the text below, *(key)* stands for a question key, *(rule)* for a rule key and *(code)* for an outcome code — the app shows the real ones.

***

## The tab

| Card                                                | What it shows                                                                                                                                                 |
| --------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Blockers**, **Warnings**, **Supported questions** | Counts for the selected version.                                                                                                                              |
| **Findings**                                        | Every blocker and warning. With none: *"No readiness issues found"* — *"The normalized content is ready for its next publish step."*                          |
| **Validation target**                               | **Channel**, **Language**, **Questions** and **Version**. Channel is always voice and language is always English for surveys created in the app.              |
| **Compile**                                         | **Status**, **Script**, **Revision**, any compile errors, and the **Compile** button. See [Validate, compile and publish](/surveys/validate-compile-publish). |

While blockers exist, the Compile card shows *"Clear the blockers first — a compile of blocked content would only repeat them."*

***

## Blockers

| Blocker                                                                                         | How to fix it                                                                                                                                                                   |
| ----------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| *"Add at least one question before publishing."*                                                | Add a question on the [Questions tab](/surveys/questions-tab).                                                                                                                  |
| *"(key) has no voice prompt."*                                                                  | Write the question's **Voice prompt**.                                                                                                                                          |
| *"(key) contains unsupported executable content."*                                              | The question is of a type voice cannot run (usually from an import). Delete it, or change its type in a Voxworks copy.                                                          |
| *"(key) requires at least two options."*                                                        | Add options until it has at least two. A Rating's scale points count as its options.                                                                                            |
| *"(key) is set to Battery, which only a single choice or a rating can be."*                     | Change the type to Single choice or Rating, or turn **Battery** off.                                                                                                            |
| *"(key) is a battery with fewer than two items."*                                               | Add a second item, or turn **Battery** off. See [Battery](/surveys/question-types/battery).                                                                                     |
| *"(key)'s validation pattern is not a valid regular expression."*                               | Fix the **Pattern** on the Number question. The editor tells you as you type whether it is valid. See [Number](/surveys/question-types/number).                                 |
| *"(rule) contains unsupported routing logic."*                                                  | An imported rule voice cannot run. Delete it or rebuild it on the [Logic tab](/surveys/logic).                                                                                  |
| *"(rule) reads question “(key)”, which is not in this survey."*                                 | The rule's condition names a question that no longer exists. Edit or delete the rule.                                                                                           |
| *"(rule) reads option “(option)”, which is not an option of (key)."* (or *"…of any question."*) | The condition names an option key the question does not have — often after an option key was changed. Pick the right option in the rule.                                        |
| *"Outcome code “(code)” is listed twice."*                                                      | Remove the duplicate row in [Closing](/surveys/closing-and-outcomes).                                                                                                           |
| *"A (kind) action is unsupported."*                                                             | An imported action voice cannot run. Remove it from its rule.                                                                                                                   |
| *"(rule)'s (kind) action has no outcome code."*                                                 | Give the **Complete survey**, **Screen out** or **Terminate interview** action an outcome code.                                                                                 |
| *"(rule) ends with outcome “(code)”, which is not listed in Outcomes."*                         | Add the code in [Closing](/surveys/closing-and-outcomes) — the **Add them** link there adds every missing code at once.                                                         |
| *"(rule)'s (kind) action needs a human-readable reason."*                                       | Give the **Screen out** or **Terminate interview** action a reason.                                                                                                             |
| *"Outcome “(code)” is missing — the survey shell always ends with it."*                         | Add the code in Closing. It appears for each of `completed`, `callback_requested`, `refused` and `no_contact` until they are listed, so a new survey starts with four of these. |
| *"The survey voice settings are not valid: (path) — (message)."*                                | A setting in one of the fixed sections is out of range — for example an FAQ priority clash. The path names the setting; open that section, correct it and save.                 |
| *"The gatekeeper has no greeting — it is the consent question, and it is asked on every call."* | Write the **Greeting** on **Gatekeeper → Outbound**. See [Gatekeeper](/surveys/gatekeeper).                                                                                     |

When you press **Validate** with blockers, the toast reads *"1 blocker — fix it before compiling."* or *"(n) blockers — fix them before compiling."* When you press **Publish**, it reads *"Publishing is blocked:"* followed by the first blocker.

***

## Warnings

### Questions

| Warning                                                                                                                                                                                                      | What it means                                                                                                              |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -------------------------------------------------------------------------------------------------------------------------- |
| *"(key) is preserved for inspection only."*                                                                                                                                                                  | An imported question or rule kept for reference. It will not run on a call.                                                |
| *"(key) was transformed during import."*                                                                                                                                                                     | An imported question was converted to a voice type. Check it reads the way you expect.                                     |
| *"(key) screens respondents out as “(code)”, which is not listed in Outcomes — they hear nothing but the farewell."*                                                                                         | A Number question's **Screen out** uses a code that is not in Closing. Add it, with a closing text.                        |
| *"(key) screens respondents out as “(code)”, and that outcome has no closing text — they hear nothing but the farewell."*                                                                                    | Write the closing text for that code in Closing.                                                                           |
| *"(key) still stores the retired “allowed values” validation. It is read as a screen — the answer is recorded and the respondent is screened out — and saving the question writes it back in the new form."* | An older Number question. Open it, check the **Screen out** list and save.                                                 |
| *"(key) is required but accepts the first refusal (attempts.decline is 0)."*                                                                                                                                 | Required questions nudge a refusal at least once. Raise the question's **Decline** attempt to 1, or turn **Required** off. |

### Piped tokens

These name the question and where the token is — its **prompt**, **alternative phrasing (n)** or **item “(key)” longer form (n)** — followed by:

* *"pipes `{{…}}`, and “x” is not a variable of this survey — the token speaks as an empty string."*
* *"pipes `{{…}}`, and no rule anchored on an earlier question sets “x” — the token speaks as an empty string."*
* *"pipes `{{…}}`, but every rule that sets “x” is anchored on a question that can be skipped — the token speaks as an empty string on a call that never asked it."*
* *"pipes `{{…}}`, which is none of `{{survey.<question>.result}}`, `{{survey.var.<variable>}}` or `{{contact.<field>}}` — nothing substitutes it, so the raw token is spoken."*
* *"pipes `{{…}}`, and “x” is not a question of this survey — the token speaks as an empty string."*
* *"pipes `{{…}}`, which is this question itself — the token speaks as an empty string."* / *"pipes `{{…}}`, which is asked later — the token speaks as an empty string."*
* *"pipes `{{…}}`, but “x” can be skipped — the token speaks as an empty string on a call that never asked it."*

How to fix each is in [Survey variables and piping](/surveys/survey-variables#readiness-checks-on-piped-tokens).

### Gatekeeper

| Warning                                                                                                                              | What it means                                                                                                             |
| ------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------- |
| *"The gatekeeper has no SMS — an answering machine gets a silent hangup."*                                                           | Informational. Add a **Voicemail - SMS** if you want machines to get a text. See [Voicemail and SMS](/surveys/voicemail). |
| *"The gatekeeper has no introduction — an inbound caller is told who they have reached in a line the compiler composes."*            | Write the **Introduction** on **Gatekeeper → Inbound**, or accept the composed line shown in grey.                        |
| *"The gatekeeper has no inbound consent question — an inbound caller is asked “Are you ok to participate?” after the introduction."* | Write the **Consent question** on **Gatekeeper → Inbound**, or accept the default.                                        |

### Voice

| Warning                                                                                                                      | What it means                                                                                                                                  |
| ---------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------- |
| *"No voice is chosen — the compiled script will carry none and cannot place a call."*                                        | Choose a **Voice** in the [Agent](/surveys/agent#choose-a-voice) section. The survey compiles without one, but it cannot make or answer calls. |
| *"No voice engine is chosen and the platform has no default — the compiled script will carry none and cannot place a call."* | Speak to the Voxworks team.                                                                                                                    |

<Warning>The voice warning does not stop a compile or a publish. Always check that a voice is chosen before you [run a survey](/surveys/running-a-survey).</Warning>

***

## Compile errors

Some problems can only be found by building the survey — for example a survey that is very large or very heavily routed. These appear after a compile, on the **Compile** card as *(code) · (question key) — (message)*, not in Findings. See [Validate, compile and publish](/surveys/validate-compile-publish#when-a-compile-fails).
