Handlebars Templating Guide
Handlebars is a templating language that lets you insert dynamic data and add logic to your templates. This guide covers the basics you need to write notification templates.Understanding Handlebars
Handlebars uses double curly braces{{ and }} to mark placeholders where dynamic content will be inserted. For complete Handlebars documentation, see Handlebars Official Guide.
Basic Syntax
Variable Interpolation
Insert dynamic values into your templates using{{variableName}} syntax:
Conditional Logic
Use{{#if}} blocks to show content only when a condition is true:
Else Blocks
Add{{else}} to provide alternative content:
Looping Through Lists
Use{{#each}} to iterate through arrays:
{{this}} to refer to the current item.
With Object Properties:
entity.owners is a list. Each item has id, name, displayName, and type. Use the lowercase name entity.owners. Handlebars is case-sensitive, so entity.Owners renders nothing.
displayName can be empty for some owners. Use {{name}} if you need a value that is always set.
Nested Logic
You can nest conditions and loops:Using Helpers
Helpers are functions that perform operations on your data. Collate provides 24 custom helpers beyond standard Handlebars features.Basic Helper Syntax
Call helpers by name with arguments in parentheses:Helpers with Parameters
Some helpers take parameters:Nesting Helpers
Helpers can be nested:Context Objects
Templates have access to special objects containing event and entity data:event- The change event that triggered the notificationentity- The entity being notified aboutsubscription- Information about the event subscriptionbaseUrl- Base URL of your Collate instance
Common Patterns
Accessing Nested Properties
Use dot notation to access nested object properties:Default Values with If
Show a default message when data is missing:Formatting Output
Use helpers to format data:Building Links
Use thebuildEntityUrl helper to create clickable links to entities:
Important Notes
Property Access
Handlebars uses dot notation (.) to access properties:
entity.name- Access the name propertyentity.owners.0.id- Access nested propertiesentity.tags.0.name- Access array items by index
Empty String Rendering
If a property doesn’t exist or is empty, Handlebars renders an empty string:entity.description is missing, renders as:
HTML Escaping
Double braces{{ }} escape HTML characters in the value. For example, < becomes < and & becomes &. Use them in the template body for plain-text values such as names.
Triple braces {{{ }}} output the value with no escaping. Use them for content that is already HTML, such as the table from renderTableSample and rich-text descriptions:
<script>.
The email subject is plain text, so escaped characters appear literally. For example, {{entity.name}} shows Sales & Marketing for an entity named Sales & Marketing. Use triple braces for names in the subject:
Spaces in Output
Handlebars preserves whitespace and line breaks. Be careful with formatting:Next Steps
- Explore Collate’s helpers → Custom Helpers Reference
- Learn available data → Template Context Reference