Skip to content

Forms Plugin

The Forms plugin is AppStudio's data-entry engine. You build forms with field groups and fields, define what users fill in, how the responses are protected, and what happens when they come in. Everything from a simple contact form to a complex multi-step survey with conditional logic is built here.

When to use this

  • You need to collect structured data from users — sign-ups, reports, form responses
  • Different parts of the form should appear depending on previous answers
  • Some users should be notified when new responses arrive
  • Form responses should be printable as PDF using a template
  • The form needs subforms — for example a parent record with linked child records

How it works

A form has three levels:

  1. Form — the named container with metadata, permissions, and settings.
  2. Field groups — sections in the form. Fields always belong to a field group.
  3. Fields — the individual inputs (text, choice, date, signature, etc.).

A form can also have subforms — one or more child forms attached to each form response. Subforms can in turn have their own subforms with no limit on depth.

To present the form to the user, use widgets like Form Response or Tab Layout.

Enable Forms

  1. Open your applet.
  2. Go to Plugin Settings.
  3. Turn on the Forms plugin.
  4. Save.

Create a form

  1. Enable the Forms plugin in the applet.
  2. Open the plugin's dashboard from the side menu.
  3. Click Create form.
  4. Enter a name and description.
  5. Save.

Once the form is created, the field editor opens where you can add field groups and fields.

Field groups

Field groups are the sections that structure a form. A form can have a single group for short forms or multiple groups that become separate steps in a wizard, collapsible sections, or one long page.

Add a field group

  1. Open the form in the field editor.
  2. Click the + button at the bottom of the page (the FAB button).
  3. Enter a name for the group.
  4. Save.

Reorder field groups

Drag field groups in the list to change order. The order saves immediately and controls how the groups appear in widgets that render the form.

Settings per field group

How a group is displayed is controlled by the widget's Viewmode field groups (Default, Expand/collapse, Steps) — that's a widget setting, not the form's. Per widget, you can also choose whether a specific group should appear at all in that widget — see for example Form Response.

Conditional visibility for field groups

Click the filter icon on a field group in the field editor to add conditions that control when the group should appear. The group is only shown if the conditions match the current responses in the form.

TIP

Use conditional group visibility for multi-step forms where the user should only see relevant sections — for example a "Rental object" group that only appears if Type of case = Rental question.

Fields

Fields are the individual inputs — text, choice, date, signature. Every field belongs to a field group.

Add a field

  1. Click + Add field under a field group.
  2. Pick a field type.
  3. Fill in the name and other settings.
  4. Save the field (panel closes).

Reorder fields

Drag fields within a group to change the order, or between groups to move them. The order saves immediately.

Conditional visibility for fields

Open a field's settings and scroll to Filter settingsShow field when. Add conditions against other fields in the form. The field only appears when the conditions are met.

TIP

Combine field-level conditions (for individual fields) with group-level conditions (for whole sections). It gives you clean form logic without duplicating rules.

Field types

Field typeDescriptionUse it for
TextSingle-line text. Min/max length can be set.Names, short answers, codes.
Multi-line textMulti-line text input. Min/max length can be set. Can be converted to Rich text.Descriptions, comments.
Rich textWYSIWYG editor with formatting, lists, and links. Can be converted to Multi-line text.Longer body text with formatting.
EmailText field that validates email addresses.Recipient address, contact info.
URLText field that validates web addresses.Links to external resources.
NumericNumeric input. Min/max value and threshold values with colors can be set.Amounts, counts, measurements.
DateDate picker. Default value can be a fixed date or current date.Birth date, deadline.
Date/timeDate with time. Default value can be a fixed timestamp or current time.Meeting time, event start.
TimeTime of day (hours and minutes).Meeting durations, schedules.
DurationTime interval (hours, minutes, seconds).Time tracking, drive time.
Single choiceOne option from a list of predefined values. Can be used as a scored quiz question.Status, category, yes/no.
Multiple choiceSeveral options from a list of predefined values.Tags, areas of interest.
FileThe user uploads one or more files.Attachments, documents, photos.
SignatureThe user signs — drawn or via BankID.Agreements, approvals.
Map locationA location picked on a map. Can be locked to the device's position or a given address, with optional pin icon or pin image.Reported location, meeting point.
Image annotationThe user draws/marks on an uploaded image.Damage inspections, proofreading marks.
Page linkLink to a page in an applet.Direct link to related content.
Identification fieldComposite field that names the response. See Identification fields.Show form responses with descriptive names instead of IDs.
UserReference to an applet user. Can grant the picked person access to the response.Assigned owner, case owner.
Created byRead-only — records the user who created the response.Traceability.
Modified byRead-only — records the user who last modified the response.Traceability.
Unique IDRead-only — automatically generated ID for the response.Reference number.
Sequence numberCounter that increments by 1 per new response. Starting value can be set. Cannot be changed once responses exist.Case numbers, receipt numbers.
CalculatedValue computed automatically from other fields.Sums, calculations.
ImageStatic image shown in the form (not an input).Illustrations, instruction images.
Text (info)Static info text with formatting (not an input).Instructions, section headings, help text.

Basic field settings

Every field has a Name (required) and most have Description, Default value, and a Settings panel:

SettingDescription
Required fieldThe user must fill in the field to submit the form.
List fieldShow the field in lists of form responses. Not all field types can be listed.
Searchable fieldMake the field searchable in lists and search widgets.
Allow editWhen on, the user can edit the field after the response has been submitted.
Identification fieldMarks the field as an identification field — the field is used to name the response in lists and breadcrumbs.

