Variables
Variables are named containers that store values during your automation. They let you pass data between commands, customize behavior without editing commands, and build dynamic automations that adapt to different inputs.
RTILA X has three types of variables, each with a different scope and purpose:
| Variable Type | Scope | Where Defined | When Available |
|---|---|---|---|
| Global Variables | All projects for your profile | Preferences → Global Variables | Always, in every project |
| Project Variables | A single project | Project Settings → Variables tab | Only in that project |
| Runtime Variables | A single execution run | Created by commands during execution | Only during the current run |
Global Variables
Section titled “Global Variables”Global variables are available in every project for your current profile. They’re perfect for values you use across many automations, like API keys, base URLs, or common search terms.
Managing Global Variables
Section titled “Managing Global Variables”- Click your profile name in the bottom-left sidebar.
- Click Preferences.
- Switch to the Global Variables tab.
- Click New Variable to create one.

Global Variable Fields
Section titled “Global Variable Fields”| Field | Type | Required | Description |
|---|---|---|---|
| Name | Text | Yes | The variable name. Used as ${name} in commands. Must be unique. |
| Value | Text (multiline) | Yes | The value to store. Can span multiple lines for list variables. |
| Secure | Checkbox | No | When enabled, the value is masked with •••••••• in the UI. |
| List | Checkbox | No | When enabled, the value is treated as multiple items (one per line). |
Creating a Global Variable
Section titled “Creating a Global Variable”- Click New Variable.
- Enter a Name (e.g.,
api_key,base_url,search_term). - Enter the Value.
- Optionally enable Secure for sensitive values like passwords.
- Optionally enable List for multi-value variables.
- Click Save.
Editing a Global Variable
Section titled “Editing a Global Variable”- In the Global Variables table, click the edit icon (pencil) next to the variable.
- Modify the fields.
- Click Save.
Deleting a Global Variable
Section titled “Deleting a Global Variable”- Click the trash icon next to the variable.
- Confirm the deletion.
Warning: Deleting a global variable removes it from all projects that reference it. Any commands using
${deleted_variable}will no longer resolve the value.
Secure Variables
Section titled “Secure Variables”When you enable the Secure option:
- The value is displayed as
••••••••in the UI. - The actual value is still stored and used during execution.
- This prevents shoulder-surfing when sharing your screen.
- The value is still accessible in commands via
${variable_name}.
Important: Secure masking is a UI feature only. The value is stored in the database. Don’t use it as a substitute for proper secret management in production environments.
Project Variables
Section titled “Project Variables”Project variables are defined within a specific project and are only available in that project. They’re ideal for project-specific values like target URLs, search terms, or configuration options.
Managing Project Variables
Section titled “Managing Project Variables”- Select your project in the project list.
- Click Settings in the ribbon.
- Switch to the Variables tab.
- Click Add Variable.

