Responses
Every form submission becomes a row in the form's backing database. There's no separate "responses inbox" — your responses are your data, ready to filter, view in Kanban, or link to invoices.
Where Responses Land
When someone submits a form:
- Ascend re-runs your conditional logic to determine which fields are visible.
- Hidden fields are dropped — never written to the database.
- Required fields are validated server-side. Missing values return a 422 with field-level errors.
- A new row is inserted into the backing database with the visible field values.
- Default property values fill in any properties not on the form.
- The form's
submissionCountis incremented atomically. - If notification emails are configured (see Settings), each address gets a "New submission received" email.
The whole transaction is atomic — you'll never see a partial row.
Viewing Responses
You have three entry points:
| From | What it does |
|---|---|
/forms list | Click the form. Designer opens. Click Responses in the header. |
| Database → Forms tab | Click a form card → Responses in the form designer header. |
| Form designer (any view) | Click Responses in the header. |
All three send you to /databases/{databaseId} — the backing database, where responses are just rows. Use any view (Table, Kanban, Calendar, Focus Board, Chart) to slice them.
Filtering Responses by Form
If a database is bound to multiple forms, you can tell which form a row came from by:
- Created Time — the timestamp of submission.
- Filter on a hidden form field — add a hidden
Sourcefield with a default value (e.g. "Contact form") so every row is tagged.
A first-class "form source" filter is on the roadmap.
The Unread Badge
Forms in the /forms list and Database → Forms tab show a small dot when there are submissions you haven't looked at yet.
How it works:
- Every user has a per-form
lastSeenSubmissionCount. - The badge shows when
submissionCount > lastSeenSubmissionCount. - Visiting the form's responses (or opening its detail sheet) updates
lastSeenSubmissionCount = current submissionCountand clears the badge for you. Other team members keep their own count.
This is per-user — your teammate's badge stays lit until they look at it themselves.
Activity Filters
The /forms list has three activity filters:
| Filter | Matches |
|---|---|
| Unseen | Forms with submissions you haven't seen |
| Recent | Forms with at least one submission in the last 7 days |
| Quiet | Forms with zero submissions, or whose last submission was 30+ days ago |
Exporting Responses
Responses are database rows, so use the database's export:
- Open the backing database.
- Click the … menu → Export to CSV.
- The CSV includes every column, optionally filtered by the active view.
For programmatic access, use the Public API to query rows.
Deleting Responses
Two options:
- Delete a single response — open the row in the database, click … → Delete row.
- Bulk delete — select rows in the table view and use the bulk action bar.
Deleting a response does not decrement the form's submissionCount — that counter reflects all-time submissions, not current row count. (This matches Tally / Typeform.)
Anonymous Submissions
Public form submissions are anonymous by default — there's no respondent account. Internally, each row's createdBy is set to the form creator's user ID, because the database schema requires a non-null author.
If you need to identify respondents:
- Add an Email field and mark it required.
- Add a hidden field with a default value to tag the source.
- Check the row's Created Time for the submission timestamp.
Submission Notifications
See Settings for configuring per-form email notifications.
Next
- Settings — Thank-you message, redirect URL, notifications
- Troubleshooting — Submissions not arriving, validation failing