Some field types have additional settings:

  • Text and Multi-line text: minimum and maximum character count.
  • Numeric: min/max value, Threshold values with color coding, and an optional Dynamic threshold field that pulls values from another field.
  • Single choice and Multiple choice: list of predefined values that you add, order, and optionally pre-select.
  • Date and Date/time: default value can be a fixed date, or use the Current date/time toggle to always use the current moment.
  • Sequence number: Starting number for the counter. Locked once the form has its first response.
  • User: pin to a specific user group and turn on Assign permissions to selected user so that the picked person automatically gets read/write access to their own response.
  • Signature: pick signing methods — BankID, Drawn signature, or both.
  • Map location: turn on Center map on device location or set a fixed address, pick a pin icon, icon color, and optional pin image.

Subforms

A subform is a form attached to another form. For each form response in the parent form, the user can create one or more responses in the subform.

Subforms can in turn have their own subforms. There's no limit on depth — you can build form trees as deep as your scenario needs.

Create a subform

  1. Open the parent form's menu in the field editor.
  2. Pick SubformsCreate subform.
  3. Name it and configure it like a regular form — it gets its own field groups, fields, permissions, notifications, and PDF template.

When to use subforms

  • Inspection → Defects — each inspection has multiple recorded defects.
  • Order → Order lines — an order has multiple product lines.
  • Project → Activities → Time entries — three levels where time entries belong to an activity that belongs to a project.
  • Patient → Visits → Test results — each visit has multiple test results.

TIP

Set permissions on the subform separately. You can let everyone write in the parent form but limit the subform to a specific role.

Form properties

Open Properties from the form menu.

Basic info

SettingDescription
NameThe form's name. Required.
DescriptionInternal description.
CreatedDate the form was created. Read-only.

Confirmation

The texts shown after the user submits the response.

SettingDescription
Confirmation headerHeader on the confirmation view. Required.
Confirmation textBody text on the confirmation view.

Empty state

Shown in lists when there are no responses yet.

SettingDescription
HeaderHeader shown when the list is empty.
TextBody text under the header.
Button labelLabel on the button that leads to creating a new response.

Style

SettingDescription
IconIcon representing the form in lists and widgets.

Advanced

SettingDescription
Mirror withTie this form to a reference form so the structure is inherited. See Mirror forms.
Reference formMarks the form as a template that other forms can mirror. See Mirror forms.
Skip permissions check on exact search on idAllows lookup of a specific form response by id even without read permission on the rest.
Anonymous formWhen on, no responses are tied to the user. Cannot be changed once the form has responses.
Only allow one form response per applet userLimits the form so each user can only respond once.

WARNING

Anonymous form and Only allow one form response per applet user are locked once the form has its first response. Decide them before publishing.

Permissions

Form permissions control who sees, writes, and deletes responses — at the form level and per field group.

See Form Permissions for the full settings.

Notification rules

Notification rules send an email (and an in-app notification) to a recipient when a form response is created or updated. You can combine several rules and limit each one with conditions.

See Form Notification Rules for recipient types, conditions, and examples.

PDF print template

Each form can have a template that generates a PDF for every form response — with fixed layout and dynamic placeholders that are replaced with field values at render time.

See Form PDF Print Template for the editor, all placeholders, and examples.

Mirror forms

You can build the structure once in a reference form and have other forms mirror it. Mirrored forms inherit the field setup automatically and update when the reference changes.

See Mirror Forms with Reference Forms for how it works and common use cases.

Example

Scenario: You're building an inspection app where each inspection has several recorded defects, a signature from the responsible party, and generates a PDF emailed to the operations manager.

  1. Create the Inspection form with field groups General (date, location, inspector), Result (Single choice Approved/Note), and Signature (signature field with BankID).
  2. Mark Location as an Identification field so inspections show descriptive names in lists.
  3. Create the subform Defects with the fields Description (multi-line text), Severity (Single choice), and Photo (file upload).
  4. Add a notification rule: User group = Operations managers. Add the condition Result = Note so the managers only get notified when there's something to act on.
  5. Open the Print template and insert the form's fields and {subform:N} for the defect list.
  6. Set Permissions: every employee can write, but only the Operations managers group can delete.

The result: an inspector fills in the form, adds defects as a subform, signs — and if there were notes, a notification with a PDF attachment goes to the operations managers.

Tips

TIP

Set an Identification field on at least one field early — otherwise responses show as anonymous IDs in lists and breadcrumbs.

TIP

For recurring structures, use Mirror with against a Reference form. Mirrored forms update automatically when you adjust the reference.

TIP

Subforms are powerful but can make the form heavy. Use them where there's a real one-to-many relationship; for a handful of fixed values, additional field groups in the same form are enough.

Common mistakes

WARNING

Anonymous form and Only allow one form response per applet user are locked after the first response. Decide them before publishing.

WARNING

A User field doesn't grant permissions automatically — turn on Assign permissions to selected user in the field's settings if you want the picked person to be able to see their own response.

WARNING

PDF template placeholders are case-sensitive and must match exact group and field names. If you rename a group or field, you must update the template — always use the insert menu instead of typing placeholders by hand.

WARNING

Notification rules without conditions fire for every saved response. For high-volume forms, add conditions so that only relevant events trigger notifications.