Skip to content

Field Reference (Codex)

This codex defines standard field names used across all template types. Using these consistent names ensures your templates work reliably and can be shared between matter types.


These fields exist in every matter type. Templates using only these fields can be shared across all practice areas.

Your main client’s details. The client.* fields always refer to the first (or only) client.

FieldExampleDescription
client.full_nameDwight Kurt SchruteComplete legal name
client.surnameSchruteFamily name
client.given_nameDwight KurtAll first/middle names (canonical key)
client.given_namesDwight KurtAlias for given_name (legacy templates)
client.first_nameDwightFirst given name only (used by newer templates)
client.titleMrTitle (Mr, Mrs, Ms, Dr, etc.)
client.addresseeMr D SchruteFor envelope/letter address
client.salutationMr SchruteAfter “Dear” in letters
client.street_addressSchrute Farms, Rural Route 6Street line
client.suburbScrantonSuburb/city
client.stateNSWState abbreviation
client.postcode2000Postal code
client.address_single_lineSchrute Farms, Rural Route 6, Scranton NSW 2000Full address on one line
client.email[email protected]Email address
client.phone0400 123 456Phone number
client.mobile0400 123 456Mobile (alias for phone)
client.occupationAssistant Regional ManagerProfession
client.dob1970-01-20Date of birth

Matters can have multiple clients (e.g., couples doing joint Wills, joint property purchases). When a matter has multiple clients, indexed fields are automatically generated alongside the primary client.* fields.

Each additional client gets their own numbered set of fields:

FieldExampleDescription
client1.full_nameDwight Kurt SchruteFirst client (same as client.*)
client1.surnameSchruteFirst client surname
client1.given_namesDwight KurtFirst client given names
client1.email[email protected]First client email
client2.full_nameAngela Noelle MartinSecond client
client2.surnameMartinSecond client surname
client2.given_namesAngela NoelleSecond client given names
client2.email[email protected]Second client email
client3.full_nameThird client (and so on)

All standard client.* fields are available on each indexed client (client1.phone, client2.street_address, etc.).

When a client’s postal address has been verified through the address picker, the engine projects these read-only keys alongside the editable address fields. They’re emitted under both the bare client.* prefix and each indexed client1.*, client2.* prefix.

FieldExampleDescription
client.address_verifiedtrue / ""Verified flag. "" (engine-blanked from "false") when not verified.
client.address_verified_sourceapple_maps / manualHow the address was verified.
client.address_verified_at2026-05-22T03:14:00ZISO-8601 UTC timestamp of verification.
client.address_verified_fingerprintv1:a1b2c3d4e5f60718Stable hash of the verified address parts. Used at render time to detect drift.
client.verified_latitude-33.8688100Latitude (degrees, 7 dp) for the verified address.
client.verified_longitude151.2092900Longitude (degrees, 7 dp).

If the form’s address parts no longer match the verified fingerprint at render time, the engine inserts a [DRIFT: …] marker in the rendered document so the practitioner can confirm before signing.

These are auto-generated when the matter has clients:

FieldExampleDescription
clients.count2Number of clients on the matter
clients.is_coupletrueTrue if exactly 2 clients
clients.is_multitrueTrue if more than 1 client
clients.namesDwight Schrute & Angela MartinAll names joined with ” & “
clients.surnamesSCHRUTE & MARTINAll surnames in CAPS

Conditional sections for couples:

{%p if clients.is_couple == 'true' %}
We act for {{ client1.full_name }} and {{ client2.full_name }} jointly.
{%p else %}
We act for {{ client.full_name }}.
{%p endif %}

Listing all client names:

{%p if clients.is_multi == 'true' %}
Our clients: {{ clients.names }}
{%p else %}
Our client: {{ client.full_name }}
{%p endif %}
ClientsFolder Name
1000109 - SCHRUTE Dwight - Will
2000109 - SCHRUTE Dwight & MARTIN Angela - Will
3+000109 - SCHRUTE Dwight & Others - Will

Information about the file itself.

FieldExampleDescription
matter.number2025-00042Unique reference number
matter.nameSCHRUTE - Sale of Beet FarmShort description
matter.typeSale of LandMatter category
matter.re_lineSale of Schrute FarmsReference line for letters
matter.person_actingJim HalpertSolicitor with carriage
matter.person_assistingPam BeeslySupport staff
matter.propertySchrute Farms, Rural Route 6, ScrantonProperty description (from CRM)
matter.sc_packet_noSC-2025-0042Safe custody packet number
matter.date_created2025-01-15When file was opened
matter.year_created2025Year opened

