Templating Language
The templating language is used in pipelines and external objects to access channel data. It allows you to insert values of template fields, mailing, sender, subscription, and other entities into pipe parameters — for example, when forming a JSON request to an external API.
Prefixes
Each template starts with one of three prefixes that determine how the value is processed:
| Prefix | Behavior | Can be combined with text |
|---|---|---|
$ | Inserts the value as a string | Yes |
$# | Inserts the value preserving the original type (int, bool, array, etc.) | No |
$$ | Unpacks an array into a repeating structure. Used for fields of type "file" | No |
Notation format
For the $ and $# prefixes, two notation variants are available:
$template.field
${template.field}
The curly brace variant is convenient when you need to clearly separate the template from surrounding text:
qwerty${in.a_id}qwerty
For the $$ prefix, only the notation without curly braces is allowed.
Concatenation with text
A template with the $ prefix can be freely combined with constant text:
https://example.com/handler/v${sender.version}/test
Templates with the $# and $$ prefixes cannot be concatenated with strings — they return the value strictly of their own type. For example, the notation qwerty$#in.a_id will cause an error if a_id has type int, because a string and a number cannot be concatenated.
Keywords
Keywords are the names of objects available in the pipeline context. Access to object fields is done through a dot (.), with no limit on nesting depth.