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 by POST /messages/trigger.
  • Channel: email, SMS, WhatsApp or push.
  • Subject & body: Liquid content rendered with the data you 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.