← Back to Converter
A reference guide for selecting the correct repeat group format for your survey design.
| Format | Structure | Default? | Best For |
|---|---|---|---|
| 1. Sequential Positional Loop | Unrolled groups by slot position | No | Fixed-count sequential recording |
| 2. Brand-Fixed Conditional Group Loop | One fixed group per brand/item | No | Brand-dedicated column analysis |
| 3. Automated Selection-Driven Repeat Loop | True begin_repeat / end_repeat | No | Variable-count, large lists, long format analysis |
| 4. Smart Auto-Select Default | Engine picks per repeat group | ✅ Yes | Not sure which format fits — let the engine decide |
| 5. Direct Scripting Mode | No system scaffolding at all | No | Fully custom, hand-authored repeat logic |
| 6. Enumerator-Controlled Single-Pass Loop | Uncounted repeat, name + details together | No | Open-ended lists with light per-item follow-up |
| 7. Enumerator-Controlled Roster Loop | Two-pass: names first, then details | No | DHS-style rosters with substantial per-item detail |
A fixed number of unrolled groups (one per slot position) where the enumerator manually selects a brand or item at the start of each group via a select_one question. Already-selected items are excluded from subsequent groups via choice_filter, preventing duplicates. The total number of groups is fixed at design time.
Exports as a single flat sheet. Columns are organised by slot position, not by item. The same brand can appear in different slot columns across interviews. Cross-respondent analysis by brand requires filtering by slotN_pick value.
Each brand or item has its own permanently fixed group with hardcoded questions and a unique field name prefix. The enumerator selects all applicable brands upfront via a select_multiple question, and only the selected brands' groups appear — always in the same fixed order. No reshaping is needed for brand-level analysis.
Exports as a single flat sheet with brand-dedicated columns. Each brand always appears under the same columns regardless of interview or selection order. Brands not selected are simply blank. No filtering or reshaping needed for brand-level analysis.
A true begin_repeat / end_repeat group driven by a prior select_multiple question. The repeat runs automatically — once per selected item — iterating through each selection in order using selected-at(). The number of iterations adapts to each respondent's selections. This is the recommended default for most survey designs.
Exports as two linked sheets — a main sheet (one row per submission) and a repeat sheet (one row per iteration per submission). All iterations share the same column names and are distinguished by the current_item value. Requires filtering by current_item or reshaping in Stata/R to analyse by specific item.
The engine evaluates each repeat group individually — considering the trigger question's type, the number of options, and (for enumerator-controlled repeats) the number of follow-up questions — and automatically picks the best-fitting format (1, 2, 3, 6, or 7) without requiring the author to choose manually. Different repeat groups in the same questionnaire may resolve to different formats.
Varies per repeat group depending on what the engine resolves it to — some groups may export as flat sheets with dedicated columns (Format 1/2 outcomes), others as separate repeat sheets (Format 3/7 outcomes). Check each repeat group's resolved format individually when planning analysis.
No system-generated repeat scaffolding is applied at all. Questions inside a "Repeat group for..." boundary are scripted exactly as written in the questionnaire — group by group, question by question — with no begin_repeat/end_repeat, no slot unrolling, and no brand-fixed groups. The author takes full manual control over any repeat logic.
Entirely dependent on what the author manually scripts — the engine imposes no predictable structure of its own in this mode.
No fixed choice list at all — the enumerator types each item's name on the spot via a text question, then immediately answers the detail questions for that same item, one item at a time. Uses ODK's native uncounted-repeat "Add Group?" prompt, so the enumerator decides in the field whether to continue after each item.
Exports as a single repeat sheet — one row per item. The item_name column holds the enumerator-typed name alongside that item's detail answers in the same row.
A true two-pass, DHS-style roster. All item names are collected first in an uncounted repeat (via the same "Add Group?" prompt as Format 6), then a second repeat — automatically sized to match however many names were entered — asks the detail questions for each named item, pulling back the matching name by position.
Exports as two separate repeat sheets — a roster sheet (one row per named item) and a details sheet (one row per item, indexed to match the roster by position). Requires joining the two sheets by position when analysing.