Home Forms Creating a form

Creating a form

By mario· May 27, 2026 · Forms

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.
Email 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.