{{path.to.value}} in a text field.
Basic example
With this data:items[0].name is not supported.
Missing values and types
An unresolved text placeholder alone does not fail compilation. A missing array for an
each directive, an invalid block, or an invalid Slack field can still cause validation errors. Preview with representative data and inspect unresolved text before sending.
There is no general expression language: arithmetic, date formatting, fallbacks, and arbitrary function calls should be calculated by your application. Pass values such as formatted_total or display_date ready to display. The loop-index shortcut below is a specific exception.
Repeating content
Add a Directive block, select each, and set its array path toitems. Add a Section inside it:
{{#each}} or {{/each}} markers in text; those markers do not create loops.
Within a loop, this is the current item, this.name selects a property, and @index + 1 gives a one-based display number. Root data remains available, so a child can also reference {{user.name}}. See Directives for configuration and conditions.
Formatting and mentions
Placeholder replacement does not escape untrusted content for Slack formatting. Treat user-supplied text carefully when inserting it into amrkdwn field; use plain-text fields when formatting is unnecessary. Format dates, currency, and links before supplying data.
To mention a person by email, use the dedicated email mention syntax. An email address in an ordinary placeholder is only text.
Verify the data contract
Keep sample data representative of the values sent by your integration. Test missing optional fields, empty arrays, long text, and nulls. An integration can readGET /v1/templates/{id}/input-schema to discover the template’s expected data shape.
Manage sample data · Use directives · Send with the API
