Block reference
This page describes every block type available in the Maskifi scenario builder. Blocks are the individual steps that make up a scenario.
All string fields in any block support variable interpolation — insert {{variableName}} anywhere a string is accepted and Maskifi substitutes the value at run time. See Variables & secrets for the full syntax.
Action
The most versatile block. The Action field determines what the browser does. All action blocks share a common set of optional parameters:
| Parameter | Description |
|---|---|
| Selector | CSS selector for the target element |
| Value | Action-specific text, URL, key name, or other value |
| Timeout | Maximum wait time in milliseconds (default: 30 000) |
Supports {{variableName}} in Selector, Value, and other text fields.
Click
Standard left click on the matched element.
Use: Submit forms, open links, toggle checkboxes.
Human click
Same as Click but uses humanised cursor movement when the profile's browser is launched with that option enabled.
Use: Clicking where natural mouse movement is needed to reduce bot-detection signals.
Double click
Double left-click on the matched element.
Use: Edit inline text, select a word, open files.
Right click
Right-click (context menu) on the matched element.
Use: Open context menus, trigger custom right-click handlers.
Type
Clicks the element, then types text character by character with human-like delays and occasional typos. Clears any existing content first.
| Parameter | Required | Description |
|---|---|---|
| Selector | yes | Input element |
| Value | yes | Text to type; supports {{variableName}} |
Use: Fill forms, search boxes, login credentials.
Navigate
Navigate the active tab to a URL.
| Parameter | Required | Description |
|---|---|---|
| Value | yes | Full URL |
Waits for the page to load before proceeding.
Use: Open pages, follow links programmatically.
Scroll
Scroll an element into view, or scroll the page by a fixed pixel amount.
| Parameter | Required | Description |
|---|---|---|
| Selector | no | If provided, scrolls that element into view |
| Value | no | Pixel amount to scroll when no selector is set (default: 300) |
Use: Reach lazy-loaded content, scroll to specific elements.
Hover
Move the mouse pointer over the matched element.
| Parameter | Required | Description |
|---|---|---|
| Selector | yes | Element to hover |
Use: Open dropdown menus, trigger tooltips, reveal hidden elements.
Press
Press a keyboard key, optionally focused on an element.
| Parameter | Required | Description |
|---|---|---|
| Selector | no | Element to focus before pressing the key |
| Value | yes | Key name |
Common key names: Enter, Escape, Tab, ArrowDown, ArrowUp, Backspace, Delete, Control+A, Shift+Tab.
Use: Submit with Enter, close modals, keyboard navigation.
Wait
Wait for an element to become visible before continuing.
| Parameter | Required | Description |
|---|---|---|
| Selector | yes | Element to wait for |
| Timeout | no | Max wait in milliseconds (default: 30 000) |
Use: Wait for content that loads after the page, animations, page transitions.
Select
Select an option in a dropdown.
| Parameter | Required | Description |
|---|---|---|
| Selector | yes | The dropdown element |
| Value | yes | The option to select |
Use: Form dropdowns, filter selectors.
Mouse move
Move the mouse to a specific position on the page.
| Parameter | Required | Description |
|---|---|---|
| X | yes | Horizontal position in pixels |
| Y | yes | Vertical position in pixels |
| Steps | no | How many intermediate steps to use for smooth movement (default: 10) |
Use: Simulate human mouse movement, interact with canvas elements.
Upload
Upload a file via a file input element.
| Parameter | Required | Description |
|---|---|---|
| Selector | yes | The file input element |
| Value | yes | Path to the file on your computer |
Use: Upload avatars, documents, import files.
Drag and drop
Drag one element to another.
| Parameter | Required | Description |
|---|---|---|
| Selector | yes | Element to drag |
| Value | yes | Selector of the element to drop onto |
Use: Kanban boards, sortable lists, file drop zones.
New tab
Open a new browser tab, optionally navigating to a URL.
| Parameter | Required | Description |
|---|---|---|
| Value | no | URL to open in the new tab |
After this block runs, subsequent blocks operate in the new tab.
Use: Open links in new tabs, parallel page work.
Switch tab
Switch to an existing tab by its number (first tab = 1).
| Parameter | Required | Description |
|---|---|---|
| Value | yes | Tab number |
Use: Return to the original tab after working in a new one.
Close tab
Close a tab by its number, or the current tab if no number is given.
| Parameter | Required | Description |
|---|---|---|
| Value | no | Tab number; leave empty to close the current tab |
After closing, execution continues in the first remaining tab.
Use: Clean up tabs after extracting data.
Switch iframe
Move focus into an embedded iframe on the page, or back to the main page.
| Parameter | Required | Description |
|---|---|---|
| Value | no | Selector of the iframe to switch into; leave empty to return to the main page |
After switching, all actions operate inside the iframe until you switch back.
Use: Payment forms, embedded widgets, third-party iframes.
Close browser
Close the browser for the current profile. Any blocks after this are skipped.
No parameters.
Use: Final clean-up step at the end of a scenario.
Delay
Pause execution for a random duration between a minimum and maximum.
| Parameter | Required | Description |
|---|---|---|
| Min | yes | Minimum pause in milliseconds |
| Max | yes | Maximum pause in milliseconds |
Use: Simulate human-like pauses between actions, wait for animations to finish.
Extract
Extract data from the page and store it in a named variable for use in later blocks.
| Parameter | Required | Description |
|---|---|---|
| Variable name | yes | Name to store the result under |
| What to extract | yes | Text, Attribute, or Count |
| Selector | yes | Element to read |
| Attribute name | if Attribute | Name of the HTML attribute to read (e.g. href) |
Text
Reads the visible text content of the matched element.
Attribute
Reads a specific HTML attribute from the element (for example href, src).
Count
Counts how many elements match the selector and stores the number.
Use: Get text from elements, read link targets, count items for loop conditions.
API
Make an HTTP request and store the response in a variable.
| Parameter | Required | Description |
|---|---|---|
| Method | yes | GET, POST, PUT, or DELETE |
| URL | yes | Request URL; supports {{variableName}} |
| Headers | no | Request headers as key/value pairs |
| Body | no | Request body (for POST/PUT requests) |
| Response variable | yes | Variable name to store the response |
| Timeout | no | Timeout in milliseconds (default: 30 000) |
The response is stored as a JSON object. Access nested fields in later blocks: {{responseVariable.data.id}}.
Use: Send webhooks, fetch external data, integrate with third-party APIs.
Condition
Execute one set of blocks if a condition is true, and optionally a different set if it is false.
You define a condition by choosing a left value, an operator, and a right value. Supported operators: equals, not equals, greater than, less than, greater than or equal, less than or equal, contains (checks whether one value appears inside another), and exists (checks whether a variable has a value at all).
The "If true" branch runs when the condition passes; the optional "If false" branch runs when it does not.
Use: Conditional navigation, error handling, different paths based on page state.
Loop
Repeat a set of blocks a fixed number of times or while a condition remains true.
| Parameter | Required | Description |
|---|---|---|
| Loop type | yes | Times (fixed count) or While (repeat while a condition holds) |
| Times | if Times | Number of iterations |
| Condition | if While | Condition to check before each iteration |
| Max iterations | yes | Safety limit — loop stops after this many iterations regardless |
Inside the loop body, {{$index}} holds the current iteration number (starting at 0).
Use: Pagination scraping, clicking "load more" N times, repeating a step while a condition holds.
Script
Execute arbitrary JavaScript in the page and optionally store the return value.
| Parameter | Required | Description |
|---|---|---|
| Code | yes | JavaScript to run |
| Result variable | no | Variable to store the return value |
The script runs inside the browser page. You can use {{variableName}} inside the code. Return a value to store it in the result variable.
return document.querySelectorAll('.product').lengthreturn JSON.parse(localStorage.getItem('userData'))?.tokenUse: Complex page interactions, reading page storage, custom calculations.
Try/Catch
Wrap blocks in an error handler. If any block in the "Try" section fails, execution continues with the "Catch" section instead of stopping the scenario.
| Parameter | Required | Description |
|---|---|---|
| Try | yes | Blocks to attempt |
| Catch | yes | Blocks to run if any Try block fails |
| Error variable | no | Variable to store the error message |
Without a Try/Catch block, any block failure stops the entire scenario immediately. Wrapping risky steps in Try/Catch lets the scenario handle errors gracefully.
Use: Handle optional popups (cookie banners, modals) that may or may not appear, graceful error recovery, retry patterns.
Log
Output a message to the execution log. Supports {{variableName}} interpolation.
| Parameter | Required | Description |
|---|---|---|
| Message | yes | Message text |
Messages appear in the execution log panel during and after a run.
Processing item {{$index}} of {{totalItems}}
Extracted email: {{userEmail}}
API response: {{apiResponse.status}}
Use: Debug scenarios, track progress, log extracted values.
AI Agent
Run an AI agent that autonomously operates the browser to achieve a stated goal.
| Parameter | Required | Description |
|---|---|---|
| Goal | yes | Plain-language description of what the agent should accomplish |
| Max steps | no | Maximum number of browser actions before giving up (default: 25) |
| Output variable | no | Variable to store data returned by the agent |
| Provider | no | AI provider to use |
| Model | no | Model to use for the selected provider |
Use: Open-ended browser tasks where the exact steps are not known in advance.
Generate
Generate a new identity for the active profile (name, locale, age).
| Parameter | Required | Description |
|---|---|---|
| Locale | yes | Language/region for the generated data, or Auto |
| Gender | yes | Random, Male, or Female |
| Min age | yes | Minimum age for the generated persona |
| Max age | yes | Maximum age for the generated persona |
Use: Generating realistic persona data before a registration flow.
Variable interpolation reference
All text fields accept {{...}} expressions:
| Syntax | Value |
|---|---|
{{myVar}} |
Value of a variable you defined |
{{$index}} |
Current loop iteration (starting at 0) |
{{$timestamp}} |
Current time as a numeric timestamp |
{{$random}} |
Random number between 0 and 1 |
{{response.data.id}} |
A nested field inside an object variable |
{{items[0]}} |
First item in a list variable |