Zeta Markup Language (ZML)

Zeta Markup Language (ZML) is based on the open-source template language Liquid created by Shopify. ZML is used in the Zeta Marketing Platform to perform personalization and dynamic operations within the content. ZML code can be categorized into objects, tags, and filters.
Objects
Objects tell ZML where to show content on a page. Objects and variable names are denoted by double curly braces: {{ and }}. This is how user properties can be populated within the content to perform basic personalization.
Input
Output
|
In this example, ZML is rendering the content of an object containing the user property called first_name, and that object contains the string, Ryan.
Tags
Tags are used to define logic within the content. They are denoted by curly braces and percent signs: {% and %}. This markup used in tags usually does not produce any visible text. Possible exceptions are noted below. This means that you can assign variables and create conditions and loops without showing any of the ZML in the content.
Input
Output
|
Tags can be categorized into several types. You can read more about each type of tag in their respective sections.
Filters
Filters change the output of a ZML object. They are used within an output and are separated by a |.
Input
Assuming Output
|
Multiple filters can be used on one output. They are applied from left to right.
Input
Output
|
Points to Remember |
|---|
Use Single Quotes for String Values in Global VariablesWhen assigning string values with the
CODE
Using double quotes can produce unexpected output because the double quote may be treated as part of the stored value:
CODE
This can result in output such as:
CODE
For this reason, string values assigned with |
Global and Assign Have Different Scope, Not Different String ParsingBoth
CODE
creates a variable that is available only within the current component or template scope.
CODE
creates a variable that can be referenced across message components such as the subject line, preheader, and content. The primary difference is scope, not how string values are parsed. |
Global Variables Do Not Support FiltersUnlike For example:
CODE
stores the transformed value. However:
CODE
stores the literal text:
CODE
instead of the filtered result. If a value requires filters, apply the filter using |
When to Use Global vs AssignUse Use Snippets in the Global Variables field must use the |
Campaigns include a standalone Global Variables field that allows you to define variables that can be referenced across all message components, including the subject line, preheader, and content. Use the global tag when a variable needs to be shared across multiple message components:
CODE
Use the assign tag when a variable is only needed within a single component:
CODE
Snippets placed in the Global Variables field must use the global tag to make variables available throughout the message. Variables created with assign are scoped locally and are not available outside the component in which they are evaluated. |
Note: When assigning string values with the global tag, use single quotes ('value'). Filters are not evaluated in global assignments and are stored as literal text.