Simple Fields
A simple field is a placeholder you write inside a template document. At render time AdviceDocs replaces the placeholder with the matching value from your data. You write a field by wrapping its name in two curly braces: {{ fieldname }}.
How to write simple fields
The rules below describe exactly what AdviceDocs accepts when it parses your template. Anything else will either be left as plain text or raise a syntax error.
Whitespace inside the braces
Spaces, tabs, and newlines inside the braces are ignored. All of the following resolve to the same field and are valid:
{{client_name}}
{{ client_name }}
{{ client_name}}
{{client_name }}
{{ client_name }}
Case-insensitivity (and how to force uppercase)
Field names are case-insensitive when matched against your data — {{ entity }} and {{ ENTITY }} resolve to the same field. The case you use in the template also controls the case of the output. Writing the placeholder in ALL CAPS produces the value in uppercase; lowercase or mixed case leaves the value untouched.
{{ entity }} → "Acme Pty Ltd"
{{ ENTITY }} → "ACME PTY LTD"
{{ Entity }} → "Acme Pty Ltd"
Allowed characters
- Letters
a–zandA–Z. - Digits
0–9. - Underscores
_and hyphens-. - Dots
.for nested values, e.g.{{ client.address.city }}.
Disallowed characters and patterns
- Parentheses
()and inner braces{}— these are stripped from the field name. - Pipe filters such as
{{ name|upper }}— the filter is ignored. Use{{ NAME }}for uppercase instead. - Bracket array syntax
{{ items[0] }}— not supported. Use a loop block to iterate over arrays. - Nested placeholders
{{ {{ name }} }}— this is a syntax error.
Don’ts
- Don’t forget the closing braces.
{{ name }is a syntax error. - Don’t use a single brace.
{ name }renders as plain text. - Don’t mix template syntax with prose inside the braces. Keep anything decorative or explanatory outside the
{{ }}.
How fields are flagged and normalized
When you upload a template, AdviceDocs walks every {{ ... }} reference and records each one against the template. This list is what powers the field configuration UI, the data-fill pipeline, and the validation warnings.
Lowercasing
Field names are lowercased for storage. {{ Client_Name }}, {{ client_name }}, and {{ CLIENT_NAME }} all map to a single stored field client_name. (The original casing in your template still controls output casing — see above.)
Punctuation is preserved
Hyphens, underscores, and dots are kept exactly as you wrote them. They are not collapsed into one another. The following are three different fields:
{{ client-name }} → field "client-name"
{{ client_name }} → field "client_name"
{{ client.name }} → nested field "name" under "client"
Field type is inferred from the name
AdviceDocs guesses the field type based on substrings in the name. You can override this in the field settings, but it is worth knowing the defaults so a name change doesn’t silently re-classify a field.
- Image — name contains
image(e.g.profile_image). - Graph — name contains
graph(e.g.portfolio_graph). - Date — name contains
dateordob(e.g.date_of_birth). - Currency — name contains
value,balance,amount,price,total, ordollars(e.g.account_balance). - Number — name contains
number(e.g.account_number). - Text — the default for everything else.
Loop variable typos
{{ rec_product.name }} inside a loop declared as {% for product in products %}), AdviceDocs still extracts the field but flags it with a syntax warning suggesting the correct name.Syntax to copy
A reference of valid placeholders for common simple-field types. Drop these straight into a template document and rename them to match your data.
{{ client_name }}
{{ client_first_name }}
{{ adviser_name }}
{{ entity }}
{{ account_balance }}
{{ portfolio_value }}
{{ recommended_amount }}
{{ total_dollars }}
{{ account_number }}
{{ super_member_number }}
{{ statement_date }}
{{ date_of_birth }}
{{ review_date }}
{{ profile_image }}
{{ adviser_signature_image }}
{{ client.name }}
{{ client.address.city }}
{{ adviser.contact.email }}
{{ ENTITY }}
{{ CLIENT_NAME }}