Fidu can fill in parts of your documents and messages automatically — the client's name, the price of a service, an answer from your signup form. It does this with Liquid, a simple, widely-used template language. You write a small placeholder in your text, and Fidu replaces it with the real value when the document or message is generated.
This article covers the basics that apply everywhere Liquid is used in Fidu.
Where Fidu uses Liquid
Engagement letter templates — Word documents and Google Docs used to generate engagement letters. This is the biggest use, with its own set of variables, conditional logic, and signature tags.
Client name templates — how new client records are named when your signup form doesn't collect a business name.
Message templates — reusable messages that personalize themselves for each client.
Note: In-app document templates built with Fidu's document editor use a different system and does not use Liquid.
The two building blocks
Liquid has just two kinds of placeholder, and you can recognize them by their brackets.
Output — double curly braces
Prints a value into your text:
Dear {{ client.name }},
becomes
Dear Acme Holdings LLC,
Tags — curly brace and percent
Do something without printing directly — show or hide a section, repeat a block, or place a signature:
{% if engagement.rush == "Yes" %}
A rush fee of $500 applies to this engagement.
{% endif %}
Reading a variable name
Variables use dotted paths: the part before the dot is the group, the part after is the field.
Example | Meaning |
| The client's display name |
| The primary contact's email address |
| The price of the service being engaged |
| The signup form answer to a question named "Date Filed" |
Spelling matters — {{ client.name }} works, {{ Client.Name }} doesn't. Always copy variables from the lists Fidu shows you rather than typing them from memory:
In your engagement letter template setup, the variables listing (and the setup assistant) shows every variable available to that letter, including one for each signup form question.
Each signer on a letter template has a variables panel with copy-ready signature tags.
In message templates, the "Insert Data" link lists every available variable.
Filters: formatting a value
A filter changes how a value prints. Add it after the variable with a pipe (|):
The flat fee for this engagement is {{ service.price | usd }}.
If the price is 1500, this prints The flat fee for this engagement is $1,500.00. Fidu includes filters like usd (US dollar formatting) and ordinalize (turns 21 into 21st), plus standard Liquid filters. See Advanced Liquid: Filters, Formatting & Troubleshooting for the full tour.
What happens when a value is missing
If a variable has no value — the client has no phone number on file, or an optional question was left blank — it simply prints nothing. Your document won't show an error, so it's worth wrapping optional lines in a condition so you don't end up with stray labels like "Phone:" followed by nothing:
{% if client.phone != blank %}Phone: {{ client.phone }}{% endif %}
Always test before you go live
Engagement letter templates include a test letter feature that runs your document through the real generation process with sample data. Generate one after any edit — it's the fastest way to catch a typo in a variable name or an unclosed tag.
Quick rules of thumb
Copy, don't type. Use the variable lists in the app — a misspelled variable prints nothing.
Use straight quotes. Inside tags, write "Yes" with straight quotation marks. Word and Google Docs sometimes auto-convert quotes to curly ones, which breaks comparisons — undo the autocorrection or turn off smart quotes while editing tags.
Keep a tag on one line. A placeholder must not have a line break in the middle of it.
Close what you open. Every
{% if %}needs an{% endif %}; every{% for %}needs an{% endfor %}.
