Both are in the Advanced blocks group of the block palette. Both read an array at a dotted path in the email’s data, usually under
data.*, so they’re filled in for transactional emails and journeys. See Personalization for where that data comes from.
Campaign emails have no
data, so a Repeater or Item List whose path starts with data. shows its “empty” text in a campaign. Campaigns can use data feeds instead: point the path at an array in global_feed or recipient_feed and the block fills in.Item List
1
Add the block
Open Advanced blocks in the palette and add Item List.
2
Point it at your data
Under Data Source, set Items path to the array to list. It defaults to
data.cart.items. For a Shopify order in a journey, use data.order.line_items.3
Set the total and button
Under Total Row, set Total path (default
data.cart.total). Under CTA Button, set the link. It can be a merge tag or Liquid, for example {{ data.cart.url }}.4
Style it
Choose which columns to show (Show Image, Show Variant, Show Quantity), whether to show the header row, and fonts and colors for items and prices. Set the Currency symbol and the Text when there are no items.
title, variant_title, quantity, price and image_url.
Repeater
A Repeater is a container: whatever you put inside it is repeated once per item.1
Add a Repeater
Open Advanced blocks and add Repeater.
2
Choose the array
Set Repeats over to the path of the array, for example
data.order.line_items (the default) or data.articles.3
Add blocks inside it
Drop blocks into the Repeater’s area on the canvas (Drop the blocks to repeat here).
4
Insert item fields
Select a text block inside the Repeater and open Merge Tag. A Current item group lists every field of your sample data’s first item as
{{ item.<field> }}.- Item variable: the name used inside the loop. It’s
itemby default, so fields are written{{ item.title }}. - Layout: Rows or Cards.
- Max items (0 = all): limit how many items are shown.
- Text when empty: shown once if the array is missing or empty.
- Gap between items, background, border and padding.
{{ forloop.index }} inside a Repeater to print the item’s position (1, 2, 3…).
Sample data for the canvas
Both blocks need sample data to show something useful while you design:- The Repeater badge shows ×N with sample data when it finds an array at its path, and No sample data at this path when it doesn’t.
- Set sample data in Preview as… under Template data. See Personalization.
- If the template has no sample data of its own, the Preview data section of the block offers Copy sample order to this template, which saves a ready-made example order you can edit.
Limits
- The path must be a plain dotted path such as
data.order.line_items. Liquid filters or expressions aren’t accepted there. - In the AMP version of an email, a Repeater’s contents are shown once, not per item.
- The data sent with one email can be up to 256 KB and 32 levels deep.
Troubleshooting
The list is empty in my test email
The list is empty in my test email
A plain test send uses the sample data saved on the template. Open Preview as…, add sample data and click Save, or click Send test with this preview context to use it without saving.
The Current item group doesn't appear in the merge-tag picker
The Current item group doesn't appear in the merge-tag picker
The picker shows it only for blocks inside a Repeater. Inside one, the group always appears with at least
{{ forloop.index }}. The item’s own fields appear only when the sample data (yours, or the built-in sample order when the template has none) has an array at the Repeater’s path.Prices show the wrong currency
Prices show the wrong currency
The Item List prints the Currency symbol you set on the block before each price. It doesn’t read a currency from your data.