Skip to content

Mappings: Forms, Properties, and Template Tokens

A requester fills out an intake form, and a fully drafted contract appears in the repository with the governing law, the contract value, and the party name already in the document. They never touched the template. For that to work, every answer on the form has to reach the right token in the Word document, and the chain that carries it has one link in the middle that most people miss: the contract property.

This article traces that chain end to end so you can wire a form to a template and know where a value goes wrong when it shows up blank.

The chain: form field to property to token

Section titled “The chain: form field to property to token”

A template token does not read from a form field directly. The value travels through a contract property in the middle:

How one mapped value flows
On the form
Governing Law England & Wales
Lands on
Contract property Governing law
The single place the value lives
From there it
Document text Fills the template variable

The property fills the matching variable in the generated document, so the value appears in the contract text.

Naming Builds names as a token

The value can be used as a naming token to build the entry title, contract name, or file name.

Later Amended by the owner

The contract owner (or anyone with access) can change the property afterwards, like any other property.

The property is the bridge The one place the value can change later

Each link does one job:

  • Form field captures what the requester types or selects.
  • Contract property is where the value lands on the generated contract. It is the single source of truth: it feeds the document, drives filtering and reporting in the repository, and stays editable by the contract owner afterward.
  • Template token is the markup in the .docx that Pactly replaces with the value at generation time.

The property in the middle is deliberate. Because the value lands on a property first, the same answer can fill the document, be searchable in the repository, and be amended later, all from one place. (For the form-side half of this chain, see Field Mappings and Naming.)

Pactly resolves each template token by property key, not by field. A variable or value map that carries a .property reference draws from whichever property holds that key, and that property was filled by the form field mapped to it. So a text variable like `{{governingLaw}}` reads the Governing Law property, which the form’s governing-law field wrote to:

form field → Governing Law property → {{governingLaw}} in the document

If a token has no value at generation time, Pactly does not fail. It renders the placeholder marker `[●]` (a bullet in brackets) in the output and logs a warning. A contract that comes out with `[●]` where a name should be almost always means a broken link in this chain: an unmapped field, a property key that does not match, or a typo in the token.

Value maps: turning a selection into document text

Section titled “Value maps: turning a selection into document text”

A plain variable writes the value through unchanged. But a dropdown answer is often a short label that should render as longer, formatted text. A requester picks Net 30; the document should read “payment is due within thirty (30) days of invoice.” That translation is a value map: a lookup table on the template that pairs each choice label (what the requester selects) with a replace value (what appears in the document). It is referenced in the .docx with the vm tag:

Payment terms: {{vm PaymentTerms}}.

When the form is submitted, Pactly matches the selected label against the value map’s choices and substitutes the matching replace value. The match is by exact label, so the option text on the form field, the property’s option list, and the value map’s choice label must all read identically. A value map can also be tied to a property, so the selection flows form field → property → vm tag. A selection that matches no choice label resolves to `[●]` like any other unmapped value.

Wiring a form to a template is two-sided: map the field to a property on the form, and point the token at the same property on the template. The form half is done in the form builder; the template half is done in the Word add-in where the template is authored.

Step 1 of 4
1
Map the form field to a property

In the form builder, open the field and set its Contract property selector to the property this answer should fill. The selector only lists properties whose type is compatible with the field.

2
Point the template token at the same property

In the Word add-in template manager, open the variable or value map for the matching token and set its property to the same one. This is the link that lets the token read the property by key.

3
Confirm the label text matches (dropdowns only)

For a value map, make sure the form field option labels, the property options, and the value map choice labels all read identically. The match is by exact label.

4
Test by generating a contract

Submit the form and open the generated Draft contract. Any token that resolved to [●] points to a broken link: an unmapped field, a mismatched property key, or a label that does not match a value map choice.

Step 1 of 4

A field can reach a template by more than one route. The routes have a defined order, and when two apply to the same value, the property-based one wins:

RouteWhat it doesWhen it applies
Property-based (current)Field maps to a property; a variable or value map with that property set reads it by key. The value is also recorded on the contract.The standard path. Applied last, so it overwrites a legacy mapping for the same value.
Legacy directField maps straight to a template variable or value map id, with no property in between.Older forms only. Still works, but the value is not recorded on the contract.
Property-onlyField maps to a property that no token reads.Capturing metadata for reporting (a cost center, an internal owner) without it appearing in the document text.

If you maintain an older form, migrate its direct mappings to property-based ones so the value is also recorded on the contract and stays editable.

When a generated contract shows `[●]` or a clause is missing, walk the chain in order:

  1. Is the form field mapped to a property? No mapping, no value.
  2. Does the property key match what the token expects? The token resolves by property key, so a renamed or mismatched key breaks the link.
  3. For a dropdown, do the labels match exactly? A value map matches the selected label against its choices character for character. Any drift produces `[●]`.
  4. Is the token spelled correctly? A typo in the variable id (`{{governinglaw}}` vs `{{governingLaw}}`) is never validated until a document is generated, so it surfaces only as `[●]` in the output.

Nothing in this chain is validated before generation, so the generated Draft is your test harness. Generate one contract from the form and read the output before sharing the form widely.

Chat with us

We typically reply within a few minutes