Field Settings
Click the Start marker field in the form editor to access these settings.
Group Name
A unique identifier for the group. Auto-generated but editable. Used in entry meta (gfr_rows_groupname), merge tags ({gfr_rows:groupname}), REST API responses, and HTML data attributes (data-group).
Row Limits [Pro]
Max Rows
Maximum rows a user can add. Range: 1-50. Default: 3. Enforced client-side and server-side.
Min Rows
Minimum required rows. Remove button is hidden below this threshold. Validation fails if fewer rows are submitted.
Override via code
add_filter( 'gfr_max_rows', function( $default, $field, $form ) {
if ( $field->gfr_group_name === 'passengers' ) return 10;
return $default;
}, 10, 3 );
add_filter( 'gfr_min_rows', function( $default, $field, $form ) {
return 2;
}, 10, 3 );
Button Labels [Pro]
Customize “Add” and “Remove” button text per group. Defaults: Add and Remove.
add_filter( 'gfr_add_text', fn( $d ) => 'Add Passenger', 10, 3 );
add_filter( 'gfr_remove_text', fn( $d ) => 'Delete', 10, 3 );
Copy Row [Pro]
Duplicate a row with all values pre-filled. Settings: enable checkbox + optional label (default: Copy). Override via gfr_copy_text filter.
Collapse/Expand Rows [Pro]
Toggle button collapses row fields while keeping the header and action buttons visible. Uses aria-expanded attribute and .gfr-collapsed CSS class.
Drag-to-Reorder [Pro]
Drag handle on each row for reordering. After drop, all input names and IDs are automatically re-indexed.
Row Numbering [Pro]
Dynamic label per row. Template tokens: {n} (row number, 1-based), {total} (total rows). Example: Person {n} of {total}.
Conditional Row Limits [Pro]
Set max rows dynamically based on another field’s value. Select a number field — its value becomes the max at runtime, clamped between min and hard max.
Also injects a hidden input tracking row count, enabling GF’s native conditional logic to reference the repeater group.
End Marker
No configurable settings. Group name auto-syncs with the Start marker.