Skip to content

Repeat groups

Many surveys record one event with many things inside it: an electrofishing run that catches many fish, a net set that holds many individuals, a transect with many observations. A repeat group captures exactly that. It is a field whose value is a list of entries, where each entry has its own sub-fields.

  1. Add a Repeat group field from the palette.
  2. Set What is one entry called? (for example, “fish” or “individual”), so the form labels each entry clearly.
  3. Add the sub-fields each entry should have (species, length, weight, and so on), and configure them just like top-level fields.
  4. Optionally set Min entries and Max entries to require at least, or at most, a certain number.

During data entry, the person adds an entry, fills in its sub-fields, and repeats. Each entry is validated on its own, so an error in one fish does not block the others.

A repeat group can carry its own checks that run against each entry on its own, the same kind of rule as a record-level validation check: a comparison, or a rule that must not happen. When one fails, the message attaches to the entry that broke it, not the whole record.

Use it for a per-individual rule, for example a specimen that must not carry both a structure sample and a tag, or a sub-measurement that must fall in a range.

These are written in the repeat group’s JSON, under a checks list beside the group’s fields, using the same shape as record-level checks (the field names refer to the group’s own sub-fields). See Advanced rules for the check shape.

Reach for a repeat group when a single event naturally has many records inside it, and you want them kept together under that event (with its date, site, and gear recorded once). If instead each row is really its own event, a flat survey type with one record per row is simpler.