Skip to main content

Using Dynamic Assets

Add a Dynamic Asset to your email, connect it to your source file, filter items, choose when to fetch data, and use Segmentation for personalised content.

Using Dynamic Assets

After you've created your Dynamic Asset, the next step is to add it to an email and connect it to your source file. This article walks you through the entire process — from dragging the Asset into your email to choosing how and when the data is fetched.


In this article


Add the Dynamic Asset to an email

  1. Open the email you want to work with in the Email editor.

  2. In the Design Panel (right side), click the Assets tab.

  3. Find your Dynamic Asset — use the search bar or scroll through the list. You can toggle between Thumbnail and List view.

  4. Drag and drop the Asset into the Canvas.

  5. A settings panel appears where you configure the feed URL, filtering, and fetch behaviour.


Enter the feed URL

Enter the URL of your source file in the Feed URL field. The source must be a JSON, XML, or RSS file, maximum 10 MB.

Supported Content-Type headers in the server response:

  • application/json

  • application/xml

  • application/rss+xml

  • text/xml

⚠️ Server requirements

The server hosting your source file must accept HEAD requests and respond within 5 seconds. If the server doesn't respond in time, the request is cancelled and an error is displayed. You can test your server with a REST API tool like ReqBin.


Filter items to display

Filter the items to be displayed in your Dynamic Asset. The maximum number of items inserted into an Email activity is 50. To insert more items, you can add the Asset again. Filter them either by ID or by number of items.

Filter by ID

To filter by ID, expand the Filter by ID dropdown menu.

Enter the IDs that correspond with your item's IDs in the Insert ID input field.

Make sure that your file has a clear item ID for each item. For example, if you only want products with IDs 1, 3 and 5 to be displayed in your feed, then enter 1, 3, 5. Items will be placed in the Email based on the order of the IDs inserted in the filtering option.

⚠️ Item IDs must be numeric

When filtering by ID, the id value of each item in your source file must contain only digits (e.g. 1, 42, 10293). Letters and special characters (such as SKU-001, abc123, or item_5) are not supported and will cause the Dynamic Asset to fail to fetch the content correctly. If your source uses non-numeric IDs, replace them with numeric values before connecting the feed.

  1. Expand the Filter by ID dropdown.

  2. Enter the IDs separated by commas (e.g. 1, 3, 5).

  3. Items are placed in the email in the order of the IDs you enter.

Filter by Number of Items

To filter by a number of items, expand the Filter by Number of Items dropdown menu and complete settings.

Choose whether you want the number of items displayed to be fetched from either the start or the end of your file.

Enter a number. For example, to fetch the first 3 items from your source file, the settings will look like this:

  1. Expand the Filter by Number of Items dropdown.

  2. Choose whether to fetch from the start or end of the file.

  3. Enter the number of items (e.g. 3 to show the first 3 items).


Advanced: Property path for nested data

If your source file has the data items nested inside an object (not at the root level), you need to tell the Asset where to find them.

In the Advanced settings, enter the Property path — the dot-separated path to the array of items in your source file.

For example, if your source looks like this:

{   
"company": "My Company",
"source": { "items":
[
{ "id": 1, "name": "Item 1" }
]
}
}

Enter source.items in the Property path field. The Asset will then read items from that nested location.

⚠️ Review settings carefully


Make sure the feed URL, filtering, and property path are correct before proceeding. You can make manual editorial changes to the asset in the email once the content is fetched. To change settings within the asset for future use - go to the asset tab and edit the asset from there.


How to fetch the data

After configuring the feed URL and filters, you choose when the data is fetched from your source:

Option

What it does

When to use

Fetch all (or Fetch now)

Fetches the data immediately and locks it in. The email will be populated with the data as is in the file, regardless of any later changes to the source.

When you want to review and verify the content before sending. Good for one-off campaigns where you want to see exactly what will be sent.

At send out

Fetches the data at the moment the email is sent. The email will contain the most up-to-date data from your source.

When your content changes frequently and you want the freshest data (e.g. stock availability, latest blog posts, current prices).

💡 "Fetch now" appears when you've filtered by ID


If you used the Filter by ID option, the button shows "Fetch now" instead of "Fetch all" — but the behaviour is the same: data is fetched immediately and locked in.

⚠️ After fetching


Once data is fetched with "Fetch all" / "Fetch now", any changes you make to your source file will not be reflected in the email. To update, you need to re-fetch or choose "At send out" instead.


Caching behaviour

Understanding how Apsis One caches Dynamic Asset data is important — especially if your content changes frequently.

Scenario

Caching behaviour

Email tool — "Fetch all"

Data is fetched once and cached. This cached version is sent. Changes to the source are not reflected.

Email tool — "At send out"

When you add the Asset, a cache copy is created. If the email is sent within 5 minutes, this cache copy is used. If more than 5 minutes pass (or if you change the Row settings), the Asset fetches fresh data for a new cache copy. The same applies if the email is duplicated.

Marketing Automation (Email Node)

The Dynamic Asset fetches fresh content every 5 minutes. Profiles receive the version that was current at the time of their send — so different Profiles may receive different content if the source changes between sends.

Editing the fetched content

💡 You can adjust content after it's been fetched