When matter.type is a dropdown (select) field in the form, Certum Draft automatically copies its value to matter.name when changed. This enables smart folder naming without extra data entry.

Template Packmatter.typematter.nameFolder Result
Sale of LandHidden, default “Sale”User enters description000107 - SCHRUTE Dwight - Sale of Schrute Farms
EstatesHidden, default “Probate”User enters description000108 - PENDRAGON Arthur - Estate of Arthur Pendragon
Wills/POA/EGDropdown with optionsAuto-filled from dropdown000109 - SCHRUTE Dwight - Will, POA & EG

Users can still manually edit matter.name after auto-fill if they want something different.

Your firm’s details for letterheads and signature blocks. These are conventional names — the app does not auto-populate them from a global setting. Define them in each template’s matter.json (typically as fields with a default_value) or hard-code them into the precedent.

FieldExampleDescription
firm.nameDunder Mifflin LawFirm’s full name
firm.street_address1725 Slough AvenueOffice street
firm.suburbSydneyOffice suburb
firm.stateNSWOffice state
firm.postcode2000Office postcode
firm.phone02 9999 0199Main phone
firm.fax02 9999 0198Fax number
firm.email[email protected]General email
firm.abn12 345 678 901ABN
firm.dx_addressDX 123 SydneyDX address

The individual solicitor handling the matter. practitioner.full_name is auto-mapped by the engine from matter.person_acting, so you can drive both off the one form field.

FieldExampleDescription
practitioner.full_nameJames Duncan HalpertSolicitor’s name (auto-mapped from matter.person_acting)
practitioner.titleSenior AssociatePosition
practitioner.email[email protected]Direct email
practitioner.phone02 9999 0101Direct line
practitioner.mobile0400 123 456Mobile

Current date fields, populated automatically by the engine when the document is generated. You don’t need to declare these in matter.json.

FieldExampleDescription
today.date27 January 2025Current date (same as today.date_long)
today.date_long27 January 2025Current date (long form)
today.date_short27/01/2025Current date (DD/MM/YYYY)
today.date_iso2025-01-27Current date (ISO 8601)
today.day27Day of month
today.monthJanuaryMonth name
today.year2025Year

The engine also injects current_date (an alias for today.date_long) for legacy templates.


Boolean fields control conditional text in your templates. Name them with an is_ or has_ prefix so the intent is obvious in conditionals: property.is_strata, sale.is_auction, property.has_pool.

PatternExampleMeaning
*.is_*sale.is_auction, property.is_strataYes/no question about a state
*.has_*property.has_pool, estate.has_willYes/no question about possession
Plaincooling_off.expired, exchange.by_agentSingle-word past-tense flag

Use Jinja’s not operator directly:

{%p if not sale.is_auction %}
Private treaty terms...
{%p endif %}

Additional fields for property transactions.

FieldExampleDescription
property.addressSchrute Farms, Rural Route 6, Scranton NSW 2000Full property address
property.re_lineSchrute Farms, Rural Route 6, ScrantonShort form for letters
property.street_addressRural Route 6Street line only
property.suburbScrantonProperty suburb
property.stateNSWProperty state
property.postcode2000Property postcode
property.lot_number15Lot number
property.dp_number123456DP/SP number
property.title_reference15/123456Title reference (Folio)
property.registered_planDP 123456Full plan reference
property.councilScranton Regional CouncilLocal council
FieldWhat It Controls
property.is_strataStrata/unit title warnings
property.has_poolPool compliance requirements
property.has_illegal_worksUnapproved works disclosure
property.survey_availableSurvey report exists
FieldExampleDescription
transaction.sale_price750000Sale/purchase price
transaction.deposit_amount75000Deposit amount
transaction.contract_date2025-01-27Contract date
transaction.exchange_date2025-01-28Exchange date
transaction.settlement_date2025-03-15Settlement date
transaction.settlement_period42Days to settlement
FieldWhat It Controls
transaction.simultaneous_purchaseCoordinating sale with purchase
transaction.deposit_releaseEarly deposit release
transaction.christmas_settlementHoliday period settlement
transaction.vendor_renting_backPost-settlement rental
transaction.vacant_possessionProperty empty at settlement
FieldWhat It Controls
sale.is_auctionAuction vs private treaty
sale.is_estateDeceased estate sale

