Fields are the building blocks of your form. They can read data (from a loaded onOffice record), display data (entered by the form user), and write data (to a new or existing onOffice record) when the form is submitted.
This page provides an overview of all available field types and their options. In the Quick Start video “Edit Form & Fields”, you can see the most important features in 5 minutes.
Once you have saved a form, you will find the list of fields under the form settings. Click “Add Field” to create a new field.
You can arrange fields in the desired order using drag and drop. Clicking the pencil icon opens the field settings.
> 💡 Fields can be added multiple times. If you have two identical fields (same field type + field name) in the form, only the last one will be used when the form is submitted.
When creating a field, you first select the field type. This selection determines what the field does and which additional options are available.
| Field type | Module name | Example fields |
|---|---|---|
| Property | estate |
Property type, purchase price, floor area, town, street |
| Address | address |
First name, surname, email, telephone, street |
| Activity / Agent’s Log | agentsLog |
Action type, Action category, Comment |
| Task | task |
Subject, Description, Status, Responsible person |
| Appointment | calendar |
Subject, Start/End, Status, Location |
| Search Criteria | searchcriteria |
Living space from/to, Property type, Region |
| Project | project |
Project name, Status |
> The individual fields available in each module come directly from your onOffice administration. If a field is missing, check in onOffice under Tools → Settings → Administration to see if the field is enabled there.
| Field type | Purpose |
|---|---|
| Heading | Large text as a section heading |
| Description | Longer text with explanations, macro-resolved |
| Break | Separates multi-step forms into steps |
| Separator | Visual line for structuring |
| Link button | Stylish button linking to an external URL |
| Image | Embedded image (URL) |
| Video | Embedded YouTube or Vimeo video |
| Accordion | Expandable section containing any content |
| ChatGPT | AI text generator field |
| Upload file | Multi-file upload field (see below) |
| Download file | Download link for files from the dataset (see below) |
| Dataset connection | Controls the relationship between address & property |
On the “Labels” tab, you define how the field is labelled in the form:
_Vorname, what are you looking for?”.;) that the browser displays as autocomplete suggestions whilst typing.
What pre-fillvalues does a field have? There are four sources, in this order of priority from weakest to strongest:
> Default-Wert ← overridden by ← Wert aus onOffice-Datensatz ← overridden by ← URL-Parameter ← overridden by ← Erzwungener Wert
?modul[feldname]=wert.;.;). The form can only be submitted if the field value matches one of these. For single/multi-select, only these options are displayed.> 🔑 Important for single/multi-select: You must use the internal key names from the onOffice administration — e.g. ind_Schl_2759, not the displayed plain text.
More details: Pre-filling & loading records.
For numeric fields (purchase price, floor area, number of rooms, etc.), there are additional options:
1000 for increments of 1,000 for the purchase price, 0,0001 for 4 decimal places.m², €, kg etc.> 💡 On a smartphone, the numeric keypad is automatically displayed instead of the letter keyboard. Thousand separators (full stops) are inserted automatically.
There are several special options for drop-down lists (property type, contact type, marketing type, etc.):
Instead of the original onOffice labels, you can assign your own labels to the options — e.g. “Yes”/“No” instead of ja/nein, or English translations. You specify the mappings in the field settings for each key.
> 💡 Use case: multilingualism: If you maintain an English/Spanish copy of a form, you can override the key labels for each option here (apartment → Apartamento, villa → Townhouse) — without touching the onOffice administration. More under Multilingual forms.
Don’t want every option to be visible in the form? In Field settings → Further field settings → “Allowed values”, you can define a whitelist — all other options will be hidden.
Format: Key values separated by semicolons — e.g. ind_3673;ind_3675.
Finding key values: Right-click in the form → Inspect → Expand <select> → the <option> tags show data-selectable-data-value (key) + plain text (label).
> 💡 Special case: user fields: For single-select user fields (e.g. “Property manager”), the keys are internal user IDs such as 23, 45. You can only find these using the DevTools Inspect trick — onOffice does not display them in the administration panel.
For fields with many options (e.g. user fields), you can enable a search box to appear when the field is clicked, allowing the visitor to type in values.
By default, a multi-select submit overwrites the existing value in onOffice completely — all existing tags are replaced. This is often undesirable for existing addresses (address duplicate check, see Merge multiple records): a customer who already has “Contact type=Buyer” and fills in a newsletter form should not suddenly only have “Contact type=Newsletter”.
Solution: In the form settings → “Write values” section, enable the option “Add / remove multi-select values”.
> 💡 Difference to Hidden Field Default: A hidden field with a default value only applies to NEWLY created records. The Add/Remove setting also applies to existing records via the duplicate check — exactly what you need for newsletter/tag workflows.
Multiselect fields now display the hierarchy of options (parent/child). If you select a parent element, child elements are automatically ticked — and vice versa.
Fields can automatically complement one another — e.g. a first name field that generates suggestions based on title and surname, or a search profile description field that is automatically compiled from several fields.
Setup: Field settings → Label → Multi-select “Auto-complete” → select other field names from the form. When the source fields are changed, the tag is automatically populated with their values.
📖 More under Calculated fields.
If you add the same field twice in the form (e.g. title at the top and bottom), the later field always takes precedence on submission — even if it is empty. This overwrites the top field with nothing → data loss.
Instead:
Anrede2, Vorname2, Name2, Strasse2 etc. (often to be enabled in onOffice Administration under “Master Data 2”)anrede_2, vorname_2, name_2)> 💡 Master Data 2 fields are disabled by default in many onOffice versions — before using them in the propform form in onOffice, go to Tools → Settings → Administration → Activate Addresses.
Select “Upload file” as the field type in an onOffice module (Address or Property). The visitor can upload one or more files, which go directly to the onOffice record.
Foto, Aushang, Energieausweis, Grundriss etc. — is automatically mapped to the appropriate internal/external tab and the onOffice standard file type. Fallback default: “Internal document”._Name_Vorname or Geldwaeschedoku_Name. For multiple uploads, _1, _2, _3 are automatically appended.> 💡 Address vs. Property: File upload fields in the Address module have fewer options (file name + free text) than in the Property module (all of the above). This is an onOffice API specification.
If a file upload field has a document attribute assigned to it, multi-upload is automatically restricted to one file — onOffice API rule: 1 attribute = 1 file.
Workarounds:
Apple browser quirk: On iPhones, disabled single-select options are not hidden but are displayed greyed out (HTML standard). If you want to avoid this: use “Allowed values” (whitelist) instead of disabling individual options — the disallowed options will then be completely removed from the dropdown.
Very handy for lots of photos or multiple PDF pages:
In the field settings, you can also configure a file field as a download field (for existing files from onOffice) or as hybrid (upload + download).
In the file field settings, tick the “Signature field” box. Instead of the standard file picker, a digital pad is displayed in the form — the visitor signs using a mouse or finger.
_dateipfadAdressfeld or _dateipfadObjektfeld, you can insert the signature into onOffice PDF templates — perfect for tenant self-declarations, emergency authorisations, powers of attorney, etc.> 💡 Related option: Ticking “Prevent email attachments for files from this field” prevents the signature PNG from being attached to the notification email — useful if the signature already appears in the PDF property description and should not be sent twice.
📺 Watch video: 9. Add signature field to form
> 📎 HEIC images from the iPhone are automatically converted to JPEG. > 📎 File size limit: 128 MB per individual file (server-side nginx limit). For larger individual files, the user will receive a server error before the actual upload.
With download fields, you can make files already stored in onOffice available for download to form visitors. Handy for digital data/download rooms.
📺 See video: 12. Downloading files
You can choose from various selectors:
Expose_Name_Vorname.pdfFields in the Search Criteria Module must be explicitly defined as search criteria fields in the onOffice administration; otherwise, they will not be offered by propform.
Fields such as ‘Living space’, ‘Purchase price’ and ‘Number of rooms’ have a From and a To value in search criteria. You can:
?searchcriteria[wohnflaeche__von]=50&searchcriteria[wohnflaeche__bis]=80The “Regional Supplement” multi-select field often has a very extensive tree structure (postcode, districts, regions). In “Alternative” mode, the child elements are not displayed directly in the form, but are automatically activated when the parent element is selected. This keeps the form fast and clear.
Large text serving as a section heading. Macros enabled — e.g. “Enquiry regarding _objektart in _ort”.
Longer explanatory text, usually between fields. Macros enabled. Within descriptions, you can use propform macros such as _pfButton(...) or _pfLink(...) to create buttons and links — see propform macros.
> 💡 You can also embed iFrames in description fields — e.g. a Timum appointment booking iFrame. Useful for integrating external functions directly into the form.
Description fields allow extensive HTML — filtered via HTMLPurifier (XSS-safe, but generously configured):
<strong>, <b>, <em>, <i>, <u>, <small>, <mark>, <sub>, <sup>, <s>, <ins>, <del>, <br>, <hr>, <p>, <h1>–<h6><ul>, <ol> with <li><table>, <thead>, <tbody>, <tr>, <th>, <td> (with border, cellpadding, cellspacing, colspan, rowspan)<a href="..." target="_blank|_self|_top" class="..." type="..."><img src="..." width height alt style><div class style>, <span class style>, <blockquote>, <cite><section>, <nav>, <article>, <aside>, <header>, <footer>, <address>, <figure>, <figcaption><video controls preload poster> with <source src type><iframe src width height title allow allowfullscreen frameborder>style attributes: generously permitted (including !important, vendor prefixes, proprietary properties) — you can set colours, sizes, margins, borders, backgrounds, Flexbox/Grid, transformations, etc.> 🔒 Security: <script> tags and event handlers (onclick=, onload= etc.) are blocked (XSS protection). iFrames are only permitted via HTTPS. This means you cannot inject arbitrary JavaScript code.
Macro resolution in description fields: fully active — you can use _calculate(IF(...)) for conditional content, dynamically embed fields from the dataset, or use _pfGetSearchCriteriaInformation for search profile tables.
Splits the form into multi-step steps. Per break field:
Simple visual line. No content, for structure only.
Stylish button that links to an external URL. You can append currently loaded IDs/UUIDs to the URL — e.g. “Jump to the follow-up form with the newly created records”. Options:
Embedded image via external URL.
Embedded YouTube or Vimeo video. For Vimeo, the privacy hash parameter can also be specified.
Expandable section. Content consists of any other fields. Options:
Special field for AI text generation — the visitor enters data, ChatGPT generates the text and writes it into an onOffice field. This is configured in the form settings under “ChatGPT text generation”.
If your form creates or edits both an address and a property at the same time, you need a link between the two — e.g. “Owner”, “Buyer”, “Tenant”, “Prospective buyer”.
In the form settings, you can select a static link. If you need a dynamic link (e.g. dependent on a selection field), add a record link field to the form. It doesn’t matter whether you select the field type “Property” or “Address”.
Possible values:
| Value | Meaning |
|---|---|
estate:address:owner |
Property ↔ Owner |
estate:address:buyer |
Property ↔ Buyer |
estate:address:renter |
Property ↔ Tenant |
estate:address:tenant |
Property ↔ Resident/User |
estate:address:contactPerson |
Property ↔ Estate agent as contact person |
estate:address:contactPersonAll |
Property ↔ Contact person (all) |
estate:address:interested |
Property ↔ Prospective buyer |
calendar:address |
Appointment ↔ Address |
calendar:estate |
Appointment ↔ Property |
agentsLog:address |
Activity ↔ Address |
agentsLog:estate |
Activity ↔ Property |
address:estate:tipp |
Referrer ↔ Property |
address:searchcriteria |
Address ↔ Search criterion |
address:estate:offer |
Address ↔ Property listing |
address:estate:contacted |
Contacted address ↔ Property |
project:address |
Project ↔ Address |
project:estate |
Project ↔ Property |
project:agentslog |
Project ↔ Activity |
project:calendar |
Project ↔ Appointment |
project:task:customer |
Project ↔ Task (customer database) |
task:address |
Task ↔ Address |
task:estate |
Task ↔ Property |
> 💡 You will often want to combine the link field with “Forced value” + “Hide field” so that the visitor cannot see it, but the link is still established.