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 Variables
When assigning string values with the
Using double quotes can produce unexpected output because the double quote may be treated as part of the stored value:
This can result in output such as:
For this reason, string values assigned with |
Global and Assign Have Different Scope, Not Different String Parsing
Both
creates a variable that is available only within the current component or template scope.
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 Filters
Unlike For example:
stores the transformed value. However:
stores the literal text:
instead of the filtered result. If a value requires filters, apply the filter using |
When to Use Global vs Assign
Use 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:
Use the assign tag when a variable is only needed within a single component:
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.