Once the Dynamic Asset has fetched data into your email draft, the resulting content (text, images, and layout) can be edited directly in the email. You are not locked to exactly what was fetched — you can fine-tune copy, swap or resize images, and adjust the layout for that specific email if needed.

A few things to keep in mind:

  • These edits only affect this specific email — the original Asset and the source file are not changed.

  • Edits to the placeholders themselves (the {{propertyName}} tags) should still be made by editing the Asset from the Assets tab. See Placeholders and Sources for more on this distinction.


Dynamic Asset Row settings

After the Asset is added to your email, you can adjust the Row settings in the Structure Panel:

  • Row name — give the Row a descriptive name for easy identification in the Structure Panel.

  • Design and test — adjust the visual design as needed. Use Preview and Test in the bottom bar to check the result.


Segmentation in Dynamic Assets

You can personalise which items are shown to which Profiles by adding Segmentation data directly in your source file. This means different Segments of your audience can see different products, offers, or content — all from the same Dynamic Asset.

How it works

Add an APSIS_segmentation property to each item in your source file. This property specifies which Segments should see (include) or not see (exclude) the item.

Source file example (JSON)

[   
{
"id": 1,
"title": "Radisson Blu Waterfront Hotel",
"description": "Luxury hotel in Stockholm...",
"imageUrl": "https://example.com/hotel.jpg",
"url": "https://example.com/hotel-review",
"APSIS_segmentation":
{
"exclude":
{"operator": "ALL",
"discriminators": [ "usercreated.segments.male-6b2yx76ijg" ]
},
"include":
{"operator": "ANY",
"discriminators": ["usercreated.segments.sweden-hak97le6zl"]
}
}
}
]

In this example, the hotel item is excluded for all Profiles matching the "Male" Segment, and shown to any Profile matching the "Sweden" Segment.

Property

What it does

include

Show this item to Profiles matching the specified Segment(s).

exclude

Hide this item from Profiles matching the specified Segment(s).

operator: "ALL"

Profile must match all listed Segments.

operator: "ANY"

Profile must match any of the listed Segments.

discriminators

Array of Segment discriminator IDs. Find these in Audience → Segments.

💡 Alternative: Row-level Segmentation


You can also add Segmentation manually in the Row settings of your email (just like with any Row). This is a good option if you don't control the source file or if the segmentation logic is simpler. See Data tags and Segments.


Google Analytics and UTM tracking

Dynamic Assets inherit the Google Analytics / UTM settings from the email's Settings tab (bottom bar). When fetching content at send-out, UTM parameters are applied to all links in the Asset — including dynamic links populated from placeholders.

If you create the Asset from the Assets tab directly, you will not see Google Analytics settings in the bottom bar — they are only applied when the Asset is used inside an email.


Practical examples

Example 1: Single hotel card (simple placeholders)

One hotel per Row, using simple placeholders. Good for a vertical list of items.

Element in the Asset

Placeholder

Heading

{{title}}

Paragraph

Welcome to {{description}}

Paragraph

Rating: {{rating}} · Beds: {{beds}}

Image (Image URL tab)

{{imageUrl}}

Button (Feed Property link)

{{url}}

Loop settings: "Use root level items" checked, Number of items = 3, First.

Example 2: Two hotels side by side (sequence placeholders)

Two hotels per Row in a two-column layout, using sequence placeholders.

Column 1

Column 2

{{seq:1.title}}

{{seq:2.title}}

{{seq:1.description}}

{{seq:2.description}}

{{seq:1.imageUrl}}

{{seq:2.imageUrl}}

Button: {{seq:1.url}}

Button: {{seq:2.url}}

Loop settings: "Use root level items" checked, Number of items = 4 (fills 2 rows of 2 hotels each).

Example 3: Hotel with nested rooms (separate loop Row)

Display a hotel card in one Row, then a separate Row that loops over the hotel's rooms from a nested array.

Main article Row (simple placeholders): {{title}}, {{description}}, {{rating}}, image with {{imageUrl}}, button with {{url}}.

Rooms Row (separate Row with its own Loop settings):

  • In the Row's Loop settings, leave "Use root level items" unchecked.

  • Enter rooms in the Property field — this tells the loop to read items from the rooms array inside each hotel object.

  • Check Add Spacer between rows for visual separation between room cards.

  • Use {{seq:0.name}}, {{seq:0.prize}}, {{seq:0.beds}} as placeholders — the seq:0 prefix references the current item in the loop.

The result: one hotel card at the top, followed by a repeated room card for each room in the source (e.g. Standardrum, Superior-rum, Premium-rum, Svit) — each with its own image, price, and bed count.

Showing in the email as:

💡 All standard design options are available

A Dynamic Asset is built in the same editor as any other email content — which means all the design tools you're used to are available. You can control image sizes, set column stacking order for mobile, adjust fonts and colours, configure padding and spacing, set background colours, and style buttons — exactly like you would in a regular Asset or email Row. The only difference is that the content comes from placeholders instead of being typed in directly. Design your Dynamic Asset to look great first, then replace the static text and images with placeholders.


What's next?

  1. Creating Dynamic Assets — Design the Asset layout and add placeholders.

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

  3. Data tags and Segments — Row-level Segmentation and personalisation in emails.

  4. Email: Settings, Preview and Test — Preview and test your email with Dynamic Asset content.

Did this answer your question?