JetFormBuilder Repeaters can contain several rows and several sub-fields in each row. Nelx JFB Email Templates formats that data automatically so you do not have to build an HTML table yourself.
A repeater appears as a table on larger screens and as stacked cards on smaller screens. Both layouts contain the same repeater data.
Before you start #
Open WordPress Admin → Nelx JFB Email Templates → Form Templates, then open the template connected to your JetFormBuilder form.
Make sure the form already contains the Repeater Field you want to use.
For normal placeholders first, see Dynamic Content, Placeholders & Macros.
Insert a repeater #
For a Repeater Field named:
order_items
use:
{order_items}
in the Email Content.
That is enough for a basic repeater. The plugin reads the repeater rows and builds the email layout automatically.
How the repeater is displayed #
Desktop and tablet #
On larger screens, repeater data is displayed as a table.
Each sub-field becomes a column and each repeater item becomes a row.
For example:
| Product | Quantity | Shipping Method |
|---|---|---|
| Laptop | 1 | Express Shipping |
| Monitor | 2 | Standard Shipping |
Wide tables can scroll horizontally instead of forcing the email layout beyond its available width.
Mobile #
On screens up to 600px wide, the same data is presented as cards.
A repeater with two items becomes two cards, with each field label shown beside its value.
For example:
Entry 1
Product: Laptop
Quantity: 1
Shipping Method: Express Shipping
Entry 2
Product: Monitor
Quantity: 2
Shipping Method: Standard Shipping
Nothing is intentionally removed when the layout changes. The presentation changes, not the repeater content.
Field labels #
Repeater sub-field names are converted into readable labels for the generated output.
For example:
shipping_method
is displayed as:
Shipping Method
This means you do not need to build table headings manually.
Format option values inside a repeater #
A repeater sub-field may contain a raw value such as:
express_shipping
If that field uses manually entered options, add :options to that sub-field in the repeater configuration.
Example:
{order_items|shipping_method:options}
The email can then show:
Express Shipping
instead of:
express_shipping
Use a glossary inside a repeater #
If a repeater sub-field gets its options from a JetEngine Glossary, use:
subfield:glossary|ID
For example:
{order_items|product_type:glossary|45}
If glossary 45 maps electronics to Electronics, the email displays the label.
Configure more than one sub-field #
Separate sub-field rules with commas.
Example:
{order_items|product_type:glossary|45,shipping_method:options}
This means:
product_typeuses glossary 45;shipping_methoduses manual-option formatting;- the remaining repeater sub-fields are still displayed using their normal values.
You do not have to list every sub-field.
Full syntax #
The general format is:
{repeater_name|subfield1:glossary|ID,subfield2:options}
Only these two sub-field processors are supported in the repeater configuration:
glossary|IDoptions
A sub-field without one of those rules is displayed normally.
Example #
Suppose a repeater named team_members contains:
namedepartmentroleyears_experience
department comes from glossary 62, while role uses manually entered options.
Use:
{team_members|department:glossary|62,role:options}
A submitted row might contain:
name = Jane Doe
department = ops
role = senior_manager
years_experience = 8
The email can display:
| Name | Department | Role | Years Experience |
|---|---|---|---|
| Jane Doe | Operations | Senior Manager | 8 |
The fields that were not given special formatting are still included.
Media Fields inside a repeater #
A repeater can also contain a Media Field.
When a repeater Media Field is available in the submitted data, the generated repeater output shows the file as an attachment indicator with its filename instead of dumping the raw attachment data into the table.
For example, a document field may appear as:
📎 company-certificate.pdf
If the original filename has been preserved by the secure-document workflow, that original name is used for display.
The actual email attachment setup is separate from how the repeater is displayed. For attaching uploaded files to the email, see File Attachments & Secure Documents.
The live-upload experience itself is covered separately in Modern Media Upload.
Repeater Media Fields and email attachments #
When the Media Field is inside a repeater, the template’s attachment setting uses the Repeater Field, not the nested Media Field by itself.
For example, suppose your form contains:
task_attachment
└── task_file
where:
task_attachmentis the Repeater Field;task_fileis the Media Field inside it.
For the template attachment setting, use the repeater:
{task_attachment}
rather than the nested Media Field:
{task_file}
This allows the plugin to resolve uploaded files from the repeater rows.
The full attachment workflow is explained in File Attachments & Secure Documents.
Arrays inside repeater cells #
Some repeater sub-fields may return more than one value.
When a cell contains an array rather than a single value, the plugin formats that value instead of printing raw PHP or JSON data into the email.
The exact display depends on the submitted data, but you do not need to manually serialize the value before inserting the repeater.
Repeater content and email width #
Repeater tables can become wide when the form contains many sub-fields.
The desktop layout is designed to allow horizontal scrolling rather than breaking the surrounding email container.
On mobile, the card layout avoids the need to fit all columns side by side.
You should still keep repeater forms practical. A repeater with a very large number of sub-fields will naturally produce a long email.
A complete example #
Suppose an order form has a Repeater Field called:
order_items
with:
product_nameproduct_typequantityshipping_methodsupporting_file
product_type comes from glossary 45 and shipping_method uses manually entered options.
Use:
{order_items|product_type:glossary|45,shipping_method:options}
The email displays all five fields. Only the two configured option fields are transformed.
A Media Field such as supporting_file is shown as a file indicator when the submitted attachment can be resolved.
What not to do #
You do not need to:
- create an HTML table manually;
- create a second placeholder for the mobile layout;
- list every repeater sub-field in the placeholder;
- hide fields that do not need special processing;
- manually humanize every option value.
Use the simple repeater placeholder unless a sub-field specifically needs glossary or options processing.
If the repeater output is not what you expected #
Check these points first:
- Make sure you inserted the Repeater Field name, not the name of one of its sub-fields.
- Confirm that the submitted repeater actually contains rows.
- Check the glossary ID if a glossary-formatted sub-field is showing its raw value.
- For manually entered options, use
:options. - Make sure sub-field names in the repeater configuration exactly match the JetFormBuilder sub-field names.
- If an uploaded file is involved, make sure the repeater is also configured correctly under the template’s attachment settings when you want the file attached to the email.
- Test the email on both desktop and mobile if the repeater contains many fields.
Where to go next #
For the rest of the placeholder formats, see Dynamic Content, Placeholders & Macros.
For attaching uploaded files, continue with File Attachments & Secure Documents.
For the modern uploader itself, see Modern Media Upload.

