A form is a sequence of fields you ask users to fill in. The Forms module’s designer is drag-and-drop — pick a field type, drop it on the form, configure it.
Starting a new form
Go to Forms → New form.
Initial setup:
- Name — what users see at the top of the form and in the forms list.
- Form type — see Forms Overview for the five types. Most standalone forms are General.
- Description — optional explanatory text shown above the form fields.
Save to enter the designer.
The designer
The form designer is split into three areas:
- Field palette on the left — drag fields onto the form to add them.
- Form canvas in the middle — your form as it’s being built.
- Field properties on the right — appears when you click a field on the canvas, lets you configure it.
Available field types
| Field | What it does |
|---|---|
| Text | Short single-line text input. |
| Text area | Multi-line text input for longer answers. |
| Number | Integer or decimal input with validation. |
| Text input validated as an email address. | |
| URL | Text input validated as a URL. |
| Date | Calendar picker with DD/MM/YYYY format. |
| Time | Time-of-day picker. |
| Date/time | Combined date and time picker. |
| Choice (radio buttons) | Single-select from a list. |
| Choice (dropdown) | Single-select from a dropdown. |
| Multiple choice | Multi-select from a list (checkboxes). |
| Yes/No (boolean) | Single tick-box. |
| File upload | Attach a file. Configure allowed file types and size limit. |
| Image upload | File upload restricted to images. |
| Signature | Draw a signature on screen. Used heavily by Slips. |
| HTML / Static text | Display block of formatted text — instructions between fields, headings, dividers. |
| Hidden | Capture data not shown to the user (e.g. context from the page they came from). |
Field properties
For each field you can set:
- Label — the visible question text.
- Required — must be filled in to submit.
- Help text — short instruction shown under the label.
- Default value — pre-filled value users can change or accept.
- Validation — type-specific rules (regex for text, min/max for numbers, etc.).
- Conditional logic — show/hide the field based on values entered in other fields.
Field order and structure
- Drag to reorder — fields render in the order they appear on the canvas.
- Fieldsets — group related fields under a heading (e.g. Personal Details, Emergency Contact). Drag a fieldset onto the canvas, then drag fields into it.
Saving and previewing
- Save — persists the current form. You can save at any point during design.
- Preview — opens the form in a new tab as the end user would see it. Use this often — the designer view and the user view aren’t identical.
Form handlers
Form handlers decide what happens when a user submits the form. Default handlers:
- Save submission — store the response in PortalHQ. Always enabled.
- Email notification — send the submission to one or more email addresses.
- Auto-reply — confirm the submission to the submitter.
Add a handler from the Handlers tab in the designer. Configure recipients, subject, and email body. Body content can include field values (e.g. {name}, {email}) which get filled in for each submission.
Form types that affect design
- Booking Form — designed for use inside the Booked Events flow. Keep it short — parents fill it in while booking a slot.
- Activity Signups Form — runs during co-curricular signup. Don’t replicate questions the signup workflow already covers (year group, student name).
- Incident Form — used by coaches in the field. Optimise for mobile entry; keep questions short and structured.
- Slip Form — used inside the Slip workflow. Often includes a signature field.
A few practical rules
- Test on a parent account before publishing. The designer view doesn’t show the real user experience.
- Keep forms short. Each extra question is a chance for someone to give up. If you can find the answer another way, don’t ask.
- Use HTML blocks for instructions. A short paragraph at the top sets expectations.
- Set sensible defaults. Where you know the likely answer, pre-fill it.
- Test with a real file when using file upload. File-size limits and allowed types catch people out.