Fields
What this page is — the tab that defines the questions every document of a type asks its author: each field's label, machine name, datatype, grouping, defaults, merge source, requiredness and visibility.
What it is for — so the template's wording has values to draw on, and the author is asked for exactly what the document needs.
The problem it solves — authors are asked for the wrong things, or not asked at all, and the template renders blanks where values belong.
Route: /org/papers/designer/<type> → Fields · Permission:
Create/edit/retire project types and template versions..
1. What it is
A field has two names, and confusing them is the most common way to break a type:
| Label | Name (machine) | |
|---|---|---|
| Who sees it | The author, on the form | The template, as {{contract_value}} |
| Example | Contract Value | contract_value |
| Rules | Free text | Lowercase letters, digits, underscores; unique |
| Change it freely? | Yes | No — every template token using it silently goes blank |
Row order is form order. Fields with the same Group render together as one card on the document form; ungrouped fields land in Details.
| Datatype | The author gets | Rendered in the document as |
|---|---|---|
| Text | Single-line box | As typed |
| Long Text | Large box with a dictation mic | As typed |
| Number | Numeric box | Formatted number |
| Currency | Amount | Formatted amount |
| Date | Date picker | Formatted date |
| Yes/No | Checkbox | Yes / No |
| Select | Dropdown of your options | The option's label |
| Party | Participant box | The party |
| Line Items | Editable rows table | A Table block in the template |
2. Why you would use it
- Blanks become questions. A template with typed blanks produces a different document every time; a field with a datatype produces the same one.
- Merge sources remove re-typing. A field mapped to
contact.companyarrives filled when a document is created from a CRM record. - Conditional visibility keeps long forms short. A non-solicitation period only appears when non-solicitation is ticked.
- Datatypes feed everything downstream. AI auto-fill types its suggestions from them, currency fields feed value-based approval and the signatory matrix, and dates feed obligations and expiry.
3. How a field spreads
| Surface | Uses |
|---|---|
| The document form | Label, datatype, group, default, required, conditions |
| The template | {{name}} tokens, Dynamic Field and Table blocks |
| Auto-fill from source | Label, datatype and select options, to type its suggestions |
| Decision rules and the approval guardrail | Numeric values, to pick an approval workflow |
| Merge sources | Pre-fill at creation |
4. Step by step
- Add field — appended as
new_field,new_field_2, … - Expand the row. Set Label, then Name, then Datatype.
- Add a Group, a Default value or a Merge source as needed.
- Tick Required on submit for anything the approval or the final PDF cannot do without.
- For Select fields, add options; for Line Items, add columns.
- Optionally tick Conditional visibility and build the condition.
- Save draft, then Publish.
5. Field reference
| Setting | Rules | Notes |
|---|---|---|
| Label | Free text | Write it as a question a non-lawyer can answer |
| Name | Lowercase letters, digits, underscores; unique within the type | Duplicates show "Duplicate field names: … — names must be unique." and Save draft is blocked |
| Datatype | One of the nine in §1 | Changing it clears type-specific settings — options and columns |
| Group | Free text | Same group = same card on the form |
| Merge source | namespace.key | See below. Shows as an auto: … tag on the form, and stays overridable |
| Default value | Matches the datatype | Used when no merge source applies |
| Required on submit | Checkbox | Drafts may stay incomplete. See the caveat below |
| Options (Select) | Value / label pairs | monthly / Monthly |
| Columns (Line Items) | Machine name, label, per-column datatype | Rendered by a Table block |
| Conditional visibility | A condition on other fields | Operators eq, neq, in, not_in, gt, gte, lt, lte, empty, not_empty, combined in ALL / ANY groups |
Template tokens match {{ + lowercase letters, digits and underscores + }}. A name like ContractValue
or contract-value never binds, and a token naming no field renders as nothing — no error, just a blank
in the finished document.
Merge source namespaces
| Namespace | Fills from |
|---|---|
org.* | Your organisation |
contact.* | The linked CRM contact |
order.* | The linked order |
deal.* | The linked deal — only when the document is created from a deal |
product.* | The linked product |
employee.* | The linked employee |
A merge source fills a field only when the document is created from a linked record — by a generation trigger, for instance. Created by hand from New Document, there is no record to read.
Required on submit — the caveat
The check runs only on a lifecycle transition whose action is literally submit. On a type whose first
transition has any other action, required fields are never enforced. Hidden conditional fields are never counted.
6. Worked example
A legal operations lead builds the fields for a Consulting Agreement.
| Label | Name | Datatype | Group | Other |
|---|---|---|---|---|
| Client name | client_name | Party | Parties | Merge source contact.company |
| Consultant | consultant_name | Party | Parties | Required |
| Effective date | effective_date | Date | Term | Required |
| Fee basis | fee_basis | Select | Fees | Options day_rate / Day rate, fixed / Fixed fee |
| Day rate | day_rate | Currency | Fees | Visible when fee_basis eq day_rate |
| Includes non-solicitation? | includes_non_solicit | Yes/No | Terms | — |
| Non-solicit period (months) | non_solicit_months | Number | Terms | Visible when includes_non_solicit eq Yes; default 6 |
The template reads "The Consultant shall be paid {{day_rate}} per day" inside a Conditional block on
the same condition, so fixed-fee agreements never mention a day rate.
They rename Client name's label to Client the next day — safe. They also rename its name to client,
save, and the preview shows a blank where the client belonged: the template still says {{client_name}}.
They change it back.
7. The admin contract
| Must be true | Where | What breaks without it |
|---|---|---|
| Every template token names an existing field | Template builder | Blanks in the rendered document |
| Names are lowercase and unique | This tab | Tokens never bind; Save draft refuses |
The draft's outgoing transition action is submit | Lifecycle | Required fields are never enforced |
| Linked records exist for merge sources | Generation triggers, CRM, orders | auto: fields arrive empty |
| The type is published | Header | New fields apply to nothing |
8. Downstream
| When you… | Then |
|---|---|
| Publish new fields | New documents get them; existing documents keep their version's fields |
| Rename a name | Every token and condition using the old name stops working |
| Change a datatype | Options or columns are cleared |
| Make a field required | Enforced on the next submit of new documents (with the caveat above) |
9. Don't confuse this with…
| Smart fields | Values AI extracts from a finished document. These are questions asked of the author |
| Filling in the fields | The author's side of the same fields |
| Template builder | Where a field's value is placed |
| Zones | Regions of a scanned page that zonal extraction reads into these fields |
10. Troubleshooting
| Symptom | Cause |
|---|---|
| A blank where a value belongs | The token names no field, the name has a capital or hyphen, or the field is empty |
| Save draft does nothing | Duplicate field names — read the red banner |
| Options disappeared | The datatype was changed, which clears them |
An auto: field is empty | The document was not created from a linked record |
| Authors can submit with a required field empty | The transition is not named submit |
| An existing document lacks the new field | It keeps the version it was created from |