Skip to content

Template Conversion Checklist

This checklist walks you through converting an existing Word template to work with Certum Draft. Follow these steps systematically for best results.


1. Backup Original

Make a copy of your original template before making any changes.

2. Open the Codex

Keep the Field Reference open for standard field names.

3. Identify Practice Area

Know which matter type this template belongs to (conveyancing, wills, estates, etc.)

4. List All Blanks

Go through the template and note every place that needs data filled in.


  1. Find all blanks in your template

    Look for:

    • ___________ (underlines)
    • [CLIENT NAME] (bracketed text)
    • <INSERT DATE> (angled brackets)
    • Highlighted or coloured text indicating fill-in areas
    • Any placeholder text like “XXXXXXX” or ”???”
  2. Map each blank to a standard field

    For each blank, find the matching field in the Field Codex:

    OriginalStandard Field
    [CLIENT NAME]{{ client.full_name }}
    _____ (address){{ client.street_address }}
    [DATE]{{ today.date_long }}
    $______{{ transaction.sale_price | currency }}
  3. Replace with Certum Draft syntax

    Dear [CLIENT],
    Re: [PROPERTY ADDRESS]
    Our Ref: [MATTER NUMBER]
  4. Apply filters where needed

    Data TypeFilterExample
    Date| date{{ transaction.settlement_date | date }}
    Currency| currency{{ transaction.sale_price | currency }}
    Required| required{{ property.easements | required }}

  1. Find conditional sections

    Look for:

    • Paragraphs marked “delete if not applicable”
    • Text in square brackets like “[If strata property, include:]”
    • Alternative paragraphs (Option A / Option B)
    • Text that only applies sometimes
  2. Identify the condition

    What determines whether this text appears?

    ScenarioCondition Field
    Strata propertyproperty.is_strata
    Auction salesale.is_auction
    Private treaty (not auction)sale.not_auction
    Has swimming poolproperty.has_pool
    Deceased estatesale.is_estate
    Living vendorsale.not_estate
  3. Wrap with conditional tags

    [If strata property, include the following paragraph:]
    As this is a strata property, you should review the by-laws
    carefully before signing the contract.
    [End of conditional text]
  4. Use inverse fields for “if NOT” conditions

    {%p if not sale.is_auction %}
    Private treaty sale terms...
    {%p endif %}
  5. Handle either/or sections

    For mutually exclusive options:

    {%p if sale.is_auction %}
    The property will be sold at auction. Once the hammer falls,
    you are bound by the contract with no cooling off period.
    {%p endif %}
    {%p if sale.not_auction %}
    Once a buyer is found, we will send you the contract for
    review. You will have a 5-day cooling off period.
    {%p endif %}

Use this reference table to convert common legacy field names:

Legacy FormatStandard Format
[CLIENT], [Client Name]{{ client.full_name }}
[SURNAME], [Last Name]{{ client.surname }}
[ADDRESS]{{ client.street_address }}
[SUBURB], [City]{{ client.suburb }}
[STATE]{{ client.state }}
[POSTCODE], [ZIP]{{ client.postcode }}
[EMAIL]{{ client.email }}
[PHONE], [TEL]{{ client.phone }}
Legacy FormatStandard Format
[MATTER NO], [File Ref]{{ matter.number }}
[RE:], [Subject]{{ matter.re_line }}
[SOLICITOR], [Partner]{{ matter.person_acting }}
[SECRETARY]{{ matter.person_assisting }}
Legacy FormatStandard Format
[PROPERTY], [Property Address]{{ property.address }}
[LOT NO]{{ property.lot_number }}
[DP NO], [Plan No]{{ property.dp_number }}
[FOLIO], [Title Ref]{{ property.title_reference }}
Legacy FormatStandard Format
[PRICE], [Purchase Price]{{ transaction.sale_price | currency }}
[DEPOSIT]{{ transaction.deposit_amount | currency }}
[SETTLEMENT DATE]{{ transaction.settlement_date | date }}
[CONTRACT DATE]{{ transaction.contract_date | date }}
Legacy FormatStandard Format
[DATE], [Today]{{ today.date_long }}
[DD/MM/YYYY]{{ today.date }}

  1. Check tag balance

    Count your opening and closing tags:

    • Every {%p if %} needs exactly one {%p endif %}
    • Mismatched tags cause template errors
  2. Verify field names

    • Check all field names against the Field Codex
    • Use exact spelling and case: client.full_name not client.fullname
    • Use snake_case: street_address not streetAddress
  3. Test with sample data

    Create a test matter with complete data and generate the document:

    • Check all placeholders filled correctly
    • Verify conditional sections appear/hide as expected
    • Check date and currency formatting
  4. Test edge cases

    Generate with:

    • Minimum required fields only
    • All boolean conditions TRUE
    • All boolean conditions FALSE
    • Mixed conditions

Dear _______________,
[DELETE IF NOT STRATA PROPERTY]
We enclose the strata by-laws for your review.
[END DELETE]
[OPTION A - AUCTION]
The property will be sold at auction.
[END OPTION A]
[OPTION B - PRIVATE SALE]
Once a buyer is found, we will send the contract.
[END OPTION B]

Pattern 4: Multiple Independent Conditions

Section titled “Pattern 4: Multiple Independent Conditions”
[IF STRATA - include strata paragraph]
[IF POOL - include pool paragraph]
[IF ILLEGAL WORKS - include works paragraph]
Settlement Date: _______________
Purchase Price: $_______________

Use this checklist for each template:

  • Backup original template
  • Identify all placeholders/blanks
  • Map each to standard field names
  • Replace with {{ field.name }} syntax
  • Add filters for dates and currency
  • Find all conditional/optional sections
  • Wrap with {%p if %}...{%p endif %}
  • Use inverse fields for negative conditions
  • Count opening/closing tags match
  • Test with sample data
  • Verify all conditions work both ways

Cause: Field name doesn’t match matter.json

Fix: Check spelling and format against Field Codex

Cause: Usually unbalanced {%p if %} / {%p endif %} tags

Fix: Count tags - must have equal numbers of each

Cause: Field not defined as boolean, or wrong field name

Fix:

  1. Verify field is "type": "bool" in matter.json
  2. Check exact field name spelling

Date shows as “2025-01-15” instead of “15 January 2025”

Section titled “Date shows as “2025-01-15” instead of “15 January 2025””

Cause: Missing date filter

Fix: Add | date filter: {{ date_field | date }}