> ## 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.

# Running a Survey

> How a published survey makes and takes calls: the compiled Call Script named after the survey, choosing a voice, test calling a draft, dialling respondents from Batch Scheduler, answering inbound calls on a number, and what to check before launch.

## A survey runs as a Call Script

When you compile a survey, Voxworks builds it into an ordinary **Call Script** (see [Validate, compile and publish](/surveys/validate-compile-publish)). The script appears in **Call Scripts** under the survey's name, and you use it exactly like any other script:

* **Outbound** — add it to a batch in **Batch Scheduler** to dial a list of respondents.
* **Inbound** — assign it to a phone number so respondents who call that number take the survey.
* **Testing** — place a test call from **Call Scripts** to hear it yourself.

There is no separate dialling screen for surveys. To find the script, open **Settings → Compiled identity** in the survey and click the **Script** link, or search **Call Scripts** for the survey's name.

The same script handles both directions. On an outbound call it opens with the **Outbound** greeting; on an inbound call, with the **Inbound** introduction and consent question (see [Gatekeeper](/surveys/gatekeeper)).

***

## Before you start: choose a voice

A survey has no default voice. Choose one in the [Agent](/surveys/agent#choose-a-voice) section **before you compile**. A survey compiled without a voice produces a script that *"cannot place a call"* — [Readiness](/surveys/readiness) warns about it, but the warning does not block compiling or publishing.

If you add a voice after compiling, compile (or publish) again so the script picks it up.

***

## Test the survey

1. Compile the draft — press **Validate** or **Compile**.
2. Open the compiled script from **Settings → Compiled identity → Script**.
3. Place a [test call](/calls/test-calls) to your own phone or in your browser.

A test call runs the newest compiled draft, so you can hear changes before publishing them. Answer as a respondent would — including the awkward cases: say "not now", ask "who is this?", give a "don't know", mumble an answer, ask for the options again.

A session is marked as a test when its call ran a version that was not published — so a test call on a newer compiled draft is a test session, but a test call made when nothing newer than the published version has been compiled runs the published version and is counted as a live session. Test sessions are left out of [Results](/surveys/results) unless you turn on **Include test sessions**. A rule can check **The call is a test** (see [Routing rules](/surveys/routing-rules)).

***

## Publish

Real calls run the survey's **published** version only. Press **Publish** in the survey workspace when you are ready. Until the survey has been published, only test calls should use its script.

Publishing a new version later does not need any change to your batches or numbers: they keep pointing at the same script, and new calls pick up the newly published version as soon as it is live. Calls already in progress finish on the version they started with.

***

## Dial respondents from Batch Scheduler

1. Put your respondents in a [list](/lists/overview) — each contact needs a phone number, and a first name if you use the [Named opening](/surveys/gatekeeper#outbound-fields) or pipe `{{contact.first_name}}`.
2. In **Batch Scheduler**, create a batch and choose the survey's script as the Call Script, either as the batch default or on a source list. See [Batch Scheduler](/batches/overview).
3. Set the calling window and pacing in [Scheduling & Pacing](/batches/scheduling).
4. Set retries for voicemail, no answer and busy lines in [Calling Rules & Retries](/batches/calling-rules). The survey itself does not retry: a respondent who says "not now" or "call me back" is recorded as `callback_requested`, and whether they are called again is up to the batch.
5. Launch the batch.

Each call's survey answers land in the survey's **Results**, whichever batch placed it.

***

## Answer inbound calls on a number

In **Numbers & Routing → Numbers**, choose the number and assign the survey's script as its **Inbound script** (see [Phone Numbers](/numbers/overview#assigning-an-inbound-script)). Anyone who calls that number is greeted with the Inbound introduction and asked for consent.

A common set-up is to assign the script to the same number the batch dials out from, so a respondent who missed the call and rings back can take the survey then. If you leave a [voicemail message or SMS](/surveys/voicemail), tell people they can call back on that number.

***

## Launch checklist

* [ ] A **Voice** is chosen in the Agent section.
* [ ] **Readiness** shows no blockers, and you have read the warnings.
* [ ] The **Greeting** asks for consent, and the four shell outcomes have closing texts in **Closing**.
* [ ] **FAQs** cover who is calling, how long it takes, where the number came from and "are you a real person?".
* [ ] **Maximum call duration** in the Agent section is long enough for the whole interview.
* [ ] You have made test calls and heard the awkward cases handled well.
* [ ] The survey is **published**.
* [ ] The batch uses the survey's script, with the retries and calling window you want.

***

## Watching results come in

Open the survey and switch to **Results** mode. Figures refresh every 30 seconds while the page is open. See [Results](/surveys/results) and [Responses and export](/surveys/responses-and-export).
