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:
Nested Logic
Nest conditions and loops:Using Helpers
Helpers are functions that perform operations on your data. Collate provides 23 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.owner.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.owner is missing, renders as:
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