Skip to main content

Add Dynamic Content to Your Automations

Learn how to build custom Dynamic Content Layouts in your Automation emails

Ira avatar
Written by Ira
Updated yesterday

Use dynamic content in automations to personalize emails with event-triggered data like product names, order totals, or custom event properties.

This guide will help you set up dynamic layouts and choose the proper event properties.


Before You Begin

  • Dynamic content is only available in Automation workflows, not Campaigns.

  • Dynamic content layouts appear only if your workflow trigger is event-based. Entity-based triggers (e.g., Product back in stock) do not support dynamic content. Check the trigger table below.

  • Dynamic content list sections can only be connected to properties of the list type (arrays). For example, in an order event, the line_items property is a list containing all purchased products. You can use it as the data source (event.line_items) to repeat content for each item.

  • If you're uncomfortable working with API and event-based properties, use default event layouts and items.

  • For custom events from third-party integrations (e.g., Loox, Wishlist Hero, Zapier): Not all third-party custom events pass list-type properties required for dynamic content layouts. Check the integration documentation or API logs to confirm what data is available before building your email.

  • For Shopify event properties, refer to Shopify's Liquid documentation.

  • Abandoned Cart and Order Confirmation blocks do not support payloads from custom events.

How Does It Work?

Dynamic content is built around two core components:

  1. Dynamic Content Layouts: Empty containers in your email where you place repeatable or conditional content (such as product details).

  2. Event Properties: Data points passed from the event that triggered the email, such as item.name, item.quantity, or item.product.product_image_urls[0].

When a contact triggers an automation, the selected layout is populated with data from the event. For example, if they placed an order, the layout could automatically display the names and images of the products they purchased.

Dynamic content layouts appear only for event-based workflow triggers. If your trigger is entity-based, you won't see dynamic content options in the Email Builder.

Event-based Triggers

Entity-based Triggers

Added product to cart

Product back in stock

Clicked message

Special occasion (Birthday)

Entered segment

Exited segment

Marked message as spam

Message delivery failed

Message sent

Opened Message

Order canceled

Order fulfilled

Order refunded

Ordered product

Paid for order

Placed order

Started checkout

Subscribed to Marketing

Viewed page

Viewed product

Benefits of Dynamic Content

Using dynamic content in your automations can significantly impact the effectiveness of your email marketing strategy.

The main advantage of dynamic content is that it allows you to create custom email items and layouts tailored to your specific needs and goals, rather than relying on default items and layouts.

Below are some other ways you can use it:

  1. Personalization: Tailor email content to each individual contact based on their actions and preferences. This creates a more engaging experience and can lead to higher conversion rates.

  2. Relevance: Ensure emails are always relevant to the contact at that particular moment.

  3. Efficiency: Create a single email template customized for each contact based on their specific actions and preferences. This saves time and effort while still delivering highly personalized emails.

  4. Flexibility: Experiment with different layouts and designs without creating multiple versions of the same email. This helps you find the optimal combination of elements that resonates best with your contacts.

Setup Process

Step 1: Choose an Event-Based Workflow Trigger

Go to Automations Create Workflow and select either a preset workflow (e.g., "Order Confirmation") or a custom one. Then, choose an event-based trigger.

Step 2: Select a Dynamic Content Layout

  1. Open the Email Builder step of your workflow.

  2. Drag in the dynamic content layout. This block will remain empty until populated with event data. Alternatively, you can use preset dynamic blocks prefilled with product items.

Step 3. Choose Event Properties

Once you’ve added an empty Dynamic layout, select a data source (based on your workflow trigger). Then, add content blocks such as text, images, or buttons to the layout. The data for these elements will automatically pull from the selected data source.

Choose event properties:

We have a selection of categories that store the actual data sources. You can think of these categories as folders on your computer. Similarly, the data sources are files inside those folders. If you only want to see the information from a specific file, you should open it (in our case, you should pick it as a data source).

Why is everything under "Raw"?

The "Raw" folder contains unprocessed data from your store backend. Event properties are organized exactly as your platform (e.g., Shopify, WooCommerce) sends them. You may see subfolders like "Fulfillments" or "Refunds" – choose the root folder (e.g., "Line Items") to pull all items, regardless of fulfillment status.

Now, to the section naming logic, we use the naming provided by your store backend. Dynamic layout pulls the data directly from your store backend, and we do not process it in any way.

Here's an example of categories from a Shopify store pulled from a Placed Order event:

Example: Rebuilding Ordered Products Item Using Dynamic Content Layout

Let's say you want to change the layout of the default Ordered Product item that Omnisend provides. In our example, we'll put the product images on the right side of the layout and the product name and price on the left.

Select the data source: Select the 'Line Items' data source, which is located under the 'Raw' root folder as a data source for the entire layout.

We select the 'Line Items' data source directly from the 'Raw' category because we want to pull the data about all the ordered products, not only those that are fulfilled or refunded (Fulfillments/Refunds subcategories would be picked for that purpose).

Add items to the layout: Now that we've picked the data source for our Dynamic layout, it's time to add some items we'd like to include in our email content. First, let's add an Image item to show the ordered product images to the right side of our Dynamic layout.

