The routing diagram on the Pages & Routing page shows every page of the survey as a node and every way the test runs moved between them as an arrow. Some parts of a survey are not a path, though, but a block: the fifteen task pages of a MaxDiff, the choice tasks of a Conjoint, or a question that is asked once for every brand a respondent knows. SurveyTester recognises these blocks and draws each of them as one node, so the diagram shows the logic of the survey instead of a tangle of arrows. You can open a block when you need the details, and correct the detection where your survey is special.
Why this is hard without SurveyTester
- Random order looks like chaos. MaxDiff and Conjoint tasks are shown in a different order to every respondent. Drawn page by page, ten test runs produce arrows from almost every task page to almost every other one. The real routing question - where does the survey go after the exercise - disappears.
- Loops multiply pages. A question asked for every brand ticked earlier ("How satisfied are you with Audi?", "... with Fiat?") becomes one page per brand. Twelve brands and two questions per brand are 24 nodes that all say the same thing.
- Loops are rarely labelled as loops. Survey platforms name loop pages differently, and many surveys only show the brand in the question text. Recognising them by hand means reading every page.
- Every respondent sees different iterations. One respondent knows three brands, the next one seven. A page-by-page diagram never looks the same twice, so two versions of a survey are hard to compare.
What SurveyTester draws as one block
MaxDiff and Conjoint tasks
All task pages of one MaxDiff or Conjoint exercise become one node with the subtitle N pages, random order. The arrows into the block and out of it count every test run once, no matter in which order the run saw the tasks. The pages are taken from the questions SurveyTester detected as MaxDiff or Conjoint, or that you marked as MaxDiff yourself, see Testing MaxDiff questions.

Loops - one page per iteration
A loop is a question that is asked once per item of a list, usually the answers of an earlier question. Its pages become one node with the subtitle Loop, N iterations. SurveyTester finds loops in two ways:
- By the question text. The question texts of the pages are the same except for one gap:
"Have you used a {pipe-in} before?" with Audi, Fiat and Kia in the gap. Similar texts alone are not
enough, because many surveys repeat a sentence pattern without looping. SurveyTester also needs
evidence from the test runs, shown in the blocks dialog:
- Iterations = answers of an earlier question - the words in the gap are answer options of a question before the loop.
- Order changes between runs - two iterations were asked in both orders across the test runs.
- Iterations differ between runs - the test runs saw at least three different sets of iterations.
- By the question names. Many platforms name loop pages after the question and the item, such as
q3[{Audi}]andq3[{Fiat}]in Dimensions. Such names are evidence on their own (Loop by question names), and they also work for pages without a question text.
Pages that only look alike - "Please select {pipe-in}" on unrelated pages - stay single pages. If a real loop is not found, you can confirm or build it yourself (see below).

Loops with several questions per iteration
Often a loop asks more than one question per item: q3 and q5 for Audi, then q3 and q5 for Fiat, and so on. SurveyTester recognises that the two loops run together - same items, and in every run the questions of one item follow each other - and draws them as one node, for example Loop over q2: q3, q5. The node lists its questions, each with its number of iterations, and the subtitle reads 2 questions, 6 iterations. The evidence in the dialog is Asked together with other questions per iteration.

The node opens in three levels:
- One node - the default: the whole loop as one node.
- Expand - shows the loop body: the questions of one iteration as nodes, q3 → q5, inside a dashed frame labelled with the loop's name. A dashed arrow from q5 back to q3 stands for "next iteration".
- Click a question in the node or the frame - shows that question's iterations as single pages, for example q3 for Audi, Fiat and Kia.
Show as one node on the frame closes everything again.

Switching blocks on and off
Above the routing diagram, the switch MaxDiff, Conjoint and loops as one block turns all blocks on or off. It is on by default and only shown when the project has blocks. Next to it, the button Blocks (n) opens the blocks dialog. The switch is a view setting: it is remembered for the project in your browser session and changes nothing for other users.

The Blocks dialog
The Routing blocks dialog lists every block SurveyTester found and every block you defined: its name, its kind (MaxDiff, Conjoint, Loop, Own block), its state, the evidence and the number of pages. The questions of a loop with several questions are listed indented below their loop. Detection runs every time the diagram loads; your decisions are stored with the project and laid on top of it, so they apply for every user of the project and survive new test runs, a loop that grew and a copy of the project.
| State | Meaning | Actions besides Rename |
|---|---|---|
| Detected | Found by SurveyTester and drawn as one node | Not a block, Show pages |
| Possible loop | Similar question texts, but no evidence yet - drawn as single pages | Is a loop |
| Confirmed | A possible loop you confirmed | Not a block, Back to detection, Show pages |
| Not a block | A detected block you rejected - drawn as single pages | Back to detection |
| Own block | Pages you put together yourself | Delete block, Show pages |
Changing blocks needs the permission to edit pages; everybody else sees the dialog read-only, with Show pages only.
- Rename gives the block your own name, for example "Brand satisfaction loop". The dialog keeps showing detected as: ... with SurveyTester's name.
- Not a block draws the pages as single nodes again. For a question inside a loop with several questions, it takes that question out of the loop.
- Is a loop turns a possible loop into a loop node.
- Back to detection forgets your decision, a new name included; Delete block removes a block of your own.
- Show pages draws this one block page by page while all others stay collapsed; Show as one node closes it again. This is remembered per project in your browser session.

A block of your own
When a part of the survey should be one node but SurveyTester does not recognise it - a block of statements in random order, a module shown in random order - build it yourself: in New block at the bottom of the dialog, enter a name, filter and tick at least two pages and click Create block (n pages).

Step by step
- Run a few test runs, so that SurveyTester knows the pages and has evidence for loops. Five to ten SurveyBot runs are usually enough.
- Open Pages & Routing and the routing diagram. MaxDiff, Conjoint and loops are drawn as one node each.
- Click Blocks (n) and check the list. Confirm possible loops with Is a loop, reject false ones with Not a block, and give blocks names your team understands.
- Missing a block? Create it from its pages in New block.
- To look inside a block, use Show pages in the dialog, or Expand and the question rows on a loop node.
- Switch MaxDiff, Conjoint and loops as one block off when you need every single page, for example to follow one arrow to a specific iteration.
Good to know
- Blocks only change the drawing. The test runs, the pages table, the path analysis and the questionnaire export keep working with the single pages.
- An arrow into a block counts each test run once, however many pages of the block it visited.
- Arrows leaving a block carry no answer labels: a block has no single last question whose answer decides the route.
- The loop name is the question text with {pipe-in} in the gap, or the question name. The dashed frame and the dialog show the name of a loop with several questions in English unless you rename it.
- Your decisions are matched to the detected blocks by their pages, not by a fixed id, so they keep working when the survey or the detection changes a little.
Key takeaway
A survey with a MaxDiff and a brand loop has dozens of pages but only a handful of routing decisions. SurveyTester draws exactly those decisions: randomised exercises and loops become one node each, found automatically and correctable in one dialog, with every detail one click away.
