Dynamic content uses Liquid to automatically personalize emails with specific products, prices, images, and links. This ensures every subscriber receives a relevant message tailored to their behavior, such as browsing or cart abandonment.
Core Building Blocks: Step-by-Step
1. Adding Variables (Personalized Text)
- Dynamic links let you personalize email messages with personalized links to pages on your website.
-
Variables let you personalize email messages with details like subscriber name, product details like name and price, discount codes, and more. Variables also support default values, which use generic, inclusive terms when personalized details (like name) aren’t available, like “friend" instead of the subscriber's first name.
- In the email editor, click Insert variable (or Insert dynamic link) in the pop-up menu from within a Paragraph, Title, List, or Button Content Block:
- Search for your variable (e.g., “first name,” “product,” “review,” “address”). For subscriber attributes, these may be top-level variables (on the subscriber, these are indicated by the syntax subscriber.fieldname , for example, subscriber.email), or custom (indicated by a syntax of subscriber.custom[‘fieldname’], like subscriber.custom[‘loyalty_tier’]
- Click to insert it into a text block, button URL, or image link
| Variable Type | Example Variable | Example Output |
| Subscriber name | {{ subscriber.firstName }} | “Hi Sarah,” |
| Product name | {{ triggerEvent.product.name }} | “Classic Leather Tote” |
| Product price | {{ triggerEvent.product.price }} | “$129.00” |
| Company address | {{ companyAddress }} | Address auto-populates in footer |
- Default Values: Use generic, inclusive terms (e.g., “friend” instead of a name) when personalized details are missing.
2. Inserting Dynamic Images
Dynamic images display the exact product a subscriber recently viewed or interacted with.
-
How to add:
- Drag a Dynamic Image block into your email (only available in certain journeys).
- Click the image block in the editor to add alt text and a target URL in the right-rail section.
- Click the Edit dynamic image button and choose the triggered image field—typically {{ triggerEvent.product.image }}.
- Important: Set optional fallback behavior; if no default logic is set and the product does not exist, the email will not be sent.
3. Applying Conditional Logic (If/Else Rules)
Conditional logic controls whether a row appears based on subscriber attributes or segment membership.
-
How to add:
- Select a Row in the email editor and open the Row Properties menu.
- Locate the Dynamic Content section and click Manage condition.
- Enter a condition name and select Variable from the first dropdown.
- Select your variable, choose is or is not, and select the attribute (e.g., subscriber.smsSubscriber is true).
Note: If using opposing conditions (e.g., subscribed vs. not subscribed), you must keep them as two separate rows to maintain dynamic behavior.
Advanced Liquid Examples: Step-by-Step
1. Trimming Long Product Names
Use filters to show only essential names if your catalog has long titles (e.g., "Brand Name - Item - Color - Size").
- Remove Brand Name: {{ product.name | remove: 'Brand Name' }}.
- Split by Delimiter: Break text at a specific character: {{ product.name | split: ' -' }}.
- Display First Part: Combine filters to show only text before the dash: {{ product.name | remove: 'Brand Name' | split: ' -' | first }}.
Example - go from “Bob’s Pet Supplies - Synthetic Braided Leash and Collar Set - Purple - 72” to “Synthetic Braided Leash and Collar Set”
Behind the scenes:
2. Changing Text Casing
Standardize names that were entered incorrectly.
- Capitalize first letter: {{ subscriber.firstName | capitalize }}.
- Force all caps: {{ subscriber.firstName | upcase }}.
- Force all lowercase: {{ subscriber.firstName | downcase }}.
3. Formatting Dates
Transform technical date strings into customer-friendly formats (e.g., “Monday, November 10, 2025”).
- Syntax: {{ variable | date: '%A, %B %d, %Y' }}.
-
Example:
- Variable input: 2025-11-10T00:00:00Z
- Output: Monday, November 10, 2025
Troubleshooting Tips
| Issue | Likely Cause |
| Dynamic content not showing in preview | Catalog not set up, or using a non-data-driven preview. |
| Liquid errors | Missing brackets, pasted “smart quotes,” or extra spaces. |
| Blank product fields | Missing variant data or an unsupported journey trigger. |
| Rows not hiding or showing | Condition groups combined incorrectly. |