Curly style
Curly-style templates use double curly braces as delimiters: {{...}}. The syntax is more concise than
Comment style, but cannot be combined with client-side libraries that use the same markup (e.g. Angular).
Select render mode Curly style to use only this style, or Comment, Curly, ASP to combine it with other styles.
Value replacement
Use {{expression}} to output the value of an expression.
{{$request.subject}}
Nested properties are supported:
{{$request.requested_by.name}}
HTML encoding
Values are automatically HTML-encoded when the template contains HTML. To skip encoding and
output raw HTML, prefix the expression with #:
{{#$request.html_content}}
Conditionals
Use {{?expression}}...{{?}} to conditionally include content. The expression is evaluated as
JavaScript — the block is included when the result is truthy.
Truthiness check
{{?$request.notes}}
This request has notes.
{{?}}
Comparison operators
Since the expression is evaluated as JavaScript, you can use any comparison operator:
{{?$request.template.id==1234}}
This is template 1234.
{{?}}
{{?$request.status!="completed"}}
This request is not yet completed.
{{?}}
Nested conditionals
{{?$request.release}}
{{?$request.release.status=="active"}}
Active release: {{$request.release.subject}}
{{?}}
{{?}}
Lists and loops
Use {{@expression}}...{{@}} to iterate over an array.
Basic list
Inside the loop, define an item block with {{*variableName}}...{{*}}. The variable name can be
any identifier and is used to access the current item's properties.
{{@$request.notes}}
Header
{{*note}}
{{note.person.name}}: {{note.text}}
{{*}}
Footer
{{@}}
Content outside the {{*...}}...{{*}} block but inside the loop is rendered once as header
(before the items) or footer (after the items).
If no variable name is specified, the default ITEM is used:
{{@$request.notes}}
{{*}}
{{ITEM.text}}
{{*}}
{{@}}
Item filtering
Add a condition after the variable name (separated by a comma) to filter items:
{{@$request.notes}}
{{*note,!note.internal}}
{{note.text}}
{{*}}
{{@}}
Only items for which the condition is truthy are included.
First and last item
Use .first() or .last() on the array expression to render only the first or last element:
{{@$request.notes.first()}}
{{*note}}
First note: {{note.text}}
{{*}}
{{@}}
{{@$request.notes.last()}}
{{*note}}
Last note: {{note.text}}
{{*}}
{{@}}
Formatting functions
In curly-style templates, you can call the same text formatting functions that are available in scripts. These are called directly in the expression:
formatDate
{{formatDate($request.created_at,'DD/MM/YYYY')}}
formatDateTime
Format a date-time value with an optional timezone (defaults to Berlin):
{{formatDateTime($request.created_at,'DD/MM/YYYY HH:mm z','Paris')}}
formatNumber
Format a number with an optional locale (defaults to en-gb):
{{formatNumber($total,'0,0.00')}}
{{formatNumber($total,'0.00','de')}}