Skip to main content

Creating Dynamic Assets

Build reusable email content blocks that automatically populate with data from your own external source — product feeds, blog articles, event listings, or any structured data.

Updated this week

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:

  1. You create an Asset in the Email editor, using design elements (text, images, buttons) just like a regular Asset.

  2. Instead of real content, you type placeholders (e.g. {{title}}, {{imageUrl}}, {{url}}) where the dynamic content should appear.

  3. You prepare a source file — a JSON, XML, or RSS file hosted at a URL — that contains the actual data.

  4. 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. title, description, imageUrl) to create matching placeholders.

Supported Content-Types

The server must return one of these Content-Type headers: application/json, application/xml, application/rss+xml, or text/xml.

💡 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

  1. Go to the Email tool start page.

  2. Click the Assets tab.

  3. Click Create New Asset.

  4. 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").

  5. Select Dynamic Asset as the type and click Next.

  6. 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.

  7. Add placeholders where the dynamic data should go. Type the placeholder directly into the element — see the Placeholders section below for syntax and details.

  8. Configure Loop settings in the Row settings panel if your source contains multiple items — see Loop settings.

  9. Click Asset settings in the bottom bar to set the name, description, Feed URL, and language — see Asset settings.

  10. 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.


  11. 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

{{title}}

Radisson Blu Waterfront Hotel

Paragraph element

{{description}}

Unwind and retreat at this luxury hotel...

Paragraph element

{{rating}}

4

Paragraph element

{{beds}}

2

Image element → Image URL tab

{{imageUrl}}

The hotel exterior image:

Button → Link Settings → Feed Property

{{url}}

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).

{{seq:1.title}} and {{seq:2.title}}

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).

{{seq:0.name}}, {{seq:0.prize}}, {{seq:0.beds}}

Without a number

You can also use a sequence placeholder without a number when there is only one item per Row in the loop.

{{seq.rating}}

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: { "hotel": { "name": "..." } }

{{hotel.name}}

Nested array: "reviews": [{ "comment": "..." }]

{{reviews.0.comment}} (array index starts at 0)

Sequence with nested: first item's review

{{seq:1.reviews.0.comment}}

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. {{title}}

Image

In the Image URL tab, enter the placeholder, e.g. {{imageUrl}}

List element

In a list in an email, for instance {{description}}

Button / Link

In Link Settings, set Link type to "Feed Property" and enter the placeholder, e.g. {{url}}

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. source.items).

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. {{imageUrl}} and {{imageurl}} are different.

XML g: tags

If your XML source contains g: tags (common in Google product feeds), you may encounter errors. See Troubleshooting Dynamic Assets.


What's next?

  1. 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.

  2. Troubleshooting Dynamic Assets — Error handling, common issues, and source file validation.

  3. Email Assets — Regular Assets and how they work.

  4. Design Elements — Reference for all elements in the Email editor.

Did this answer your question?