This article shows you how to upload a CSV to a flow's Photos step so each photo carries its own data — player name, jersey number, team, or any other field — that downstream steps can insert into rendered images automatically. (Beta)
What the CSV does
When you run a flow, every photo goes through the same pipeline. Without a CSV, all photos share whatever text you typed into a step's fields. With a CSV, each row describes one photo: one column holds the photo filenames and matches the row to a photo, and every column — including that match column — becomes a variable, a {Player First}, {Jersey}, or {Team} token that create steps can substitute per photo.
Matching is forgiving. It ignores capitalisation, ignores any folder path in the cell, and ignores the image extension, so a photo named player1.jpg matches a cell holding player1, PLAYER1.JPG, or player1.png. Photos that have no matching row render using the literal text you typed in that field (or blank, if the field contained only a token).
Because the extension is ignored, the match column doesn't have to hold filenames at all — a meaningful column such as Card Name works just as well, and that same column is still available as a {Card Name} variable to print on the design.
Download the sample CSV
Before uploading your own file, grab the built-in example so you can see the required format:
- Open the Flows tab and open (or create) a flow.
- Select the Photos start step to open its configuration panel on the right.
- Under Data CSV, click Download sample CSV.
The downloaded file (flow-sample.csv) opens in any spreadsheet app. It looks like this:
| filename | Player First | Player Last | Age | Team |
|---|---|---|---|---|
| player1.jpg | Alex | Morgan | 12U | Diamonds |
| player2.jpg | Sam | Lee | 12U | Diamonds |
| player3.jpg | Jordan | Smith | 10U | Hawks |
A column literally named filename is the conventional choice, not a requirement — the sample uses it because it's the clearest. Add as many additional columns as you need; their header names become variable names.
Prepare your CSV
Rules to follow before uploading:
- Include one column whose values identify the photos. It can be named anything and sit anywhere in the file — filename, Card Image, and Card Name are all fine. You confirm or change the choice after upload.
- Values in that column don't have to be exact filenames. Capitalisation, folder paths, and image extensions are all ignored during matching.
- One row per photo. Extra rows that don't match any photo are ignored.
- Give every column a header. Columns with a blank header are dropped and can't be used as variables.
- Save the file as CSV (comma-separated). UTF-8 encoding is safest for names with accents or special characters.
- Column header names become the variable names you see in the
{variable}picker — keep them short and descriptive (e.g.Jersey, notPlayer Jersey Number on Back of Uniform).
Upload the CSV to the Photos step
- Select the Photos start step. Its configuration panel opens on the right.
- Add your photos first using Add photos if you haven't already — the match preview won't show until photos are present.
- Under Data CSV, click Add CSV and choose your file.
- The panel shows a summary: number of rows loaded and which column names were found. If photos are already in the step, a match count appears — for example, 3 matched or 2 matched · 1 unmatched.
An amber unmatched count means one or more photos don't have a corresponding row in the CSV. Those photos still run through the flow — they just won't have per-photo data for that field. Fix unmatched photos by checking that the values in your match column line up with the names of the uploaded photos, and that you're matching on the right column.
To swap out the file later, click Replace. To remove the CSV entirely, click Remove CSV.
Check the column photos are matched on
[Screenshot coming: The Data CSV panel showing the Match photos on picker with the filename column selected]
Templified guesses which column holds your photo filenames — it recognises headers like filename, file, photo, and image, including inside longer names such as File Name or Card Image. The guess is always shown, and always changeable.
- Find Match photos on in the Data CSV section, directly under the row count.
- Open the dropdown. Every named column in your CSV is listed, plus a No filename column option.
- Pick the column your photos should be matched by. The match count updates immediately.
If nothing filename-like is detected, the picker is wrapped in an amber No filename column found panel instead, warning that until you pick the column holding the filenames, photos won't match any row and their text fields will fall back to the template's defaults. Choose the right column there and the warning clears.
Choose No filename column deliberately when your CSV genuinely has no such column — for example a one-row CSV feeding a single photo (see below).
Single-photo runs
A run with exactly one photo is a special case: if that photo's name matches no row, it falls back to the CSV's first data row. This means a one-photo run can pick up its fields from a CSV with no filename column at all. The panel tells you when this is happening, naming the row it will use, and warns that adding more photos would leave them with no fields.
Runs with two or more photos are strictly matched — there is no fallback, so every photo needs its own row.
Use CSV columns in create steps
Once a CSV is loaded, every text field in downstream create steps gains an Insert variable button (the {} icon at the right edge of the field). Click it to open the variable picker and choose a column to insert as a token. The token appears in the field as {Column Name}.
Every column is offered, including the one photos are matched on. So if you match on Card Name, you can also print {Card Name} on the design.
- Select a Create Image or Create Editable Image step.
- Click a text field — for example, the field mapped to your template's Name layer.
- Click the Insert variable button at the right edge of the field.
- Pick the column you want — for example, Player First.
- The token
{Player First}is inserted. Combine tokens and literal text freely:{Player First} {Player Last}or#{Jersey}.
If you type a token by hand and the column name doesn't match anything in the CSV, the field shows an amber warning: {Token} isn't in your CSV — it will be blank. Fix the typo or pick the variable from the picker instead.
When the flow runs, each photo resolves its row and the tokens are replaced with that row's values before the image is rendered. The result is a unique rendered image for every player — all from a single flow run.
Comments
0 comments
Article is closed for comments.