← All features

Dynamic templates

One invoice template. Any number of line items.

Real documents don't have a fixed row count — invoices have 3 line items or 30, and some sections only apply sometimes. Mark a group to repeat per data row, and another to show only when a condition is true, and one template handles every case.

Nimo illustrating Dynamic templates

Rows that fit the data

A repeating group expands once per array entry — one invoice template handles 3 line items or 300, no template variants.

Sections that show only when relevant

Hide or reveal a group based on whether a value is truthy — a discount line, a warning, an optional clause.

Free on every plan

Both directives are part of the core template engine, with no plan gate on using them.

What people build with this

Invoices with variable line items

A single invoice template that handles a one-item order and a thirty-item order identically.

Order confirmations

Show a shipping section only if shipping applies, a discount line only if a code was used.

Itemized receipts

Render receipts of any length from the same layout, no matter how many products were purchased.

Frequently asked

Do I need a separate template for orders with different numbers of line items?

No — a data-repeat group expands to fit however many entries are in the array you send, whether that's 1 or 100.

Can I hide a section unless a certain condition is met?

Yes — a data-if directive shows or hides a group based on whether a param is truthy, for things like an optional discount line.

Is this a paid feature?

No — repeat and conditional fields are part of the core template engine and available on every plan.

Stop building a template per row count.

One layout. Any number of items. Sections that show up only when they should.

Create your free account