Primary Field
What the user sees and sets in the form.
sale.is_auction = YES
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.
| Field | Example | Description |
|---|---|---|
client.full_name | Dwight Kurt Schrute | Complete legal name |
client.surname | Schrute | Family name |
client.given_names | Dwight Kurt | All first/middle names |
client.given_name | Dwight Kurt | Alias for given_names |
client.title | Mr | Title (Mr, Mrs, Ms, Dr, etc.) |
client.addressee | Mr D Schrute | For envelope/letter address |
client.salutation | Mr Schrute | After “Dear” in letters |
client.street_address | Schrute Farms, Rural Route 6 | Street line |
client.suburb | Scranton | Suburb/city |
client.state | NSW | State abbreviation |
client.postcode | 2000 | Postal code |
client.address_single_line | Schrute Farms, Rural Route 6, Scranton NSW 2000 | Full address on one line |
client.email | [email protected] | Email address |
client.phone | 0400 123 456 | Phone number |
client.mobile | 0400 123 456 | Mobile (alias for phone) |
client.occupation | Assistant Regional Manager | Profession |
client.dob | 1970-01-20 | Date 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:
| Field | Example | Description |
|---|---|---|
client1.full_name | Dwight Kurt Schrute | First client (same as client.*) |
client1.surname | Schrute | First client surname |
client1.given_names | Dwight Kurt | First client given names |
client1.email | [email protected] | First client email |
client2.full_name | Angela Noelle Martin | Second client |
client2.surname | Martin | Second client surname |
client2.given_names | Angela Noelle | Second client given names |
client2.email | [email protected] | Second client email |
client3.full_name | … | Third client (and so on) |
All standard client.* fields are available on each indexed client (client1.phone, client2.street_address, etc.).
These are auto-generated when the matter has clients:
| Field | Example | Description |
|---|---|---|
clients.count | 2 | Number of clients on the matter |
clients.is_couple | true | True if exactly 2 clients |
clients.is_multi | true | True if more than 1 client |
clients.names | Dwight Schrute & Angela Martin | All names joined with ” & “ |
clients.surnames | SCHRUTE & MARTIN | All 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 %}| Clients | Folder Name |
|---|---|
| 1 | 013549 - SCHRUTE Dwight - Will |
| 2 | 013549 - SCHRUTE Dwight & MARTIN Angela - Will |
| 3+ | 013549 - SCHRUTE Dwight & Others - Will |
Information about the file itself.
| Field | Example | Description |
|---|---|---|
matter.number | 2025-00042 | Unique reference number |
matter.name | SCHRUTE - Sale of Beet Farm | Short description |
matter.type | Sale of Land | Matter category |
matter.re_line | Sale of Schrute Farms | Reference line for letters |
matter.person_acting | Jim Halpert | Solicitor with carriage |
matter.person_assisting | Pam Beesly | Support staff |
matter.property | Schrute Farms, Rural Route 6, Scranton | Property description (from CRM) |
matter.sc_packet_no | SC-2025-0042 | Safe custody packet number |
matter.date_created | 2025-01-15 | When file was opened |
matter.year_created | 2025 | Year 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 Pack | matter.type | matter.name | Folder Result |
|---|---|---|---|
| Sale of Land | Hidden, default “Sale” | User enters description | 013547 - SCHRUTE Dwight - Sale of Schrute Farms |
| Estates | Hidden, default “Probate” | User enters description | 013548 - PENDRAGON Arthur - Estate of Arthur Pendragon |
| Wills/POA/EG | Dropdown with options | Auto-filled from dropdown | 013549 - 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.
| Field | Example | Description |
|---|---|---|
firm.name | Dunder Mifflin Law | Firm’s full name |
firm.street_address | 1725 Slough Avenue | Office street |
firm.suburb | Sydney | Office suburb |
firm.state | NSW | Office state |
firm.postcode | 2000 | Office postcode |
firm.phone | 02 9999 0199 | Main phone |
firm.fax | 02 9999 0198 | Fax number |
firm.email | [email protected] | General email |
firm.abn | 12 345 678 901 | ABN |
firm.dx_address | DX 123 Sydney | DX address |
The individual solicitor handling the matter.
| Field | Example | Description |
|---|---|---|
practitioner.full_name | James Duncan Halpert | Solicitor’s name |
practitioner.title | Senior Associate | Position |
practitioner.email | [email protected] | Direct email |
practitioner.phone | 02 9999 0101 | Direct line |
practitioner.mobile | 0400 123 456 | Mobile |
Current date fields, populated when the document is generated.
| Field | Example | Description |
|---|---|---|
today.date | 2025-01-27 | Current date (ISO) |
today.date_long | 27 January 2025 | Current date (long) |
today.day | 27 | Day of month |
today.month | January | Month name |
today.year | 2025 | Year |
Boolean fields control conditional text in your templates. Certum Draft uses a consistent naming pattern and automatically computes inverse values so you don’t have to.
Primary Field
What the user sees and sets in the form.
sale.is_auction = YES
Inverse Field
Auto-computed. Never shown to user.
sale.not_auction = NO
sale.is_auction to YESsale.is_auction = “true”sale.not_auction = “false”{%p if sale.is_auction %} and {%p if sale.not_auction %} work correctly| Pattern | Primary (User Sets) | Inverse (Auto-Computed) |
|---|---|---|
| Is/Not | sale.is_auction | sale.not_auction |
| Is/Not | sale.is_estate | sale.not_estate |
| Is/Not | property.is_strata | property.not_strata |
| Has/No | property.has_pool | property.no_pool |
| Has/No | property.has_illegal_works | property.no_illegal_works |
| Plain | cooling_off.expired | cooling_off.not_expired |
| Plain | exchange.by_agent | exchange.not_by_agent |
Instead of complex negative logic:
{%p if not sale.is_auction %} <- Harder to read, error-proneUse clean positive conditions:
{%p if sale.not_auction %} <- Clear and simpleAdditional fields for property transactions.
| Field | Example | Description |
|---|---|---|
property.address | Schrute Farms, Rural Route 6, Scranton NSW 2000 | Full property address |
property.re_line | Schrute Farms, Rural Route 6, Scranton | Short form for letters |
property.street_address | Rural Route 6 | Street line only |
property.suburb | Scranton | Property suburb |
property.state | NSW | Property state |
property.postcode | 2000 | Property postcode |
property.lot_number | 15 | Lot number |
property.dp_number | 123456 | DP/SP number |
property.title_reference | 15/123456 | Title reference (Folio) |
property.registered_plan | DP 123456 | Full plan reference |
property.council | Scranton Regional Council | Local council |
| Primary Field | Inverse (Auto) | What It Controls |
|---|---|---|
property.is_strata | property.not_strata | Strata/unit title warnings |
property.has_pool | property.no_pool | Pool compliance requirements |
property.has_illegal_works | property.no_illegal_works | Unapproved works disclosure |
property.survey_available | — | Survey report exists |
| Field | Example | Description |
|---|---|---|
transaction.sale_price | 750000 | Sale/purchase price |
transaction.deposit_amount | 75000 | Deposit amount |
transaction.contract_date | 2025-01-27 | Contract date |
transaction.exchange_date | 2025-01-28 | Exchange date |
transaction.settlement_date | 2025-03-15 | Settlement date |
transaction.settlement_period | 42 | Days to settlement |
| Primary Field | Inverse (Auto) | What It Controls |
|---|---|---|
transaction.simultaneous_purchase | — | Coordinating sale with purchase |
transaction.deposit_release | — | Early deposit release |
transaction.christmas_settlement | — | Holiday period settlement |
transaction.vendor_renting_back | — | Post-settlement rental |
transaction.vacant_possession | — | Property empty at settlement |
| Primary Field | Inverse (Auto) | What It Controls |
|---|---|---|
sale.is_auction | sale.not_auction | Auction vs private treaty |
sale.is_estate | sale.not_estate | Deceased estate sale |
These follow the same pattern as client.*:
| Category | Example Field | Description |
|---|---|---|
vendor.* | vendor.full_name | The seller (sale matters) |
purchaser.* | purchaser.full_name | The buyer (purchase matters) |
os.* | os.business_name | Other side’s solicitor |
agent.* | agent.full_name | Real estate agent |
For deceased estate matters.
| Field | Example | Description |
|---|---|---|
deceased.full_name | Arthur Pendragon | Full name |
deceased.surname | Pendragon | Surname |
deceased.given_names | Arthur | Given names |
deceased.title | King | Title |
deceased.date_of_death | 2025-01-01 | Date of death |
deceased.date_of_birth | 1960-06-15 | Date of birth |
deceased.place_of_death | Camelot Hospital | Place of death |
deceased.last_address | Castle Camelot, Camelot NSW 2001 | Last known address |
deceased.occupation | King | Occupation |
deceased.marital_status | Married | Marital status at death |
| Field | Example | Description |
|---|---|---|
estate.value_gross | 500000 | Gross estate value |
estate.value_net | 450000 | Net estate value |
estate.date_of_will | 2020-05-15 | Date of will |
| Primary Field | Inverse (Auto) | What It Controls |
|---|---|---|
estate.has_will | estate.no_will | Testate vs intestate |
estate.probate_granted | estate.not_probate_granted | Probate status |
estate.has_real_property | estate.no_real_property | Real estate in estate |
| Field | Example | Description |
|---|---|---|
executor.full_name | Sir Lancelot | Executor’s name |
executor.address | Round Table, Camelot NSW 2001 | Executor’s address |
executor.relationship | Knight of the Round Table | Relationship to deceased |
administrator.full_name | Sir Galahad | Administrator’s name |
For will preparation matters.
| Field | Example | Description |
|---|---|---|
testator.full_name | Robin of Locksley | Full legal name |
testator.surname | Locksley | Surname |
testator.given_names | Robin | Given names |
testator.title | Mr | Title |
testator.dob | 1965-03-15 | Date of birth |
testator.occupation | Outlaw | Occupation |
testator.marital_status | Married | Marital status |
testator.address | Sherwood Forest, Nottingham NSW 2100 | Address |
| Primary Field | Inverse (Auto) | What It Controls |
|---|---|---|
testator.is_married | testator.not_married | Marriage-related clauses |
testator.has_children | testator.no_children | Children provisions |
testator.has_stepchildren | testator.no_stepchildren | Stepchildren provisions |
| Field | Example | Description |
|---|---|---|
beneficiary_1.full_name | Maid Marian | First beneficiary |
beneficiary_1.relationship | Spouse | Relationship to testator |
beneficiary_1.share | 50% | Share of estate |
beneficiary_2.full_name | Robin Jr | Second beneficiary |
beneficiary_2.relationship | Son | Relationship |
beneficiary_2.share | 25% | Share |
beneficiary_3.full_name | Friar Tuck | Third beneficiary |
beneficiary_3.relationship | Friend | Relationship |
beneficiary_3.share | 25% | Share |
executor_1.full_name | Little John | First executor |
executor_1.relationship | Friend | Relationship |
executor_2.full_name | Will Scarlet | Substitute executor |
For commercial transactions.
| Field | Example | Description |
|---|---|---|
company.name | Sherwood Enterprises Pty Ltd | Company name |
company.acn | 123 456 789 | ACN |
company.abn | 12 345 678 901 | ABN |
company.registered_address | 1 Forest Road, Sherwood NSW 2100 | Registered office |
company.director_1 | Robin Hood | First director |
company.director_2 | Little John | Second director |
company.secretary | Alan-a-Dale | Company secretary |
| Primary Field | Inverse (Auto) | What It Controls |
|---|---|---|
company.is_trustee | company.not_trustee | Acting as trustee |
transaction.is_gst_applicable | transaction.not_gst_applicable | GST provisions |
transaction.has_finance | transaction.no_finance | Finance conditions |
This matrix shows which universal fields exist across the main matter types:
| Field | Sale of Land | Estates | Wills/POA/EG |
|---|---|---|---|
matter.number | Yes | Yes | Yes |
matter.name | Yes | Yes | Yes (auto-filled) |
matter.type | hidden | hidden | Yes (dropdown) |
matter.re_line | — | Yes | — |
matter.person_acting | Yes | Yes | Yes |
matter.person_assisting | Yes | Yes | Yes |
client.full_name | Yes | Yes | Yes |
client.surname | Yes | Yes | Yes |
client.addressee | Yes | Yes | Yes |
client.salutation | Yes | Yes | Yes |
client.street_address | Yes | Yes | Yes |
client.suburb | Yes | Yes | Yes |
client.state | Yes | Yes | Yes |
client.postcode | Yes | Yes | Yes |
client.email | Yes | Yes | Yes |
client.phone | Yes | Yes | Yes |
firm.name | — | Yes | — |
practitioner.full_name | Yes | Yes | — |
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"} ]}| Rule | Example |
|---|---|
| Use lowercase | client.surname |
| Use underscores for multi-word fields | client.street_address |
| Use dot notation for categories | client. matter. property. |
| Be descriptive | transaction.settlement_date |
Use _single_line suffix for combined fields | client.address_single_line |
Use is_ prefix for boolean “is this?” fields | property.is_strata |
Use has_ prefix for boolean “has this?” fields | property.has_pool |
| Avoid | Why | Instead Use |
|---|---|---|
clientSurname | camelCase is inconsistent | client.surname |
Client_Surname | Capital letters vary | client.surname |
SURNAME | All caps is ugly | client.surname |
sname | Too abbreviated | client.surname |
name | Ambiguous (whose name?) | client.full_name |
strata | Unclear what it means | property.is_strata |
sale.not_auction not {% if not sale.is_auction %}client.surname not surnameThis 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 }}