Skip to content

Blocks in the routing diagram - MaxDiff, Conjoint and loops as one node

The routing diagram draws MaxDiff and Conjoint tasks and loops as one block node, detects loops on its own and lets you rename, confirm or build blocks.

Published 8 min read .md

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.

Placeholder: screenshot of the routing diagram with one MaxDiff block node "15 pages, random order" between the screener and the follow-up questions
Fifteen MaxDiff task pages drawn as one block

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:

  1. 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.
  2. By the question names. Many platforms name loop pages after the question and the item, such as q3[{Audi}] and q3[{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).

Placeholder: screenshot of a loop node "Have you used a {pipe-in} before?" with the subtitle "Loop, 6 iterations"
A loop drawn as one node

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.

Placeholder: screenshot of the loop node "Loop over q2: q3, q5" listing the rows q3 6x and q5 6x and an Expand button
One loop node with two 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.

Placeholder: screenshot of the expanded loop - a dashed frame "Loop over q2: q3, q5" containing q3 and q5 with a dashed arrow from q5 back to q3, and the button "Show as one node"
The loop body with the dashed arrow to the next iteration

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.

Placeholder: screenshot of the routing diagram toolbar with the switch "MaxDiff, Conjoint and loops as one block" and the button "Blocks (3)"
The switch and the Blocks button above the diagram

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.

StateMeaningActions besides Rename
DetectedFound by SurveyTester and drawn as one nodeNot a block, Show pages
Possible loopSimilar question texts, but no evidence yet - drawn as single pagesIs a loop
ConfirmedA possible loop you confirmedNot a block, Back to detection, Show pages
Not a blockA detected block you rejected - drawn as single pagesBack to detection
Own blockPages you put together yourselfDelete 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.
Placeholder: screenshot of the Routing blocks dialog with a MaxDiff block, a loop with two indented questions, a possible loop and their state, evidence and action buttons
The Routing blocks dialog

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

Placeholder: screenshot of the New block section of the dialog with a name field, the page filter, ticked pages and the button "Create block (4 pages)"
Putting a block together from pages

Step by step

  1. Run a few test runs, so that SurveyTester knows the pages and has evidence for loops. Five to ten SurveyBot runs are usually enough.
  2. Open Pages & Routing and the routing diagram. MaxDiff, Conjoint and loops are drawn as one node each.
  3. 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.
  4. Missing a block? Create it from its pages in New block.
  5. To look inside a block, use Show pages in the dialog, or Expand and the question rows on a loop node.
  6. 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.