Appearance
Forms
The form builder is a general-purpose tool for anything you need to collect: a scholarship application, a parade entry, a volunteer signup, a photo contest. Forms can take uploads, repeat rows, apply conditional logic, and collect payment.
What forms are not for
Vendor applications and fair entries are purpose-built screens, not forms — the office needs to filter, count occupancy, and judge on those fields, which a free-form questionnaire cannot support. Use forms for the bespoke extras alongside them.
The forms index
Every form you have built, with its status, submission count, and share links.
Each form has three pages
Tabs across the top of a form:
- Builder — the field palette, the canvas, and per-field settings
- Settings — notifications, confirmation, share links
- Entries — the submissions
Builder
Drag fields from the palette onto the canvas and configure each one.
Field types
Basics — short text, paragraph, dropdown, checkboxes, radio, date, number, email, phone.
Upload — photos, insurance PDFs, vaccination records. Files go to the same storage as every other document in the account.
Repeater — a group of fields the submitter can add rows of: "add another entry item", "add another menu item", "add another reference".
Payment fields — three kinds:
| Field | Behaviour |
|---|---|
| Single line item | A fixed charge |
| Priced dropdown | Each option carries its own price |
| Priced checkboxes | Selected options sum |
The form totals what the submitter owes and charges it at submit, through the fairground Stripe connection.
Conditional visibility
Any field can be shown only when another field has a particular value. This is what powers "first-time vendor? → three reference fields appear" — the form stays short for everyone it does not apply to.
Settings
Email notifications
A form carries several named notification routes, each independently enabled. Per route:
- Send to — a static address, or the value of an email field on the form (which is how the submitter gets their own confirmation)
- Subject and body, with merge fields from the form's own fields, in your branded template
- Conditional logic — rows of field / operator / value that decide whether this route fires
The conditional routing is the important part. It is how each superintendent receives only their own department's submissions:
Notify
[email protected]when Department equals Honey & Beeswax
Notify the office when Fee total is greater than 50
Condition rows combine with AND
Conditions on a notification route are all-must-match. If you need either-or, use two routes.
Sharing
Every form has a hosted public page and an embed snippet — the same one-line script pattern as the booking widget, rendering in an iframe that resizes itself.
Entries
The submissions table, filterable, with CSV export.
Export before clear
The season reset lives here. Export before clear downloads everything and then empties the submissions, keeping the form itself intact for next year. The export is not optional — you cannot clear without taking one.