Loading

Placeholders and Variables

Placeholders let a step use values that are only known when it runs: a field of the record, something an earlier step found or created, today's date. You write them in double braces, such as {{email}}, and the engine replaces each one with its value at that moment. Set variables gives a value a name so later steps can reuse it.

Where to find it

Architect Panel → Automation:

  • Workflow Builder — any step field with a { } button accepts placeholders; the button opens Insert a value

Inserting a value

  1. Click into a field that takes a template, such as an e-mail's Subject or an Update record value.
  2. Press the { } button beside it. Insert a value opens.
  3. Type in Find a field or value to filter, then pick one. It is inserted where the cursor is.

The list offers the record's fields and the values earlier steps make available, with their exact spelling. Picking from it is safer than typing, because values from steps include each step's internal key.

What you can use

  • {{field}} or {{record.field}}: a field of the record the workflow runs on, such as {{title}} or {{record.amount}}.
  • {{vars.name}}: a variable set by a Set variables step.
  • {{found.field}}: a field of the record a Look up step found, where "found" is what you entered in its Save it as box.
  • {{item.field}}: on a For each step's Each row path, a field of the current row ("item" is the default name in Call each row).
  • {{created.step.ID}}: the ID of the record a Create record step made.
  • {{webhook.step.status}}, .body, .json.key and .error: the reply to a Webhook step, and why it failed.
  • {{sla.step.due}}: the deadline an SLA timer worked out.
  • {{run.ID}} and {{run.version}}: the run's number and the version it runs on.
  • {{now}} and {{today}}: the date and time, or the date, in the form fields and comparisons use. {{today.text}} is the date as people read it, such as 4 Oct 2026.
  • Relative dates: {{today-30}} and {{today+7}} (days), {{now-2h}}, {{now+90m}} and {{now-1d}}. For example, a Look up for invoices with due date is less than {{today-30}} finds those more than 30 days overdue.

The AI decision and AI check steps add their own answers under the name in Save the answer as; see Branching on the Answer, and When Jev Cannot Answer.

Set variables

  1. Add a Set variables step before the steps that need the values.
  2. Under Variables, add a row per value: a Name (letters, digits and _) and a Value, which may itself use placeholders.
  3. Use them later as {{vars.name}}.

Variables are how you feed the workflow library's functions: set the inputs a function reads, call it with a PHP function step working on "The run's variables", and read its answers back as {{vars.answer}}. See Webhooks, Functions and Extension Steps.

Some names are reserved for the engine's own values and cannot be used to save an AI answer, among them record, run, vars, created, webhook, item, now and today.

Where placeholders work

  • Message fields: recipients, subjects, bodies and titles.
  • Values written by Update record, Create record and Set status.
  • Values in Condition rows, Look up and For each rules, and the Trigger's start conditions.
  • The Record ID box on steps that act on another record, such as {{found.ID}}.
  • Approver, Wait's Or until, Webhook URL, headers and body.

What goes wrong

  • A blank where a value should be. A placeholder that cannot be resolved becomes empty text. Check the spelling, and that the step that provides it ran before this one on every path.
  • A value from the wrong record. A flat name such as {{status}} reads the record first. Use {{found.status}} or {{item.status}} for another record's field.
  • A date comparison that never matches. Compare dates with {{today}} or {{now}}, not with {{today.text}}, which is for people to read.

Worked example

A credit control workflow looks up the customer of each overdue invoice and saves it as "customer". A Set variables step sets from to {{item.due_date}} (the function reads "from" and counts to today), a PHP function step runs "Days between two dates" on the run's variables, and a Condition checks vars.days is at least 30. The final e-mail goes to {{customer.email}} with the subject "Invoice {{item.number}} is {{vars.days}} days overdue", and Simulate shows the subject filled in for a real invoice.

Recommendations

  • Pick from Insert a value rather than typing step references.
  • Name look-ups for what they find ("customer", "order") so placeholders read clearly.
  • Work values out once in Set variables, then reuse them.
  • Simulate to see placeholders filled in before anything is sent.