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
The table below summarises the core Handlebars constructs used in notification templates.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
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
Nest helpers for more complex logic:Context Objects
Templates have access to special objects containing event and entity data:event- The change event that triggered the notification.entity- The entity being notified about.subscription- Information about the event subscription.baseUrl- Base URL of your Collate instance.
Common Patterns
The following patterns cover the most frequent template-writing scenarios.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
Keep these behaviours in mind when writing templates to avoid rendering issues.Property Access
Handlebars uses dot notation (.) to access properties:
entity.name- Access the name property.entity.owners.0.id- Access nested properties.entity.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