XTKGet XTK
Documents

Updated 8 min read

XTK placeholder reference (complete list)

XTK's searchable Available placeholders reference dialog listing client, contact and date tokens with sample values

This is the complete reference for XTK placeholders — every token you can type into a document template and have XTK fill from a client's live details in Xero Practice Manager (XPM). It covers the client, contact, address, custom-field and date tokens, the :LASTn modifier, and the [IF …] … [ENDIF] conditional blocks, each with sample output.

XTK is an independent product and is not affiliated with or endorsed by Xero Limited.

How placeholders work

A placeholder is a NAMESPACE:FIELD name in square brackets, typed straight into your Word document — [CLIENT:NAME], [CONTACT:PRIMARY:EMAIL], [DATE]. When someone generates a document from the template, XTK scans it for tokens, pre-fills each one from the client's details in a fill dialog you review, and stamps the confirmed values into a new .docx. Three rules cover the whole grammar:

  • Tokens are uppercase. [CLIENT:NAME] is recognised; [client:name] is left as ordinary text.
  • Each distinct token becomes one editable field in the fill dialog, however many times it appears in the document — and every pre-filled value can be overridden before you generate.
  • Anything XTK can't fill stays put. Unknown tokens, plain bracketed prose like [see note], and fields you leave empty all render as their literal text. Generation never fails because of a placeholder.

Placeholders work anywhere Word puts visible text — the document body, headers and footers. And it doesn't matter if Word has invisibly split a token into pieces while you were typing or formatting: XTK reads each paragraph as a whole, so tokens always resolve.

XTK's Available placeholders dialog in Xero Practice Manager: a searchable list of placeholder tokens grouped by Client, Contact, Custom field and Date, each with a description and sample value
The in-product version of this reference: “Document Templates” tab → “Available placeholders”.

Client details — [CLIENT:FIELD]

The CLIENT namespace reads the record of the client you're generating for. Names and identity first:

PlaceholderWhat it fillsExample
[CLIENT:NAME]The client's business name, or first + last name for individualsAcme Trading Ltd
[CLIENT:TITLE]Title (Mr, Ms, Dr, …)Ms
[CLIENT:FIRSTNAME]First nameSam
[CLIENT:MIDDLENAME]Middle nameJ
[CLIENT:LASTNAME]Last nameTaylor
[CLIENT:OTHERNAME]Other / preferred nameSammy
[CLIENT:GENDER]GenderFemale
[CLIENT:DATEOFBIRTH]Date of birth — dd/MM/yyyy unless you add a format (see Dates)15/01/1990
[CLIENT:DATEOFDEATH]Date of death — formats like date of birth03/07/2024
[CLIENT:PLACEOFBIRTH]Place of birthMelbourne
[CLIENT:ID]The client's unique identifierCL-123

Email, phone and web

PlaceholderWhat it fillsExample
[CLIENT:EMAIL]Primary email addressaccounts@acmetrading.example
[CLIENT:SECONDARY_EMAIL]First non-primary email addressinfo@acmetrading.example
[CLIENT:PHONE]Main phone number03 9555 1000
[CLIENT:MOBILE]Mobile number0412 555 222
[CLIENT:WORK]Work / office phone number03 9555 1011
[CLIENT:DDI]Direct-dial (DDI) number03 9555 1012
[CLIENT:FAX]Fax number03 9555 1099
[CLIENT:OTHERPHONE]The “other” phone number03 9555 1013
[CLIENT:ANY:PHONE]The first phone number listed, whatever its type03 9555 1000
[CLIENT:WEBSITE]Website (first listed)https://acmetrading.example

Business and tax

PlaceholderWhat it fillsExample
[CLIENT:TAXNUMBER]Tax number (TFN / ABN-style tax identifier)123 456 789
[CLIENT:IRD]The same tax number — an alias of TAXNUMBER123 456 789
[CLIENT:COMPANYNUMBER]Company number604 123 456
[CLIENT:BUSINESSNUMBER]Business number (e.g. ABN)12 345 678 901
[CLIENT:BUSINESSSTRUCTURE]Business structureCompany
[CLIENT:CLIENTTYPE]Client typeCOMPANY
[CLIENT:INDUSTRY]IndustryRetail
[CLIENT:BALANCEMONTH]Month number of the financial balance date (1–12)3
[CLIENT:COUNTRYCODE]The client's country codeAU
[CLIENT:STATUS]Raw statusACTIVE
[CLIENT:ISARCHIVED]Whether the client is archivedfalse

