Skip to content

Templates

A template is reusable email content: a subject, an HTML and/or plain-text body, and {{ placeholder }} variables filled in at send time.

Draft and published

status is draft or published, and it is enforced rather than decorative: a draft cannot be used to send.

  • POST /v1/send with a draft template_id returns 422 (notifyzr.template.error.not_published) before the message row is written and before any quota is spent.
  • An automation action referencing a draft records the step as skipped, since there is no caller to hand a 422 to.

A newly created template defaults to draft. An update that omits status keeps the stored one — the editor saves constantly and must never unpublish your live content by accident.

A draft may be empty; publishing requires at least one body.

Placeholders

String fields support {{ dot.path }} interpolation against the send's variables:

json
{
  "message": {
    "subject": "Welcome, {{ contact.name }}",
    "template_id": "…"
  },
  "variables": { "contact": { "name": "Ada" } }
}

In an automation, the paths resolve against the triggering event — for example {{ data.values.email }} for a form submission.

Folders

Templates can be organised into folders via /v1/template-folders and moved with POST /v1/templates/{id}/move. Folders are organisational only; they do not affect resolution.

Released under the Apache 2.0 License.