Macros & Variables
Generate dynamic test data with macros and reference shared values with workflow variables.
Variables let you reuse a value across steps; macros generate fresh data each run. Both share the same $ suggestions menu in any macro-enabled field, and both resolve at run time.
A variable is referenced as $var.{name}. Its value can come from a workflow input, a value captured by an earlier step, a macro result, or a seed flow's output. A macro is a function like $EMAIL() that produces a new value every run.
01Workflow inputs
Workflow inputs are values you define once and fill in before each run — test emails, user roles, environment URLs, anything you don't want hard-coded into a step.
Open your flow in Flow Designer and click the canvas background so no step is selected. In the Configure tab, use Workflow Inputs to add and manage them.
Click + to add an input, then set:
| Field | Description |
|---|---|
| Label | Friendly name shown in the run form, e.g. User Email |
| Variable name | The reference used in steps, e.g. $var.user_email |
| Type | Text, Email, Number, Password, or Textarea |
| Default value | Used when no scenario or run-time value is supplied |
| Required | When on, the run can't start without a value |
To package sets of input values into reusable run variations (accounts, environments, roles), see Scenarios. When you rename or remove an input, review any scenarios that reference it.
02Referencing variables
Once defined, a variable is available throughout the flow. Type $var. in any macro-enabled field to pick from the typeahead, or write it directly:
$var.user_email $var.environment_url
Values captured from a step
An action can save a value from the page for later steps. When two steps could produce the same name, qualify the reference with the step label to disambiguate:
$var.Step2_Create_Client.id
Values from a seed flow
A Seed node exposes its flow's declared outputs as $var.{seed_name}.{output_key} — the way prepared data reaches the test that needs it.
03Macros
Macro expressions follow $MACRO_NAME() or $MACRO_NAME(args). They work standalone or inline within a larger string:
- Standalone —
$EMAIL()→test-a1b2@example-test.com - Inline —
user-$UUID()@corp.com - Escaped —
\$EMAIL()produces the literal text, with no resolution
Type $ in any macro-enabled field to open suggestions; keep typing to filter, then press Enter to insert. Inserted macros and variables appear as inline token pills so mixed text and dynamic values stay readable.
Macro catalog
| Macro | Generates | Example |
|---|---|---|
$UUID() | Random UUID v4 | a1b2c3d4-e5f6-7890-abcd-ef1234567890 |
$NOW() | Current ISO 8601 timestamp | 2026-02-19T14:30:00.000Z |
$TODAY() | Current date (YYYY-MM-DD) | 2026-02-19 |
$DATE(days) | Date offset from today by N days | $DATE(-7), $DATE(30) |
$TIMESTAMP() | Unix timestamp in milliseconds | 1771520400000 |
$RANDOM_INT(min, max) | Random integer, inclusive | 42 |
$RANDOM_STRING(length) | Random alphanumeric string | xK9mQ |
$EMAIL() | Unique test email address | test-a1b2@example-test.com |
$FIRST_NAME() | Random first name | Jordan |
$LAST_NAME() | Random last name | Chen |
$PHONE() | Random US phone number | +1-555-382-7491 |
$SEQUENCE(name) | Auto-incrementing counter, resets per run | 1, 2, 3 |
$AI("prompt") | AI-generated text for the prompt (resolved once per run) | Quick question about your refund |
Where macros work
Macros resolve in action input fields, action titles and descriptions, Navigate URLs, Notification fields (recipients, subject, body, attachment filenames), and workflow inputs. Set a workflow input to a macro — for example $FIRST_NAME() $LAST_NAME() — to generate a value once and reuse the result through $var in later steps.