Creating Dynamic Assets
A Dynamic Asset works like a regular Asset, but instead of static content, it contains placeholders that are replaced with live data from an external source file (JSON, XML, or RSS) when the Asset is added to an email. This means your emails can display up-to-date product information, latest blog posts, or personalised recommendations — without manual copy-pasting.
In this article
When to use Dynamic Assets
Use case | Example |
Product listings | Display the latest hotel deals, product catalogue items, or special offers from your product feed — always up to date. |
Blog or news feed | Pull in your latest blog articles (title, excerpt, image, link) from an RSS or JSON feed into your newsletter. |
Event listings | Show upcoming events with dates, locations, and registration links from an external calendar feed. |
Personalised recommendations | Combine Dynamic Assets with Segmentation in the source file to show different products to different audience groups. |
Any regularly updated content | Anything that changes frequently and is available as a JSON, XML, or RSS feed can be pulled into your emails automatically. |
How Dynamic Assets work
The concept is straightforward:
You create an Asset in the Email editor, using design elements (text, images, buttons) just like a regular Asset.
Instead of real content, you type placeholders (e.g.
{{title}},{{imageUrl}},{{url}}) where the dynamic content should appear.You prepare a source file — a JSON, XML, or RSS file hosted at a URL — that contains the actual data.
When you add the Asset to an email, you enter the source URL. Apsis One fetches the data and replaces the placeholders with real content.
Before you start
To create a Dynamic Asset, you need:
Requirement | Details |
A source file | A JSON, XML, or RSS file containing the data you want to display. Maximum file size: 10 MB. The server hosting the file must accept HEAD requests. |
A publicly accessible URL | The source file must be reachable via a URL that Apsis One can fetch from. It cannot require authentication. |
Knowledge of the source file structure | You need to know the property names in your source (e.g. |
Supported Content-Types | The server must return one of these Content-Type headers: |
💡 Test your source URL
Before creating your Dynamic Asset, verify that your source URL works by testing it with a REST API testing tool (e.g. ReqBin). Confirm it returns valid JSON, XML, or RSS and that the server responds to both GET and HEAD requests within 5 seconds.
Create a Dynamic Asset — step by step
Go to the Email tool start page.
Click the Assets tab.
Click Create New Asset.
Give the Asset a descriptive name (internal only — choose something that helps you and your colleagues find it later, e.g. "Hotel listing – 1 item per row").
Select Dynamic Asset as the type and click Next.
The Email editor opens. Design your Asset layout using Rows, Columns, and Elements — just like building an email. Add Heading, Paragraph, Image, and Button elements where you want the dynamic content to appear.
Add placeholders where the dynamic data should go. Type the placeholder directly into the element — see the Placeholders section below for syntax and details.
Configure Loop settings in the Row settings panel if your source contains multiple items — see Loop settings.
Click Asset settings in the bottom bar to set the name, description, Feed URL, and language — see Asset settings.
Click Preview to check the layout. Note: you will still see the placeholders in the preview — they are only replaced with real data when the Asset is added to an email.
Click Finish to save your Dynamic Asset.
⚠️ Browser extensions
Some browser extensions may interfere with the Email editor. If the editor behaves unexpectedly, disable your browser extensions and refresh the page.
Placeholders
Placeholders are the key to Dynamic Assets. They tell Apsis One where to insert data from your source file.
The placeholder syntax is: {{propertyName}}
The property name must match exactly what's in your source file. If your JSON has a property called title, your placeholder is {{title}}. If it has imageUrl, the placeholder is {{imageUrl}}. This is case-sensitive.
Example: JSON source → placeholders
If your source file looks like this:
[
{
"id": 1,
"title": "Radisson Blu Waterfront Hotel",
"description": "Unwind and retreat at this new luxury hotel next to the Stockholm Waterfront Congress Centre, the area's premier events and conference venue",
"rating": 4,
"beds": 2,
"imageUrl": "https://media-cdn.tripadvisor.com/media/photo-m/1280/19/69/4c/48/exterior.jpg",
"url": "https://www.tripadvisor.com/Hotel_Review-g189852-d1879047- Reviews-Radisson_Blu_Waterfront_Hotel-Stockholm.html"
},
]
Then your Asset would use these placeholders:
Where in the Asset | Placeholder | What it becomes |
Heading element |
| Radisson Blu Waterfront Hotel |
Paragraph element |
| Unwind and retreat at this luxury hotel... |
Paragraph element |
| 4 |
Paragraph element |
| 2 |
Image element → Image URL tab |
| The hotel exterior image: |
Button → Link Settings → Feed Property |
| https://www.tripadvisor.com/Hotel_Review-g189852-d1879047-Reviews-Radisson_Blu_Waterfront_Hotel-Stockholm.html |
Result in email:
Placeholder types
Apsis One supports two types of placeholders:
1. Simple placeholders
Used when each item in your source maps directly to one "card" or block in the email. The placeholder references a single property.
Syntax: {{propertyName}}
Examples: {{title}}, {{description}}, {{imageUrl}}
2. Sequence placeholders
Used when you want to display multiple items side by side in the same Row — for example, two hotels in a two-column layout. Sequence placeholders include a number that indicates which item in the sequence to display.
Syntax: {{seq:N.propertyName}} where N starts at 1.
There are two numbering patterns:
Pattern | When to use | Example |
Starting at 1 | When displaying multiple items in the same Row (e.g. two hotels side by side in a two-column layout). |
|
Starting at 0 | When displaying one item per Row with Loop settings (e.g. a rooms list where each room gets its own Row, looped from a nested array). |
|
Without a number | You can also use a sequence placeholder without a number when there is only one item per Row in the loop. |
|
Accessing nested properties
If your source file has nested objects or arrays, use dot notation to reach the property you need:
Source structure | Placeholder |
Nested object: |
|
Nested array: |
|
Sequence with nested: first item's review |
|
Using placeholders in links
To use a placeholder as a link (e.g. for a "Book now" button), set the Link type to Feed Property in Link Settings, then enter your placeholder (e.g. {{url}}).
Placeholders in XML and RSS sources
If your source is XML or RSS, the placeholder name maps to the tag name. For example, if your XML has <title>Hotel Name</title>, use {{title}}. For XML attributes, use {{tagName.attributeName}} — for example, {{img.src}} for <img src="...">.
Where to use placeholders
Placeholders can be used in any element in the Email editor:
Element | Where to type the placeholder |
Heading / Paragraph | Type directly in the text field, e.g. |
Image | In the Image URL tab, enter the placeholder, e.g. |
List element | In a list in an email, for instance |
Button / Link | In Link Settings, set Link type to "Feed Property" and enter the placeholder, e.g. |
HTML element | Type placeholders directly in the HTML code |
⚠️ Edit placeholders in the Asset, not the email
Placeholders should only be edited when editing the Asset directly from the Assets tab. If you make changes to a Dynamic Asset after adding it to an email draft, those changes only affect that specific email — not the original Asset.
Loop settings
Loop settings control how many items from your source file the Dynamic Asset displays, and from which part of the file it reads. You find them in the Row settings panel (right side) when a Row is selected in the Structure Panel.
Setting | What it does |
Use root level items | When checked, the Asset reads all items from the root level of your source file. The Property and Number of items fields disappear — the Asset simply loops over every root-level item. When unchecked, additional settings appear so you can specify exactly where and how many items to read. |
Property | Only visible when "Use root level items" is unchecked. Enter the dot-separated path where the Asset should find the items array (e.g. |
Number of items | Only visible when "Use root level items" is unchecked. How many items from the source should be displayed. Maximum per Asset: 50. |
First / Last | Only visible when "Use root level items" is unchecked. Whether to fetch items from the start (First) or the end (Last) of the array. |
Add Spacer between rows | Always visible. When checked, adds a Spacer element between repeated items. You can configure the Spacer's background colour and height (in px) in the settings that appear below. |
💡 Even division for sequence placeholders
For best results, set the Number of items to a value that can be evenly divided by the number of sequence placeholders in your Asset. For example, an Asset with {{seq:1.title}} and {{seq:2.title}} (2 placeholders) works best with an even number of items (4, 6, 8, etc.). If the number of items isn't evenly divisible, the last row may contain empty cells.
Example: nested source file with Property path
If your source file looks like this:
{
"company": "My Company",
"source": {"created": "2020-01-01",
"version": 2,
"items":[
{"id": 1,"name": "Item 1"},
{"id": 2,"name": "Item 2"}
]
}
}The root level is an object (not an array), so you can't use "Use root level items". Instead, enter source.items in the Property field — the Asset will then loop over the items inside that nested array.
Asset settings
Click Asset settings in the bottom bar (or top-right corner) to configure the Asset's metadata and feed connection.
The Asset settings panel has two tabs:
1. Asset tab
Field | What it does |
Name (internal only) | A descriptive name for your Asset. Use a naming convention that helps you and your colleagues find the right Asset (e.g. "Product card – 2 items per row – JSON"). |
Feed URL | The URL of your external source file (JSON, XML, or RSS). This can also be configured when you add the Asset to an email. |
Description | Internal description for reference. |
Language | The language of the Asset content. |
2. Design tab
Adjust the width and other design settings for the Asset.
💡 What is NOT saved with Dynamic Assets
Just like regular Assets, Dynamic Assets do not save Row Segmentation settings or Google Analytics/UTM settings. These must be configured each time you add the Asset to an email. UTM settings applied in the email's Settings tab will be used for all links in the Asset (including dynamic links). You may override the generic settings and use link specific settings in the email.
Important notes
Note | Details |
Source file size | Maximum 10 MB. Files over 10 MB must be reduced or filtered before use. |
Server response time | Apsis One waits up to 5 seconds for the source server to respond. If it takes longer, the request is cancelled and an error is shown. |
HEAD requests | Your server must accept HEAD requests. Test with a REST API tool if unsure. |
Maximum items per Asset | 50 items per Asset instance. To insert more, add the Asset to the email again with different filtering. |
Placeholder case sensitivity | Placeholder names are case-sensitive. |
XML g: tags | If your XML source contains |
What's next?
Using Dynamic Assets — Add the Asset to an email, configure the feed URL, filter items, choose when to fetch data, and use Segmentation in source files.
Troubleshooting Dynamic Assets — Error handling, common issues, and source file validation.
Email Assets — Regular Assets and how they work.
Design Elements — Reference for all elements in the Email editor.