Practice fields

PlaceholderWhat it fillsExample
[CLIENT:ACCOUNTMANAGER]Account manager (engagement partner)Jo Nguyen
[CLIENT:JOBMANAGER]Job managerSam Carter
[CLIENT:REFERRALSOURCE]How the client was referredExisting client
[CLIENT:EXPORTCODE]Export codeEXP-01
[CLIENT:REFERENCECODE]Reference codeREF-77

Addresses — [CLIENT:TYPE:FIELD]

Addresses use a three-part token: which address, then which piece of it. Pick a type…

TypeWhich address it reads
STREETThe street (physical) address
POSTALThe postal address
DELIVERYThe delivery address
OTHERThe address filed under “other”
ANYThe first address on the record, whatever its type

…and combine it with any of the six fields:

FieldWhat it fillsExample
ADDRESSStreet address line12 Collins St
CITYCity / localityMelbourne
REGIONRegion / stateVIC
POSTCODEPostcode3000
COUNTRYCountry nameAustralia
COUNTRYCODECountry codeAU

So [CLIENT:POSTAL:POSTCODE] is the postal address's postcode, and a full address block in a letter looks like this:

You writeThe letter says
[CLIENT:POSTAL:ADDRESS]12 Collins St
[CLIENT:POSTAL:CITY] [CLIENT:POSTAL:REGION] [CLIENT:POSTAL:POSTCODE]Melbourne VIC 3000
[CLIENT:POSTAL:COUNTRY]Australia
Searching “postal” in XTK's Available placeholders dialog, showing the six postal-address placeholder tokens with sample values
Searching the in-product reference matches both token names and descriptions.

Contacts — [CONTACT:SELECTOR:FIELD]

The CONTACT namespace reads the client's contact people. It's also a three-part token: pick a contact, then a field.

SelectorWhich contact it reads
PRIMARYThe contact flagged as primary in XPM
SECONDARYThe first contact that isn't the primary
ANYThe first contact listed
FieldWhat it fillsExample
NAMEThe contact's nameSophie Baxter
EMAILEmail addresssophie@acmetrading.example
POSITIONPosition / roleDirector
SALUTATIONSalutationMs
ADDRESSEEAddressee lineMs S Baxter
PHONEPhone number03 9555 1234
MOBILEMobile number0412 999 888
WORKWork phone number03 9555 1211
DDIDirect-dial (DDI) number03 9555 1212
FAXFax number03 9555 1299
OTHERPHONEThe “other” phone number03 9555 1213

Custom fields — [CUSTOM:FIELD NAME]

Any custom field your practice has defined in XPM can be referenced by name: [CUSTOM:GST Period] fills the “GST Period” field's value for this client. Matching is forgiving — case doesn't matter, and underscores read as spaces, so [CUSTOM:GST_PERIOD] finds the same field. The value is rendered exactly as stored; a field with no value for this client is left for you in the fill dialog.

Dates — [DATE] and formats

[DATE] fills today's date, computed on your clock at the moment you generate the document, written out in full — for example 9 June 2026. Like everything else it lands in the fill dialog first, so you can override it when a letter needs a different date.

Add a colon and a pattern to control the format. A pattern mixes these tokens (shown for 9 June 2026) with any separators you like — slashes, dashes, dots and spaces pass through as-is:

TokenMeaningRenders
yyyyFour-digit year2026
yyTwo-digit year26
MMMMMonth written outJune
MMMMonth, shortJun
MMMonth number, zero-padded06
MMonth number6
ddDay, zero-padded09
dDay9
You writeThe letter says
[DATE]9 June 2026
[DATE:dd/MM/yyyy]09/06/2026
[DATE:d MMM yy]9 Jun 26
[DATE:yyyy-MM-dd]2026-06-09
[DATE:MMMM yyyy]June 2026

Formatting stored dates

