With dynamic content in your Automations, you can use any event property in your email content. This means that you can send more relevant emails according to the exact event that your customers triggered in the store.
In this user guide, we will explain how to use dynamic content layouts and event properties in your emails. We'll explore a common use case for dynamic content layouts and event properties and guide how to implement them effectively in your email marketing automations.
Before You Begin
Dynamic content can only be found in Automation workflows; you can't access it in Campaigns.
Dynamic content layouts and event properties are only visible in the Email Builder if the selected workflow trigger is event-based. If the trigger is entity-based, you will not be able to view dynamic content layouts and event properties. You can check which triggers are event-based in this table.
This guide can help you learn about the event properties of the Shopify backend.
Important: We advise using default event layouts and items if you feel uncomfortable working with API and event-based properties.
How Does It Work?
Dynamic content is a powerful tool that allows you to create highly personalized and engaging emails for your customers. Using it, you can easily tailor the layout of your emails based on the data provided by your customers' actions.
Event properties allow you to include specific information about the events that triggered the email, such as product details or purchase history.
However, it's important to note that dynamic content layouts and event properties are only visible if the selected workflow trigger is event-based. This means that if the trigger is entity-based, you will not be able to view dynamic content layouts and event properties.
To make the most of this tool, it's essential to understand the difference between event-based and entity-based workflows and how to choose the right event properties for your emails.
Paid for Order
Order Status Changed
Product Back in Stock
Special Occasion (Birthday)
Clicked on Message
Contact Enters the Segment
Contact Exits the Segment
Added Product to Cart
Message Marked as Spam
Message Delivery Failed
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 that are tailored to your specific needs and goals, rather than relying on default Items and Layouts.
Below are some other why you can use it:
Personalization: By using dynamic content, you can tailor the content of your emails to each individual customer based on their actions and preferences. This can help create a more engaging and personalized experience for your customers, which can lead to higher conversion rates.
Relevance: When you use dynamic content, you can make sure that your emails are always relevant to the customer at that particular moment.
Efficiency: With dynamic content, you can create a single email template customized for each customer based on their specific actions and preferences. This can save you time and effort while still delivering highly personalized and effective emails.
Flexibility: Dynamic content allows you to experiment with different layouts and designs without creating multiple versions of the same email. This can help you to find the optimal combination of elements that resonate best with your customers.
To use dynamic content layouts and event properties, you need to follow these steps:
Step 1. Choose an event-based workflow trigger: To use dynamic content layouts and event properties; you need to choose an event-based workflow trigger. You can find which triggers are event-based in the table above.
Create your automation as usual. Go to Automations → Create workflow → Select the preset automation you would like to use or Create a custom workflow → check the trigger you would like to use in your automation.
Step 2. Select dynamic content layout: Once you have selected an event-based workflow trigger, you can select a dynamic content layout. This will allow you to create a dynamic email that changes based on the event that was triggered.
Select the email → Edit content → Drag and drop Dynamic Content layout to your email.
Step 3. Choose event properties: After selecting the dynamic content layout, you can choose the event properties you want to use in your email content. These properties will be populated with data based on the event that was triggered.
At this stage, it's essential to understand that you have added an empty Dynamic layout to your email. Once you select the Data source, which is based on the email trigger, you need to add Items to the layout, and the data in these items will be populated 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).
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.
As it's coming into our system unprocessed, the root folder name is 'Raw.' As we all know, the folders might contain other folders besides files; therefore, you may see some sub-folders (sub-categories) listed after the root folder 'Raw.' Here's an example of categories from a Shopify store pulled from a Placed Order event:
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 to the right side of the layout and the product name and price to the left.
The first thing you need to do is 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 sub-categories would be picked for that purpose).
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. So, firstly, let's add an Image item to show the ordered product images to the right side of our Dynamic layout.
Now, 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 customers 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.
You can check all the described steps in the GIF below.
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.
You should experiment with data sources and their respective categories based on your specific use case to get the desired results.
Extended abandoned cart: If you want to create an extended abandoned cart email with a discount offer, you can use dynamic content layouts and event properties to rearrange the layout and add a discount percentage. By selecting the added product to the cart event as the trigger, you can populate the email with the customer's abandoned cart items and then use liquid tags to calculate the discount offer.
Loyalty changes/information/updates: If you want to inform your customers about loyalty changes or updates, you can use dynamic content layouts and event properties to populate the email with the relevant information. By selecting a loyalty event (custom events from 3rd party apps) as the trigger, you can personalize the email with the customer's loyalty information and show any updates or changes.
Product review: To encourage your customers to leave a product review, you can use dynamic content layouts and event properties to link to the specific product in the email content. By selecting paid for order as a trigger, you can populate the email with the customer's order information and then use links to the specific product page.
WIX bookings: If you want to inform your customers about WIX bookings, you can use dynamic content layouts and event properties to personalize the email with the booking information. By selecting the booking event as the trigger (custom events), you can populate the email with the customer's booking information and other data.
Calendar events via custom events API: If you want to inform your customers about any upcoming calendar events, you can use custom events to trigger the workflow and then use dynamic content layouts and event properties to populate the email with the relevant information.
Places to visit: If you want to inform your customers about any upcoming places to visit, you can use dynamic content layouts and event properties to personalize the email with the relevant information. Selecting the custom event as the trigger lets you populate the email with the customer's travel information.
Using dynamic content layouts and event properties in email marketing allows you to create more personalized and relevant emails for your customers. By selecting an event-based workflow trigger and choosing event properties, you can create a dynamic email that changes based on the event that was triggered.
Why are not all workflow triggers event-based?
Some triggers aren't based on events because they have yet to be added or are not events by nature, like product back-in-stock or anniversary. Some triggers won't ever be events.
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 done, 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 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 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.