Questionnaires
A questionnaire is a form your app usersdesign: the question list lives in a JSON field on a "templates" table, the answers live in a JSON field on a "submissions" table, and every submission keeps a frozen copy of the template it was answered against. Nothing is copied row by row, and editing a template later never changes existing submissions.
Setting it up (builder)
- 1
Two tables, three fields
A Templates table with a name and aJSONfield (say "Questions"), and a Submissions table with areferenceto Templates ("Template") plus aJSONfield ("Answers"). - 2
Display as
Open each JSON field's settings. Set "Questions" to Questionnaire template; set "Answers" to Questionnaire answers and pick the Template reference and the Questions field. Publish checks the pair resolves. - 3
Put them on screens
Make "Questions" editable in the Templates record page (that is the authoring screen) and "Answers" editable in the Submissions record page or a form. That's it — the controls replace the raw JSON box.
Authoring questions (app users)
- Question types: short and long text, number, yes/no, date, date & time, single and multiple choice, photo, file, signature, and record (pick a row from any table).
- Sections, pages and text organise long lists; pages become steps with Back / Next when filling out.
- Show only ifrules hide a question or a whole section until an earlier answer matches ("Damage? = Yes") or the viewer has a given role. A rule that points at a deleted question is ignored — nothing hides by accident.
- Validation: required, min/max, max length, and email / web address / phone / digits formats.
- Import pastes a spreadsheet (one question per line:
question, type, options separated by |, required); Preview shows the filled-out form; Duplicate template copies it into a new row.
Filling out
Answers autosave as a draft while typing (safe to close the phone mid-way). Submitvalidates every visible question; afterwards the record shows a read-only answer list with "Edit answers". The first save freezes the template into the submission, and the server takes that snapshot from the real template row — never from the client.
Using answers elsewhere
JSON columns are not usable in formulas directly; read a value out with JSONGET([Answers], "answers.<question id>") — in a formula field, a filter, a style rule or a workflow condition. JSONGET([Answers], "status") is draft or submitted. Question ids are visible in the template editor's detail panel.
| Setting | Options | What it does |
|---|---|---|
| Questions per template | ≤ 500 | Options per choice question ≤ 100; a template or an answers value ≤ 200 KB. |
| Hidden answers | kept | Flipping a controlling answer back restores what was typed; hidden questions are never required. |
| Changing the template reference | blocked once answered | A submission keeps its snapshot; clear the answers to start over against another template. |
Phone first