When a data source contains a list of items (such as multiple products), a repeater can be used to create a copy of a layout element for each item in the data source. Or, in the case of a product feed, a copy for each of the items (based on their unique ID) that you specify in the Products field.
When to use repeaters
Here are some common situations where a repeater can be used, with examples:
Product feed: A common approach is to use a repeater on a column to duplicate product cards. Product IDs / SKUs and personalized fields are required to show the incoming data.
Abandoned cart: Use the From/To feature to control how many items are shown. Using "From 1 to 1" you can display the first product prominently as a hero image, then show the rest using "From 2 to 4" or however many you want to show.
Multi-channel promotions: Some data becomes available simply by adding the data source, but a repeater is needed to access and display individual object data (such as name and image URL). The placement of the repeater in the hierarchy depends on which element is to be repeated.
Vouchers: Similar to promotions, where a hierarchy is used in the layout.
Product feed module using repeaters
A common use case for repeaters is a product feed.
Here you can see how to do that using one of the starter modules.
To see how the layout looks with actual data, specify the IDs / SKUs of two specific items from the product feed in the Products field:
Then select Preview with data to show the data:
This confirms that everything has been set up correctly.
Things to keep in mind
Here are some further things to keep in mind about repeaters when using a product feed:
The repeater controls what gets duplicated — the element carrying the repeater (column or row), and everything inside it, is what gets repeated per product or object. Do not add extra columns manually.
When working with data sources other than the product feed, the number of items in a sendout will likely vary per contact (for example, each customer has a different number of abandoned cart products). For cases where no items are available at all in the configured data source, consider hiding the layout or providing fallback content.
SKUs (product reference IDs) must be added on the wrapper or row where the data source is configured, otherwise the repeater won't know what data to use and the module will be hidden.
Personalized fields must be used in the element being repeated, otherwise product-specific information (image, title, price, and so on) will not be shown for every item.
Repeating columns
When repeating columns, it's recommended to use a maximum of three per row. If your data contains more items, you can control the number of columns per row by adjusting the Custom size setting:
- 50% width: two columns
- 33.3336% width: three columns
- 25% width: four columns
A new row is automatically created if the total width exceeds 100%.
This example shows a custom size of 50% with four products:
Settings and limits
The repeater can be limited to only repeat part of a list. Use the From and To settings to decide which items to repeat. By default, a repeater will repeat all items present. Example setups:
- From: 2, To: last item (leave field empty) — shows all items except the first
- From: 1, To: 1 — shows only the first item
- From: 2, To: 3 — shows items two and three
- From: 1, To: last item (leave field empty) — shows all items
Scenarios where these settings are useful:
- When you have a three-column layout
- When you only want to show the first item in a layout
- When you want to split the list of items into different parts of the layout
- When the data source includes more items than you want to show
Common issues
Here are a few common situations that users of repeaters might run into:
"I added extra columns manually, and now I see double products"
Remove the extra columns. The repeater duplicates the element it's placed on — you only need one column. Trust the repeater to create duplicates for each product.
"My product feed module doesn't show anything when the email is sent"
Check that you've added at least one product reference to the module. Without these, there's no data and the module is hidden automatically.
Also verify that personalized fields are selected — without them, the content has nothing to display.
It could also be that one or more products are missing from your product feed.
"The product images and names are missing, but the layout shows up"
You've likely placed a repeater and added product references, but forgot to set up personalized fields. Go back to the module and map each element (image, title, price) to the corresponding field from the data source.
"I connected a promotion data source, but I can only see the number of promotions"
You need a repeater to access the promotion's details (name, image URL, description). Add it to the element where you want the details displayed. Remember to include personalized fields.
"I don't know which fields are mapped in the product feed"
Feed mapping can be unclear. Check with your team or Voyado AM to confirm which fields are available and what item_id vs. item_group_id means in your specific setup.
Repeaters in repeaters
In some cases, a data source can have items that include other items. The order action data source is one example. Here, you'll need to place a repeater inside the structure of another repeater:
-
Wrapper — Data source: "Order action"
-
Row — Repeater: "Order line items"
-
Column
- Text — Repeater: "Discount items"
-
Column
-
Row — Repeater: "Order line items"
Product feed repeater module
Here is how to manually build a layout to work with a product feed using a repeater:
- Inside a row or wrapper, create a column that represents one product in your layout.
- Inside that column, add the elements you need — for example, an image placeholder, a text field for the product name, and a text field for the price.
- Choose Product Feed as the Data source for the row or wrapper containing your column.
- Place the repeater on the column element itself, not on the individual elements inside it, since the whole column is what will be duplicated.
- Select personalized fields for each element: map the image placeholder to the product image field, the title text to the product name field, and the price text to the price field.
- Add SKUs to the module to tell the repeater which products to display.