Project Variable Fields
Section titled “Project Variable Fields”| Field | Type | Required | Description |
|---|---|---|---|
| Name | Text | Yes | The variable name. Used as ${name} in commands. |
| Value | Text (multiline) | Yes | The default value. Can be multiline for list variables. |
| Description | Text | No | A note explaining what this variable is for. |
| Required | Checkbox | No | If checked, the user must provide a value before running. |
| Secure | Checkbox | No | Masks the value in the UI. |
| List | Checkbox | No | Treats the value as multiple items (one per line). |
Variable Matching (Auto-Fill from Globals)
Section titled “Variable Matching (Auto-Fill from Globals)”RTILA X has a powerful feature called Variable Matching:
If a project variable has the exact same name as a global variable, RTILA automatically fills the project variable with the global variable’s value at runtime.
Example:
- Global variable:
api_key="sk-abc123" - Project variable:
api_key=""(empty)
At runtime, the project variable api_key is automatically populated with "sk-abc123".
This means you can:
- Define sensitive values (API keys, passwords) once as global variables.
- Create project variables with the same name but leave them empty.
- RTILA fills them automatically at runtime.
- You never need to copy-paste sensitive values between projects.
Tip: This is especially useful for team workflows. Define shared credentials as global variables, and every project with matching variable names picks them up automatically.
Required Variables
Section titled “Required Variables”When a project variable is marked as Required:
- The user must provide a value before the project can run.
- If the value is empty and no global variable matches, RTILA prompts for input.
- In non-interactive environments, you must provide the value via CLI arguments:
--var-name=value
List Variables
Section titled “List Variables”When a variable has the List option enabled:
- The value is treated as multiple items, one per line.
- Each line becomes a separate item for iteration.
- Perfect for use with
for_eachloops.
Example list variable value:
keyword 1keyword 2keyword 3When used in a for_each loop, RTILA iterates over each line.
Runtime Variables
Section titled “Runtime Variables”Runtime variables are created during execution by commands. They don’t exist until the automation runs, and they disappear when the run ends.
How Runtime Variables Are Created
Section titled “How Runtime Variables Are Created”| Command | How It Creates Variables |
|---|---|
set_variable |
Explicitly sets a variable: name: "my_var", value: "hello" |
get_text |
Stores element text in output_variable |
get_attribute |
Stores an attribute value in output_variable |
get_property |
Stores a DOM property in output_variable |
is_visible |
Stores true/false in output_variable |
execute_script |
Stores script return value in output_variable |
for_each |
Creates a loop variable (default: item) for each iteration |
math_operation |
Stores calculation result in output_variable |
string_operation |
Stores string result in output_variable |
Runtime Variable Lifecycle
Section titled “Runtime Variable Lifecycle”- Created — A command creates the variable during execution.
- Available — The variable is available to all subsequent commands in the same run.
- Persisted — Runtime variables are saved in checkpoints, so they survive crashes.
- Destroyed — When the run completes, runtime variables are discarded.
Accessing Runtime Variables
Section titled “Accessing Runtime Variables”Use the ${variable_name} syntax in any command parameter:
url: https://example.com/search?q=${search_term}selector: css=.product-${product_id}value: ${extracted_email}Using Variables: The ${} Syntax
Section titled “Using Variables: The ${} Syntax”The ${} syntax is how you reference variables in command parameters. RTILA resolves these before executing the command.
Basic Variable Reference
Section titled “Basic Variable Reference”${variable_name}Examples:
url: https://example.com/search?q=${search_term}value: ${username}selector: css=#input-${field_id}JavaScript Expressions
Section titled “JavaScript Expressions”You can use full JavaScript expressions inside ${}:
${price * 1.2}${name.toUpperCase()}${url.split('/')[2]}${Math.random() * 100}${item.split(';')[0].trim()}Type Preservation
Section titled “Type Preservation”RTILA handles variable types intelligently:
| Scenario | Behavior |
|---|---|
${my_var} as the entire parameter |
The variable’s original type is preserved (number, boolean, etc.) |
"Price: ${price}" embedded in text |
The result is always a string |
${item.split(';')[0]} |
Returns the result of the JavaScript expression |
Variable Resolution Priority
Section titled “Variable Resolution Priority”When RTILA resolves ${variable_name}, it checks in this order:
- Runtime variables (created during this run)
- Project variables (defined in project settings)
- Global variables (defined in preferences)
If a variable exists in multiple scopes, the most specific scope wins.
CSV/List Variables and Column Access
Section titled “CSV/List Variables and Column Access”When you have a List variable with semicolon-separated columns, you can access individual columns using JavaScript.
Example Setup
Section titled “Example Setup”A list variable named users with this value:
john;admin;user1jane;editor;user2bob;viewer;user3Accessing Columns in a for_each Loop
Section titled “Accessing Columns in a for_each Loop”Inside a for_each loop, the current line is available as ${item}:
| Expression | Result |
|---|---|
${item} |
john;admin;user1 (the whole line) |
${item.split(';')[0].trim()} |
john (first column) |
${item.split(';')[1].trim()} |
admin (second column) |
${item.split(';')[2].trim()} |
user1 (third column) |
Context Menu Variable Insertion
Section titled “Context Menu Variable Insertion”In the Visual Builder, when recording or editing commands:
- Right-click on any input field.
- Choose Insert Variable.
- A submenu shows all available variables.
- For CSV-style list variables, you see additional options:
- The variable name (for the whole line)
- Individual columns:
Column 1 (john),Column 2 (admin), etc. Entire Lineoption

How Column Detection Works
Section titled “How Column Detection Works”RTILA automatically detects CSV-style variables:
- It looks at the first line of the variable’s value.
- If the line contains semicolons (
;), it splits into columns. - Each column gets its own context menu entry.
- The generated syntax uses
${item.split(';')[N].trim()}.
Tip: The context menu shows a preview of the first row’s data in parentheses, so you can see what each column contains before inserting it.
Variables in the Browser Extension
Section titled “Variables in the Browser Extension”When recording in the browser, you can insert variables directly into form fields:
- Right-click on an input field while recording.
- Select Insert Variable from the context menu.
- Choose the variable (or a specific CSV column).
- RTILA records a
fillcommand with the variable reference:value: ${variable_name}
This is especially useful for:
- Filling forms with different data on each iteration
- Using credentials stored in secure variables
- Parameterizing search queries
Finding Variables in Your Project
Section titled “Finding Variables in Your Project”RTILA X automatically detects all variables used in your project’s commands. The detection scans for:
set_variablecommands (creates variables)output_variableparameters (stores results)for_eachloop variables (theasparameter)
These detected variables are available in:
- The context menu for variable insertion
- The AI Assistant’s understanding of your project
- Variable matching with global variables
Tips and Best Practices
Section titled “Tips and Best Practices”| Tip | Why It Matters |
|---|---|
| Use descriptive names | ${product_price} is clearer than ${p} |
| Use global variables for shared values | API keys, base URLs, credentials |
| Use project variables for project-specific values | Search terms, target URLs |
| Mark sensitive variables as Secure | Prevents accidental exposure |
| Use Required for critical variables | Ensures values are provided before running |
| Use List variables for iteration | Perfect for batch processing |
| Use Variable Matching | Define once globally, use everywhere |
| Test variable resolution | Check the preview to make sure variables resolve correctly |
| Avoid spaces in variable names | Use underscores: my_variable not my variable |