---
title: "Blocks in the routing diagram - MaxDiff, Conjoint and loops as one node"
description: "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."
url: https://www.surveytester.com/academy/en/pages-and-routing/routing-blocks/
language: en
type: article
audiences: ["Survey Authors", "Survey Testers", "Project Managers"]
published: 2026-10-31
updated: 2026-10-31
tags: ["routing", "routing diagram", "blocks", "loops", "maxdiff", "conjoint", "iterations", "piping", "randomisation"]
---

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

_Pages & Routing · SurveyTester Academy_

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](https://www.surveytester.com/academy/en/pages-and-routing/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](https://www.surveytester.com/academy/_img/pages-and-routing/routing-blocks/en/routing-maxdiff-block.png "w=44rem | 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"](https://www.surveytester.com/academy/_img/pages-and-routing/routing-blocks/en/routing-loop-node.png "w=36rem | 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](https://www.surveytester.com/academy/_img/pages-and-routing/routing-blocks/en/routing-loop-several-questions.png "w=36rem | 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"](https://www.surveytester.com/academy/_img/pages-and-routing/routing-blocks/en/routing-loop-expanded.png "w=44rem | 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)"](https://www.surveytester.com/academy/_img/pages-and-routing/routing-blocks/en/routing-blocks-switch.png "w=40rem | 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.

| 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.

![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](https://www.surveytester.com/academy/_img/pages-and-routing/routing-blocks/en/routing-blocks-dialog.png "w=44rem | 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)"](https://www.surveytester.com/academy/_img/pages-and-routing/routing-blocks/en/routing-blocks-new.png "w=40rem | 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](https://www.surveytester.com/academy/en/pages-and-routing/survey-path-analysis) and the
  [questionnaire export](https://www.surveytester.com/academy/en/pages-and-routing/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.
