Overview
Courier templates define what your notifications say, how they look, and how they behave across channels. Create a template once, then send it through email, SMS, push, chat, or in-app channels. Templates keep message content reusable and easy to update, while supporting variables, branding, routing, failover, and channel-specific content. Courier supports two ways to create and manage templates:- Template Designer for building and editing templates visually in the Courier app
- Elemental Markup + Templates API for creating, updating, publishing, and managing templates programmatically
Template Designer
Template Designer is Courier’s visual editor for building notifications without writing code. PMs, designers, operators, and developers can collaborate on message content, preview changes, and publish updates from one place. Use Template Designer when you want to:- Build templates with drag-and-drop content blocks
- Preview email, SMS, push, chat, and in-app content before publishing
- Inject test data to validate variables and conditional content
- Edit channel-specific content side by side
- Track changes with version history

Elemental Markup + Templates API
Elemental Markup is the JSON format Courier uses to represent template content. It powers templates created in Template Designer and can also be sent through the Templates API to create, update, publish, and manage templates programmatically. See Elemental Markup for the template format. Use Elemental Markup with the Templates API when you want to:- Manage templates from your codebase
- Generate templates dynamically
- Review template changes through Git
- Test template payloads in CI
- Create or update templates from internal tools
- Keep template management close to your application workflow
Template capabilities
Dynamic content
Personalize notifications with variables from user profiles, event payloads, tenant data, brand settings, or any data you pass at send time.Branding
Apply consistent logos, colors, fonts, and layouts across notifications. Use brands to support white-labeling and multi-tenant messaging.Reusable routing
Define routing once and reuse it across templates. Configure primary and fallback channels, provider priorities, and delivery behavior separately from message content.Conditional logic
Show, hide, or adapt content based on user data, preferences, account state, or custom business rules.Preview and testing
Preview templates with test data before they go live. Validate channel-specific rendering, brand variations, variables, and delivery formatting.Version history
Track changes over time, compare versions side by side, and roll back when needed.Key Concepts
Design Studio
Build and edit notification templates visually
Templates API
Create, update, publish, and manage templates programmatically
Brands
Apply consistent styles to notifications and assign brands per template as needed
Settings
Configure send conditions, channels, and approval workflows
Handlebars Helpers
Use Handlebars helpers for logic, formatting, and dynamic content
Localization
Serve content in multiple languages based on user locale
Blocks
Add text, images, buttons, and other content components in the visual editor
Elements
Add and configure content components in Elemental Markup