The client's stored dates — [CLIENT:DATEOFBIRTH] and [CLIENT:DATEOFDEATH] — render as dd/MM/yyyy by default and take the same patterns: [CLIENT:DATEOFBIRTH:d MMMM yyyy] gives 15 January 1990. They're read date-only, so a birthday never shifts a day because of timezones. Stored dates take a date format, not the :LASTn modifier below.

Last characters — the :LASTn modifier

Append :LAST and a number to any text placeholder to render only the last few characters. The classic use is quoting a tax number without printing all of it: if the stored number is 123456789, then [CLIENT:TAXNUMBER:LAST4] renders 6789.

  • It counts characters, not digits — spaces stored in the value count too.
  • The output is plain text, not a mask: it renders 6789, not *****6789. Put your own “ending in” wording around it.
  • A value shorter than n renders whole.
  • It works on any text field — client, contact, address or custom — but not on the stored-date fields, which take a date format instead.

Conditional blocks — [IF …] … [ENDIF]

Wrap a passage between [IF condition] and [ENDIF] and it's kept or dropped per client when the document is generated. Conditions come in exactly three shapes:

You writeThe passage is kept when…
[IF CLIENT:MOBILE]…the field has any value at all
[IF CLIENT:STREET:COUNTRYCODE = "AU"]…the value matches the quoted text
[IF CLIENT:STREET:COUNTRYCODE != "AU"]…the value differs (an empty value counts as different)
  • Comparisons ignore case and surrounding spaces, and the quotes are optional (single or double both work).
  • The field a condition tests shows up as an ordinary field in the fill dialog, so the condition acts on the value you see and confirm.
  • A kept block loses just its two markers; a dropped block vanishes entirely — markers, content and any paragraphs in between, with no blank lines left behind.
  • Blocks nest inside each other, which is how you get an AND. There is no AND/OR syntax and no [ELSE] — for either/or text, write two back-to-back blocks, one with = and one with !=.
  • An unmatched marker — an [IF] with no [ENDIF], or a stray [ENDIF] — is left as literal text in the output, which makes the mistake easy to spot.
  • Keep both markers in ordinary paragraphs; splitting a block across table cells in Word isn't supported.

For a worked example — an Australian-only GST paragraph in an engagement letter — see the document templates guide.

Where next

The document templates guide walks through uploading a template and generating a letter from it, with these tokens doing the filling. Folder templates use the same [DATE] tokens inside folder names, so a standard client folder structure can stamp itself with the right year as it's created.

Frequently asked questions

What happens to a placeholder XTK can't fill in?

Nothing breaks. A recognised token XTK can't resolve from the client's record shows as an empty field in the fill dialog for you to type; anything still empty when you generate is stamped into the document as its literal text, like [CLIENT:MOBILE]. A token XTK doesn't recognise at all is simply left as-is. Generation never fails because of a placeholder.

Can I invent my own placeholders?

Yes, through XPM custom fields: define a field in Xero Practice Manager and reference it as [CUSTOM:Field Name]. Anything else you make up isn't an error — it just renders as literal text — but only the tokens in this reference (plus your custom fields) are filled automatically.

Why does [CONTACT:PRIMARY:NAME] come out blank?

PRIMARY means the contact actually flagged as primary in XPM. If no contact carries the flag, XTK deliberately leaves the field empty rather than silently guessing the first one. Flag a primary contact in XPM, type the value in the fill dialog, or use [CONTACT:ANY:NAME] to take the first contact listed.

Can I combine two conditions with AND or OR?

No — a condition tests exactly one field, and there's no [ELSE] either. Nest one [IF] block inside another to get an AND, and write two back-to-back blocks (one with =, one with !=) for either/or text.

Does [CLIENT:TAXNUMBER:LAST4] mask the rest of the number?

It renders only the last four characters, plainly — 6789, no asterisks. Write your own wording around it (“the account ending in …”). Note it counts characters, not digits, so spaces stored in the number count too.

Do placeholders work in headers and footers?

Yes. XTK fills tokens anywhere Word puts visible text: the document body, headers and footers. It also copes with Word invisibly splitting a token into pieces as you type or format — tokens always resolve whole.

Give Practice Manager its missing half

Install the extension, connect your Drive, and open your first client — your whole practice can be working in context today.

30-day free trial for your whole practice — no credit card required.