# Repeating groups

Collect as many entries as a respondent needs from one repeating block.

## Repeating groups

A repeating group bundles a few related questions into one block that respondents can add over and over. One block collects a whole list — guests, line items, contacts — without you guessing how many rows to build.

<h2 id="what-it-is">What a repeating group is</h2>

<p>
  A repeating group is a labeled container that holds one or more questions — its <strong>member fields</strong>. Respondents add as many{' '}
  <strong>entries</strong> of the whole group as they need. Each entry collects a fresh set of answers for every member field inside.
</p>

<p>Reach for one whenever a single respondent might supply the same shape of data more than once:</p>

<ul>
  <li>
    <strong>Event guests</strong> — a Name and Age for each person they bring.
  </li>
  <li>
    <strong>Order line items</strong> — a product, quantity, and price per row.
  </li>
  <li>
    <strong>Contacts</strong> — name, email, and role for everyone on a team.
  </li>
  <li>
    <strong>Work history</strong> — employer, title, and dates for each past job.
  </li>
</ul>

<h2 id="add-a-repeating-group">Add a repeating group</h2>

<p>
  A repeating group is a structural block: a group title, the member fields inside it, and an add button. Groups live at the top level of
  your form — the editor pins that shape automatically, and you cannot nest one in another.
</p>

Repeating Group</strong>. The cursor lands in the title.',
    },
    {
      title: 'Name the group',
      description:
        'Give it a title, like "Additional guests". This is the heading respondents see above the entries. Hide it later from the block menu if you do not want it.',
    },
    {
      title: 'Add member fields inside',
      description:
        'Drop ordinary questions into the group — Text Input, Number, Date Picker, Dropdown, and more. Each keeps its own label, placeholder, and required toggle.',
    },
    {
      title: 'Edit the add-button label',
      description: 'The button reads "Add one more" until you change it. Make it match the content — "Add another guest".',
    },
  ]}
/>

<p>
  Already built the fields? Select them, open the block menu from the drag handle, and choose <strong>Create repeating group</strong> — it
  works on one block or on a run of them. The same menu on a group offers <strong>Hide title</strong> and <strong>Remove grouping</strong>,
  which unwraps the questions again.
</p>

<h2 id="what-respondents-see">What respondents see</h2>

<p>
  The first entry shows inline — the group title, its member fields, and the add button, just like any other section of the form. As soon as
  a respondent adds a second entry, each one becomes a numbered card (01, 02, 03 …) with a remove control in its corner.
</p>

<ul>
  <li>
    <strong>Add button</strong> — appends a new blank entry each time it is clicked.
  </li>
  <li>
    <strong>Remove control</strong> — the X on a card deletes that entry. It appears once there are two or more entries.
  </li>
  <li>
    <strong>At the ceiling</strong> — a group holds up to 100 entries, and the add button also goes dead when the answers reach the 256 KB
    per-submission payload limit. Both are guards against runaway submissions, not something respondents normally meet.
  </li>
</ul>

<p>
  On a <a href="/requests/overview">request</a> that locks one of the group's member fields, the shape is fixed for that recipient: they can
  neither add nor remove entries.
</p>

> 💡 **Keep member fields focused**
> <p>
>     A repeating group works best with a handful of tight questions — the set a respondent fills in once per entry. The required toggle
>     applies per entry, so every entry must clear the same validation.
>   </p>

<h2 id="logic-and-groups">Groups and conditional logic</h2>

<p>
  A whole group can be shown or hidden by a <a href="/building-forms/conditional-logic">logic</a> rule, exactly like any other block. Member
  fields cannot: they are not offered as conditions, as show/hide targets, or as required/optional targets, because a rule would silently
  act on the first entry only. Branch on a question outside the group instead.
</p>

<h2 id="where-answers-show-up">Where the answers show up</h2>

<p>Once responses arrive, the group stays grouped across every surface. Each page below carries the full detail — this is just the map:</p>

<ul>
  <li>
    <strong>
      <a href="/submissions-analytics/submission-inbox">Submission inbox</a>
    </strong>{' '}
    — one submission shows numbered cards per entry; the table view gets a single count chip that opens the detail.
  </li>
  <li>
    <strong>
      <a href="/submissions-analytics/question-summary">Question summary</a>
    </strong>{' '}
    — the group appears as one card with entry and submission counts plus a mini block per member field.
  </li>
  <li>
    <strong>
      <a href="/submissions-analytics/exports">Exports</a>
    </strong>{' '}
    — each entry exports under its own keys, and the whole group can also collapse into a single labeled text column.
  </li>
  <li>
    <strong>
      <a href="/requests/callbacks">Callbacks and the API</a>
    </strong>{' '}
    — the group answers under its own <a href="/requests/field-keys">field key</a> as a list, one object per entry keyed by member field, in
    the order the respondent left them.
  </li>
</ul>

<h2 id="referencing-group-answers">Referencing group answers</h2>

<p>
  Pipe a repeating group into other questions, notifications, or integrations with an <strong>@</strong> mention — mention a single member
  field to join that field's value across every entry, or mention the whole group to pull in all entries at once. See{' '}
  <a href="/building-forms/answer-piping#referencing-repeating-groups">Answer piping → Referencing repeating groups</a> for exactly how each
  reference resolves, with examples.
</p>

<h2 id="next-steps">Next steps</h2>
<div class="not-prose grid gap-3 sm:grid-cols-2">
  - [Answer piping](/building-forms/answer-piping) — Reference group answers across your form
  - [Conditional logic](/building-forms/conditional-logic) — Show, hide, and branch on answers
  - [Submission inbox](/submissions-analytics/submission-inbox) — Read entries as numbered cards
  - [Exports](/submissions-analytics/exports) — Download group entries to CSV or Excel
</div>