We'll need to pick the data source that will allow us to pull the ordered product images into the layout. To do that, we need to search for the Product Image URLs data source (URLs, because the images are hosted on the store backend, where they have their URLs).

You can also add the Product URL to the image. So, when contacts click, it'll redirect them to this product's page in your store. To do this, add the relevant data source to the 'link to' field.

We need to do this once, and the relevant product images and product URLs will be added to each Image item within the single Dynamic layout.

Now, let's add a Text item to the left side of our Dynamic layout, where we'll include Product Names, Currency, and Prices. For that, we'll need to pick each data source:

  • For Product Name, pick 'Name' under the 'Line Items' section.

  • For Currency, pick 'Currency' under the 'Raw data/Raw' section.

  • For Product Price, pick 'Price' under the 'Line Items' section.

To achieve the desired results, you should experiment with data sources and their respective categories based on your specific use case.

If you use a custom event as your trigger, verify your custom event data:

  1. Go to Store Settings API Custom Events.

  2. Find your event and check what fields are being passed.

  3. Go to Store Settings API API logs to see the actual request body and confirm your properties are included.

If properties aren't appearing in the personalization menu, they may not be part of the event payload. Check with your developer or the app/integration sending the event.

Use Cases

Below are examples of how you can use dynamic content layouts and event properties in your workflows.

Abandoned Cart with Discount

Use dynamic content layouts and event properties to rearrange the email layout and add a discount percentage.

  • Select the “Added Product to Cart” event as the workflow trigger.

  • Populate the email with the contact’s abandoned cart items.

  • Use Liquid tags to calculate and display the discount offer.

  • Use event.line_items to show product names, images, and prices dynamically.

This ensures the email reflects the exact products left in the cart.

Loyalty Changes, Information, or Updates

If you want to inform customers about loyalty program updates, use dynamic content layouts and event properties to display relevant information.

  • Select a loyalty-related event (custom events from third-party apps) as the trigger.

  • Personalize the email with the customer’s loyalty details.

  • Display updated points, tier changes, or rewards information dynamically.

Product Review Request

Encourage customers to leave a product review by dynamically inserting order and product details.

  • Select the Paid Order event as the trigger.

  • Populate the email with the customer’s order information.

  • Add links to the specific product page to simplify the review process.

WIX Bookings

To notify customers about WIX bookings, use dynamic content layouts and event properties to personalize the message.

  • Select the Booking event (custom event) as the trigger.

  • Populate the email with booking details and related information.

Calendar Events via Custom Events API

To inform customers about upcoming calendar events:

  • Use a custom event to trigger the workflow.

  • Populate the email with relevant event details using dynamic content layouts and event properties.

Places to Visit

If you want to share travel-related information:

  • Select a custom event as the trigger.

  • Use event properties to personalize the email with the customer’s travel details.

Using dynamic content layouts and event properties allows you to create personalized, event-based emails. By selecting an appropriate workflow trigger and applying event properties, your email content automatically adapts based on the event that was triggered.

FAQ

Why aren't all workflow triggers event-based?

Some triggers aren't events by nature, like product back-in-stock or anniversary.

Why are my personalization tags blank in test emails?

Test emails don't populate dynamic content or personalization tags. This is expected behavior. Test emails use a system-generated placeholder contact with no real data.

To validate personalization:

  • Use Dynamic Preview in the Email Builder and select a real contact with event history.

  • Trigger the automation to receive a real email. For example, place a test order to trigger the Order Confirmation automation.

How do I need to use Raw / Line items, not Raw / Line items / Product / Collections?

You should select the Raw/Line Items collection for your products as a customer. When you choose a dynamic list source, select Line Items since you'll usually need to iterate through your products. Your store platform defines the properties used in events. In this case, Line Item means Product.

How can I know which description to choose?

You can analyze the event payload and see which property has the information you want.

Can we add a custom naming for the passed event, similar to liquid templating? For example, have [[line_item.productURL | 'Your product link']] instead of having a full URL path?

Not at the current moment. There will be improvements made, but no ETA.

Do conditional statements work in a dynamic layout?

No, these calculations must be made while implementing custom events from your end.

My dynamic layout is not giving us any option and has no data - why is that? How can I have data get populated in our dynamic layout?

If the trigger is built on an Event, its properties must be available. Double-check if you have an event-based trigger in the table above.

Does dynamic layout gather only order-related events?

The dynamic layout can also gather other events if the trigger is built on the event.

Can the API-connected stores use a dynamic layout and have the option to populate all passed data?

Yes, you can use dynamic layout, and you will have the option to populate all passed data, including shippingMethod, trackingCode, courierTitle, courierUrl, etc.

What does the alias item mean in this note?

This is a syntax used in some programming or scripting languages to access a property of an item in a list. In the example given, the alias' item' refers to each item in the list, and 'listProperty' is the specific property of that item being accessed. So if you have a list of items, and each item has a 'listProperty,' you can use this syntax to access that property for each item in the list.

I'm using {{event.properties}} but it's not working. What's wrong?

Omnisend uses square brackets [[ ]] for all dynamic content and personalization, not curly braces {{ }}. If you're pasting code from external templates or other platforms, replace {{ with [[ and }} with ]].


If you didn't find the answer to your question, contact our Support Team through the in-app chat or at [email protected].

Did this answer your question?