These follow the same pattern as client.*:

CategoryExample FieldDescription
vendor.*vendor.full_nameThe seller (sale matters)
purchaser.*purchaser.full_nameThe buyer (purchase matters)
os.*os.business_nameOther side’s solicitor
agent.*agent.full_nameReal estate agent

For deceased estate matters.

FieldExampleDescription
deceased.full_nameArthur PendragonFull name
deceased.surnamePendragonSurname
deceased.given_namesArthurGiven names
deceased.titleKingTitle
deceased.date_of_death2025-01-01Date of death
deceased.date_of_birth1960-06-15Date of birth
deceased.place_of_deathCamelot HospitalPlace of death
deceased.last_addressCastle Camelot, Camelot NSW 2001Last known address
deceased.occupationKingOccupation
deceased.marital_statusMarriedMarital status at death
FieldExampleDescription
estate.value_gross500000Gross estate value
estate.value_net450000Net estate value
estate.date_of_will2020-05-15Date of will
FieldWhat It Controls
estate.has_willTestate vs intestate
estate.probate_grantedProbate status
estate.has_real_propertyReal estate in estate
FieldExampleDescription
executor.full_nameSir LancelotExecutor’s name
executor.addressRound Table, Camelot NSW 2001Executor’s address
executor.relationshipKnight of the Round TableRelationship to deceased
administrator.full_nameSir GalahadAdministrator’s name

For will preparation matters.

FieldExampleDescription
testator.full_nameRobin of LocksleyFull legal name
testator.surnameLocksleySurname
testator.given_namesRobinGiven names
testator.titleMrTitle
testator.dob1965-03-15Date of birth
testator.occupationOutlawOccupation
testator.marital_statusMarriedMarital status
testator.addressSherwood Forest, Nottingham NSW 2100Address
FieldWhat It Controls
testator.is_marriedMarriage-related clauses
testator.has_childrenChildren provisions
testator.has_stepchildrenStepchildren provisions
FieldExampleDescription
beneficiary_1.full_nameMaid MarianFirst beneficiary
beneficiary_1.relationshipSpouseRelationship to testator
beneficiary_1.share50%Share of estate
beneficiary_2.full_nameRobin JrSecond beneficiary
beneficiary_2.relationshipSonRelationship
beneficiary_2.share25%Share
beneficiary_3.full_nameFriar TuckThird beneficiary
beneficiary_3.relationshipFriendRelationship
beneficiary_3.share25%Share
executor_1.full_nameLittle JohnFirst executor
executor_1.relationshipFriendRelationship
executor_2.full_nameWill ScarletSubstitute executor

For commercial transactions.

FieldExampleDescription
company.nameSherwood Enterprises Pty LtdCompany name
company.acn123 456 789ACN
company.abn12 345 678 901ABN
company.registered_address1 Forest Road, Sherwood NSW 2100Registered office
company.director_1Robin HoodFirst director
company.director_2Little JohnSecond director
company.secretaryAlan-a-DaleCompany secretary
FieldWhat It Controls
company.is_trusteeActing as trustee
transaction.is_gst_applicableGST provisions
transaction.has_financeFinance conditions

This matrix shows which universal fields exist across the main matter types:

FieldSale of LandEstatesWills/POA/EG
matter.numberYesYesYes
matter.nameYesYesYes (auto-filled)
matter.typehiddenhiddenYes (dropdown)
matter.re_lineYes
matter.person_actingYesYesYes
matter.person_assistingYesYesYes
client.full_nameYesYesYes
client.surnameYesYesYes
client.addresseeYesYesYes
client.salutationYesYesYes
client.street_addressYesYesYes
client.suburbYesYesYes
client.stateYesYesYes
client.postcodeYesYesYes
client.emailYesYesYes
client.phoneYesYesYes
firm.nameYes
practitioner.full_nameYesYes

Implementing Universal Fields in matter.json

Section titled “Implementing Universal Fields in matter.json”

Every matter.json should include these blocks as a minimum to ensure cross-template compatibility:

{
"blocks": [
{
"name": "Matter Details",
"fields": [
{"key": "matter.number", "label": "Matter Number", "type": "text"},
{"key": "matter.name", "label": "Matter Name", "type": "text"},
{"key": "matter.re_line", "label": "Re Line", "type": "text"},
{"key": "matter.person_acting", "label": "Person Acting", "type": "text"},
{"key": "matter.person_assisting", "label": "Person Assisting", "type": "text"}
]
},
{
"name": "Client",
"fields": [
{"key": "client.full_name", "label": "Full Name", "type": "text"},
{"key": "client.surname", "label": "Surname", "type": "text"},
{"key": "client.given_names", "label": "Given Names", "type": "text"},
{"key": "client.title", "label": "Title", "type": "select",
"options": ["Mr", "Mrs", "Ms", "Miss", "Dr", "Hon"]},
{"key": "client.addressee", "label": "Addressee", "type": "text"},
{"key": "client.salutation", "label": "Salutation", "type": "text"},
{"key": "client.street_address", "label": "Street Address", "type": "text"},
{"key": "client.suburb", "label": "Suburb", "type": "text"},
{"key": "client.state", "label": "State", "type": "select",
"options": ["NSW", "VIC", "QLD", "WA", "SA", "TAS", "ACT", "NT"]},
{"key": "client.postcode", "label": "Postcode", "type": "text"},
{"key": "client.email", "label": "Email", "type": "email"},
{"key": "client.phone", "label": "Phone", "type": "phone"}
]
}
]
}

For multi-client matters, add a second client block with collapsed: true:

{
"name": "Client 2 (Joint)",
"description": "Second client for joint matters",
"collapsed": true,
"fields": [
{"key": "client2.full_name", "label": "Full Name", "type": "text"},
{"key": "client2.surname", "label": "Surname", "type": "text"},
{"key": "client2.email", "label": "Email", "type": "email"},
{"key": "client2.phone", "label": "Phone", "type": "phone"}
]
}

RuleExample
Use lowercaseclient.surname
Use underscores for multi-word fieldsclient.street_address
Use dot notation for categoriesclient. matter. property.
Be descriptivetransaction.settlement_date
Use _single_line suffix for combined fieldsclient.address_single_line
Use is_ prefix for boolean “is this?” fieldsproperty.is_strata
Use has_ prefix for boolean “has this?” fieldsproperty.has_pool
AvoidWhyInstead Use
clientSurnamecamelCase is inconsistentclient.surname
Client_SurnameCapital letters varyclient.surname
SURNAMEAll caps is uglyclient.surname
snameToo abbreviatedclient.surname
nameAmbiguous (whose name?)client.full_name
strataUnclear what it meansproperty.is_strata

  1. Always check the codex first — Use standard names
  2. If a field doesn’t exist — Propose it using the standard format
  3. Be consistent — Same field, same name, everywhere
  4. Use not <field> for negative conditions — Not the legacy *.not_* form
  1. Match the codex field names — Use client.surname not surname
  2. Include all universal fields — Ensures template compatibility
  3. Add matter-specific fields — Using the same naming conventions

This letter works across any matter type because it only uses universal fields:

{{ firm.name }}
{{ firm.street_address }}
{{ firm.suburb }} {{ firm.state }} {{ firm.postcode }}
{{ today.date_long }}
{{ client.addressee }}
{{ client.street_address }}
{{ client.suburb }} {{ client.state }} {{ client.postcode }}
Dear {{ client.salutation }},
Re: {{ matter.re_line }}
Our Ref: {{ matter.number }}
Thank you for your instructions. We confirm we act on your behalf.
Yours faithfully,
{{ practitioner.full_name }}
{{ firm.name }}

Using multi-client fields for a joint Will instruction:

{{ today.date_long }}
{{ client1.full_name }}
{{ client2.full_name }}
{{ client1.street_address }}
{{ client1.suburb }} {{ client1.state }} {{ client1.postcode }}
Dear {{ client1.salutation }} and {{ client2.salutation }},
Re: {{ matter.re_line }}
Our Ref: {{ matter.number }}
We confirm we act for you both in relation to the above matter.
{%p if clients.is_couple == 'true' %}
As discussed, we will prepare mirror Wills for {{ client1.full_name }}
and {{ client2.full_name }}.
{%p endif %}
Yours faithfully,
{{ practitioner.full_name }}
{{ firm.name }}