Skip to content
JamFrame
Docs menu

Mapping and transforms

Preview a workflow's rows, pick and order them with transforms, choose the template and format, and match each column to a key of the template.

Between the source and the delivery, a workflow decides which rows to use and how each row fills the template. Transforms pick and order the rows. The Render a template step chooses the template and the format. Preview & mapping matches the source’s columns to the template’s keys.

Preview the rows

Under the steps in the builder, click the Preview & mapping tab, then click Load preview. JamFrame reads the source and shows:

  • how many rows the source has, and how many are left after the transforms, such as “120 rows in the source, 18 after the transforms”;
  • the first 10 rows after the transforms, with the first 8 columns. When there are more columns, click the All … columns link to see them;
  • warnings, such as a transform that names a column the source doesn’t have.

The preview renders nothing and costs nothing. After you change the source or a transform, click Refresh to read the rows again. Once the preview is loaded, the column boxes in the transform steps suggest the source’s column names.

Render a template

Click the Render a template step.

  1. Under Template, choose one of your workspace’s templates.
  2. Under Format, choose PNG, JPEG, WebP or PDF.

Each row makes one render. A template with several pages makes one image per page, or one PDF with every page. Each image, or each page of a PDF, uses 1 render credit. Renders use the last saved version of the template, and they show on the Renders page as Workflow.

The builder has no settings for scale, quality or which pages to render. The Workflows API can set them with scale, quality and includePages in the render step.

If the template has AI layers, the workflow fills them with AI when it renders, which uses AI credits. To use your own value and skip the AI, map a column to that key. See AI layers.

Map columns to keys

Under Column → parameter mapping, each of the template’s keys has a row:

Column What it shows
Parameter The key and its type, such as headline text or photo image.
Value from Where the key’s value comes from (below).
First row The value the first row would render with.

Under Value from, choose one of these:

  • Keep the template’s value: the key isn’t changed. This is where every key starts.
  • A column’s name: each row sends that column’s value as it is.
  • Text or a mix of columns…: type your own text. Put column names in double curly brackets to fill them in from each row.

Examples for Text or a mix of columns…:

You type A row with First name “Ada”, Last name “Lovelace”, Price “19” gives
{{First name}} {{Last name}} Ada Lovelace
Only ${{Price}}! Only $19!
Summer sale Summer sale (the same fixed value for every row)

How the values work:

  • Column names in curly brackets ignore upper and lower case: {{price}} also finds the column Price.
  • If a name matches no column, it stays as you typed it, and the mapping shows “No column named … in the source.”
  • If a value comes out empty, for example an empty cell, the key keeps the template’s value.
  • An image key needs a public link to an image, such as https://example.com/photo.jpg, in the cell. For other kinds of values, see Modifications.

If the template has no keys, the mapping says “This template has no parameters.” Turn layers into dynamic fields in the editor first. See Choose what changes.

Use suggested mapping

When keys and columns have the same names, the mapping says how many match, such as “3 parameters match a column by name”. Click Use suggested mapping to map them all at once. It only fills keys that aren’t mapped yet.

Names match when they have the same letters and digits, whatever the case, spaces or punctuation: First name, first_name and FIRSTNAME all match the key firstName. When the template has one image key and the source has one column called image, photo, picture, logo, url or thumbnail, those two match as well.

Transforms

Transforms choose which rows to render and in which order. They are optional.

  • To add one, use + Add a transform under the source.
  • They run in order, from top to bottom. To change the order, use the ↑ and ↓ buttons next to a transform.
  • To remove one, select it and click Remove this step.

Each transform counts as one step toward your plan’s step limit. See Plan limits.

If a transform names a column the source doesn’t have, the column reads as empty, and the preview and the run show a warning.

Filter rows

Keeps only the rows that match. Fill in Keep rows where, pick a test, then type a value.

Test Keeps rows where the column…
is equals the value
is not doesn’t equal the value
contains has the value somewhere in it
does not contain doesn’t have the value in it
starts with begins with the value
is empty is empty (no value needed)
is not empty has anything in it (no value needed)
is greater than is more than the value
is less than is less than the value

Tests ignore upper and lower case, and spaces at the start or end. Numbers compare as numbers, so 9 is less than 10. Dates written like 2026-11-14 compare as dates. Empty cells never pass is greater than or is less than.

To keep rows that pass several tests, add one Filter rows for each test.

Sort rows

Puts the rows in order. Fill in Sort by with a column, then pick Ascending (A→Z, 1→9, oldest first) or Descending.

Numbers sort as numbers and dates written like 2026-11-14 as dates. Text sorts A to Z, ignoring case, with numbers inside text in their natural order: “Item 2” comes before “Item 10”. Empty cells always go last.

Limit rows

Keeps the first rows and drops the rest. Type the number under Keep at most, from 1 to 10,000. A new Limit rows keeps 10.

Pick rows

Under Pick, choose The first rows, The last rows or Random rows. Under How many, type the number. A new Pick rows picks 1.

Random rows picks new rows on every run. It’s a good fit for “a random tip every Monday”. The preview shows one possible pick.

Remove duplicates

Keeps only the first row of each group of duplicates.

  • Type a column under Rows count as duplicates when this column matches, and rows with the same value in that column count as duplicates. Case and spaces at the ends don’t matter.
  • Leave it empty, and only rows where every cell is the same count as duplicates.

To choose which row of a group is kept, put a Sort rows above it, for example by date, newest first.

What next

Last updated

Still stuck?

Email [email protected] and a real person will reply. Tell us the template you were using and what you expected to happen.