← Back to Documentation

Entry Display

Admin Entry View

In Forms > Entries > (click entry), extra rows appear below the original fields as additional sections (Row 2, Row 3, etc.) with field labels and values.

Virtual fields with negative IDs (from -1000) are injected to avoid conflicts with real fields.

CSV Export [Pro]

The Export module adds extra rows as additional columns:

Name | Email | Row 2 - Name | Row 2 - Email | Row 3 - Name | Row 3 - Email

Repeater marker fields are stripped from exports. Virtual column IDs use -(row * 100000 + field_id) encoding.

REST API [Pro]

Entry responses include a top-level gfr_rows key:

{
  "id": 123,
  "gfr_rows": {
    "team_members": {
      "0": { "5": "Alice", "6": "alice@example.com" },
      "1": { "5": "Bob", "6": "bob@example.com" }
    }
  }
}

Raw field-ID-keyed data is stored as gfr_rows_raw_{groupname}, immune to label changes.

Data Storage

Meta KeyFormatPurpose
gfr_rows_{groupname}[ row => [ label => value ] ]Primary, used by most modules
gfr_rows_raw_{groupname}[ row => [ field_id => value ] ]REST API, immune to label renames

Retrieving Rows

// All rows (including row 0) via plugin function:
$rows = gfr_get_all_rows( $entry_id, $form );
// [ 'group' => [ 0 => [...], 1 => [...] ] ]

// Extra rows only via GF meta:
$extra = gform_get_meta( $entry_id, 'gfr_rows_team_members' );
// [ 1 => [ 'Name' => 'Bob' ] ]

File Upload Display

File URLs render as clickable links in admin entry view. Multi-file upload fields show total file count across all rows in the entry list.