Templates & triggers
Templates hold your message content with Liquid variables. A trigger name is the stable handle you reference from the API.
Anatomy of a template
- Trigger: a unique name per environment and channel (e.g.
order_confirmed), used byPOST /messages/trigger. - Channel: email, SMS, WhatsApp or push.
- Subject & body: Liquid content rendered with the
datayou send. - Layout: an optional email wrapper (header/footer) with a
{{ content }}slot.
Liquid variables
Reference any key from your data object with double braces:
liquid
<h1>Thanks, {{ name }}</h1>
<p>Order {{ order_number }} totalling {{ total }} is on its way.</p>
<a href="{{ unsubscribe_url }}">Unsubscribe</a>Organise templates into folders, and reuse a single layout across many of them so every email shares one header and footer.
Security-sensitive content (OTPs, magic links, password resets) is detected automatically and excluded from click-tracking, so secrets never route through the tracking domain.