Archived docs Get your API Key
Get started
Tutorials
Guides
Reference
Help for coding agents
πŸ€– AI Assistant

Templates and the Workflow tab

A dataset holds data. A template describes a video with blanks in it. Linking a template to the automation says which column fills which blank β€” the mapping β€” and which rows that template gets β€” the filter.

If you created the automation from a template, that template is already linked and mapped. If you imported a file, connected a source or started blank, linking is the step between having data and having videos.

The Workflow tab

The Workflow tab draws the automation as a diagram, in three blocks from left to right:

  • Dataset β€” the table, with its row and column count. Click it to open the rows (the Input dataset tab).
  • Templates β€” one node per linked template. The wire from the dataset to each template carries a filter pill saying how many rows that template gets. Under each template, a line such as β–Ά 42 videos Β· 1 failed opens the Output videos tab narrowed to that template, and a button renders it.
  • Destinations β€” one node per place that template's videos are delivered to.

What each part does when you click it:

Click Opens
The dataset The rows.
The filter pill on a wire That template's filter.
A template Its mapping.
The line under a template Its videos, in the Output videos tab.
The button under a template The Render videos dialog, or whatever the template needs first. β†’ The button under each template
A destination That destination, to change or remove it.
Add a destination / + A new destination for that template. β†’ Destinations
Link a template A new template for this automation.

While a batch runs on a template, a ring round its node fills as rows finish and the line under its name counts them.

Linking a template

Press Link a template at the bottom of the Templates block. The dialog of the same name opens: pick the template, map its variables (below), and press Create link.

An automation can feed up to 20 templates β€” the same rows driving a landscape version and a vertical one, or an English one and a Spanish one. Each link has its own mapping, its own filter, its own destinations and its own results.

The mapping dialog

Clicking a template opens Edit mapping for it. The dialog lists one line per template variable, not one per column: the template states what it needs, the dataset supplies it.

Template variable Type Column from your dataset
headline * Text title auto
price Number list_price auto
photo * Image or video photo_url auto
agent Text Not mapped template default
rooms * List of items Pick a column required

(The column header reads "Column from your CSV", "Column from your sheet" or "Field from your JSON" depending on where the data came from.)

What each part means:

  • A star means required. The template cannot render without it, so a required variable with no column blocks the link, and its dropdown says Pick a column.
  • Optional variables can stay "Not mapped". The template's own value is used β€” the tag says template default.
  • auto means JSON2Video matched it for you, by name. Matching ignores case, spaces, underscores and hyphens, so list_price, listPrice and List Price all find price. The tag stays until you touch the line, so a guess never passes for a decision β€” check them.
  • The type is written in the words you would use: a photo variable reads Image or video, not object.
  • The dropdown only offers columns that can work. A number variable never lists a list column; a list variable accepts nothing but a list column.
  • Variables that belong together are grouped. A template that groups its variables β€” intro.title, intro.subtitle β€” shows the group folded, with how many fields it holds. Unfold it to map one field and leave the others to the template, or map the whole group to one object column. A field whose group is mapped as a whole shows fed by the group.
  • Row 1 with this mapping at the bottom previews the first row, live. That is what catches swapped columns: two columns in the wrong dropdowns look fine in a list and are obvious in a preview.

Press Create link (or Save mapping when editing). Unlink, in the footer when editing, removes the template from the automation: its mapping and its results go, your rows are not touched, and you can link it again later with a fresh mapping.

Renaming a column never breaks a mapping β€” it remembers the column itself, not what it is called.

A column of links can feed a photo

A template asks for a photo as a whole thing: the file and the settings around it, such as the framing and the zoom (Objects). A Google Sheet or a CSV holds one value per cell β€” so there is one, and only one, conversion in the whole feature:

A text column mapped to a photo, an audio or an avatar variable fills the file address, and nothing else changes. The template's own settings β€” the aspect ratio, the zoom β€” are kept as its author left them.

The dialog says so under the line, naming the column: its text fills url, and the template's own settings are kept.

That is what lets a spreadsheet of product links drive a template built in the Editor. Nothing else is ever converted: a number is not read out of a line of text, and a value that does not fit its column is reported by the pre-flight check, never quietly changed.

A column that cannot satisfy a variable says so on its line: map a column of text to a Voice variable and the line names the fields a line of text cannot fill, instead of mapping it and failing on every row.

Lists and repeating scenes

If the template has a scene that repeats over a list, the variable it repeats over appears as a List of items. Map a list column to it, and the item fields open underneath so you can map those too β€” which field of each item feeds which field of the scene.

A Google Sheet or a CSV at a URL cannot feed one. They hold one value per cell, and no column in them can hold a list of items with fields. Rather than let you create a link that would fail on every row, the dialog says so where the dropdown would be β€” no column can feed this β€” and explains:

rooms needs a list of objects. A spreadsheet row cannot hold one. Use a dataset you own β€” blank, from a template, or an imported CSV β€” or an API source, or pick a template that does not repeat scenes.

A table you own is not in that group: import a JSON file, or add a list column and fill it in.

If nothing feeds the list at all, every video repeats the template's own items β€” the same ones in every video. The pre-flight check warns you about it.

The button under each template

The button under a template's name always says what that template needs next:

The button says It means
Render N Ready. N is the number of rows this template gets that have not rendered, failed or been refused yet.
Retry N failed Nothing new to render, but N rows failed. Opens the Render videos dialog with those rows.
Re-render N expired Nothing new to render, and N videos have expired with no destination keeping a copy. Each one is charged again.
Up to date Every row this template gets already has a video, or was refused by the check.
Rendering… A batch is running on this template.
Finish mapping Something the template needs has no column feeding it.
Fix mapping Something that used to work has broken β€” a column removed at the origin, or a template that changed.
Fix filter The filter uses a column that no longer exists.

While the button is amber β€” Finish mapping, Fix mapping, Fix filter β€” nothing can be rendered from that template, and clicking it opens the dialog that fixes it. That is the point: a half-mapped template renders videos with holes in them. Under the name, the template's line says what is wrong in a word (Needs mapping, Template changed, Filter broken, Template missing, Cannot render); when it is healthy it says how many variables are mapped.

When the template or the data changes

Several things put a template into an amber state, and each is fixed in the mapping dialog. None is ever fixed by guessing.

  • The template's variables changed. When an edit adds, removes, renames or retypes a variable, the link says Template changed: "Check that every variable still points at the right column, then save." Saving the mapping is what tells JSON2Video the mapping is still what you meant, and it unblocks rendering. Any other edit β€” moving an element, a new font, different default values β€” does not stop the link: the mapping cannot be wrong about it, and the next render simply uses the new version. Videos already rendered are kept; they are not made again unless you ask. See When a row renders again. The Field mapping button above the table opens the mapping directly.
  • The template gained a variable. Nothing in the table feeds it. Map an existing column, or press Add the N missing columns: they arrive with the template's names, types and required flags, already mapped.
  • A variable changed shape β€” the photo variable gained a zoom, an object lost a field. The line is tagged changed, says what is missing, and the dialog offers Update N columns. That keeps the column, its name and every row's data, and takes the template's current shape.
  • The origin stopped sending a column that the mapping uses. The column and its values are kept, but the template is blocked until you map a different column. See Syncing.
  • The template was deleted. The link says Template missing. Unlink it, or restore the template.

On a connected table, missing columns cannot be added here β€” the origin decides what columns there are. Map an existing column, or add the missing ones at the origin and sync again.

Filters

By default a template gets every row. A filter narrows that, per template: a dataset feeding two templates can send its cheap products to one and its expensive ones to the other.

The pill on the wire says what the filter does β€” All 120 rows (grey, no filter) or 34 of 120 (blue). Click it to open Filter β€” Which rows [template] gets, which has two halves:

Rules. Press Add a rule and pick a column, a condition and a value β€” Price is more than 100. With two rules or more, choose whether a row has to match all or any of them. A filter holds up to 20 rules. The conditions depend on the column's type:

Column type Conditions
Text, Colour is Β· is not Β· contains Β· does not contain Β· starts with Β· is empty Β· is not empty
Number is Β· is not Β· is more than Β· is at least Β· is less than Β· is at most Β· is empty Β· is not empty
Date is before Β· is after Β· is on Β· is empty Β· is not empty
Option is Β· is not Β· is empty Β· is not empty
Yes / no is yes Β· is not yes
Object, List of items is empty Β· is not empty

A date rule only reads dates written year first (2026-09-16 or 2026/09/16); a date like 09/16/2026 could be read either way and never matches.

Rows. Below the rules, every row with a checkbox and a running K of N rows. Untick a row to take it out by hand. That is always an exclusion, never an inclusion, so a row added to the table tomorrow is in by default. A row the rules leave out cannot be ticked back in β€” change the rule instead.

On a connected table with no key column, rows cannot be taken out one by one: a row gets a new identity whenever its values change at the origin, so it would come back as a new row. Use a rule, or set a key column.

Press Save filter. Clear the filter sends every row to the template again.

The filter decides what the template's own Render N covers. It does not apply to rows you pick by hand β€” ticked rows, or a row's own Render button in the Input dataset tab.

If a rule uses a column that has since been deleted, the template says Fix filter and nothing renders from it β€” not even rows picked by hand β€” until the filter is fixed. A filter that names a gone column cannot say which rows you meant.

Destinations

A template can also say where its finished videos go. Every video it renders is delivered there as it finishes.

This matters more than it sounds. Rendered videos are deleted after 7 days, so a batch with no destination leaves you a week to download 500 files by hand. See What happens to the videos.

A template with no destination shows an Add a destination node β€” Deleted after 7 days. Click it and pick one of your saved Output destinations: a webhook, an FTP server, an SFTP server or an Amazon S3 bucket (Amazon S3 delivery). Destinations are created once, under Connections, and can then be picked for any template of any automation.

  • To add another, hover the template and press the + that appears. A template delivers to at most 10 destinations.
  • Click a destination node to change it to another connection, or Remove this destination. Removing only happens there, so a stray click on the diagram can never cost you a delivery.
  • Destinations already set on the template itself are kept; the ones you add here are added to them.
  • Connections are managed by account Managers and Admins. With a lower role the dialog says so; ask one of them to add the connection.

The result of each delivery shows on the render in Render logs, under Deliveries.

Next