LEARN BY DOING

Workflow examples.

Start with a harmless workflow and add complexity only after checking each action’s result.

Variables, JSON and calculations

set_variable   text       PBX
calculate      title      = "name: " + ${text}
calculate      total      = ${price} * ${quantity}
if                       = ${total} >= 100

See the Variables & Expressions guide for syntax and type conversion.

1. Open and verify a web page

open_browser       https://example.com
wait_selector      body
assert_navigation  example.com
close_browser

Choose PBX, Chrome or Cent Browser. A browser-only script runs with one worker. The runner can create a new profile or use the script-specific configuration.

2. User input and file validation

request_input    document_file    {"type":"file","label":"Document","required":true}
validate_file    ${document_file}   {"extensions":[".pdf"],"max_mb":20}
log_message                      Local document validated

This example only validates a file; it does not upload or send it. A web upload requires a suitable file-input selector and verification of server acceptance.

3. API response and data extraction

http_request     https://api.example.org/tasks   {"method":"GET","save_as":"api_response"}
api_status_check api_response                  {"status":200}
json_get         api_response                  {"path":"items.0.id","save_as":"first_id"}

Replace the illustrative URL with an authorized endpoint. Your server’s response structure determines the JSON path.

4. A protected browser operation

try_start
wait_selector    #save-complete
catch_start
log_message                      Save confirmation not found
finally_start
log_message                      Finished verification attempt
try_end

Review whether the action actually changed external state before retrying. A timeout is not proof of failure on the remote service.

5. Process records during execution

csv_import          C:/Data/sample.csv   {"save_as":"rows"}
runtime_for_each_record   rows
log_message                              Processing a record
runtime_end_for_each
progress_report     rows

The runtime record engine has bounded limits; see the action reference for exact options.

All examples are learning templates; do not use them to submit payments, create real invoices or send external messages without explicit approval and independent confirmation.