Viewing submissions
Every time someone submits one of your published forms, a row lands in the submissions table for that form. This page is where you read them, triage them, and pull them out as CSV when you need to share with a leader.

Getting there
From the Forms list, click any form's row to open its builder. In the top right, click Submissions — or use the URL pattern /forms/{form-id}/submissions directly.
The page header shows the form's name, the total submission count (badge), the status filter, and an Export CSV button.
The table
The submissions table shows, in priority order:
| Column | What's in it |
|---|---|
| ☑ | Checkbox for bulk actions |
| Date | When the submission landed (formatted in your org's date locale) |
| Name | The submitter's name (pulled from the first Text field labelled "name" — or blank/italicized "Anonymous" if none) |
| The submitter's email (pulled from the first Email field with a value) | |
| Status | Coloured badge — new, read, starred, or archived |
| (up to 3 preview fields) | The first three non-display fields by sort order — truncated to 40 characters |
| ⋮ | Row-level dropdown |
Mobile shrinks this to a card layout — name + status badge on top, email and date below, and the first two preview fields stacked under that.
Statuses
Every submission starts at status new. Statuses are purely organizational — they don't affect anything else in GCM, they're just a way of tracking which submissions you've dealt with.
| Status | When to use it |
|---|---|
new | Default. The submission just landed and nobody's looked at it. |
read | You've opened the submission. GCM auto-marks new → read the moment you click into the detail view. |
starred | You're flagging this one as important — usually because it needs a follow-up. |
archived | You've actioned it (or decided not to) and don't need to see it in the default view. |
Filter by status using the dropdown in the page header. Default is "All."
Viewing a single submission
Click any row to open the detail modal:

You see every field's label and the value the visitor entered, in form-order. File uploads show as download links. Empty fields show as -- so you know whether the visitor skipped them or actually submitted an empty value.
The detail modal is read-only — submissions can't be edited. If a visitor needs to correct something, ask them to submit again.
Bulk actions
Tick a checkbox in any row to enter bulk-select mode. A bar appears above the table:
- Mark read — bump every selected
newtoread - Star — flag all selected as starred
- Archive — bump all selected to
archived - Delete — permanently remove the selected submissions (with a confirmation modal)
Tick the header checkbox to select every row on the current page (not every row in the form — just what's visible).
Delete is permanent
Soft-delete doesn't apply to submissions — when you delete, the row is gone for good. If you need an audit trail, export to CSV first.
Exporting to CSV
Click Export CSV in the page header to download every submission currently in view (after the status filter, but ignoring pagination — all matching rows export, not just the visible page).
The CSV columns are:
Date— created timestamp in your localeName— submitter nameEmail— submitter emailStatus- One column per non-display field, in form order, using the field's label as the column header
Multi-value fields (checkboxes with options, multi-select) are joined with ; . File-upload fields export the storage path, not a downloadable link.
The file is named {form-name}-submissions.csv. Open it in any spreadsheet — Excel, Google Sheets, Numbers — and you're done.
Single-row actions
The ⋮ icon at the end of each row opens a small menu:
- View — same as clicking the row
- Star — flip status to
starred - Archive — flip status to
archived - Delete — same delete flow as bulk delete, just for one row
Empty state
If a form has no submissions yet, the page shows a friendly empty state — clipboard icon, "No submissions yet," and a hint that submissions will land here once people start filling out the form. Once the first submission lands, the empty state disappears automatically.
What about real-time?
The page doesn't auto-refresh — you'll need to reload to see new submissions land. If you want a notification the moment a submission comes in (push, SMS, email), build a workflow with the form.submitted trigger. The workflow integration article covers exactly that flow.
Privacy and retention
Submissions stick around forever by default. There's no auto-deletion. If your org needs a retention policy ("delete prayer requests after 90 days"), you can:
- Set up a manual quarterly cleanup ritual — filter by date, bulk-select, delete
- Build a scheduled workflow that finds old submissions and deletes them (advanced)
The data itself sits in the form_submissions table inside your org's row-level-security scope — only your admins can read it, and only the platform itself can read it system-wide. See the users & roles docs for who has access to what.
