Smart Order Capture
Reference

Actions

Every action node available in DSL v1. Actions form the body of a workflow.

Actions execute in the order you connect them, except action.branch (follows one of two edges) and action.loop (repeats its subgraph). Read the concepts page first if you haven't.

Heads up
Actions that target a specific Android package (action.openApp, action.tapByText.inPackage, action.startMusic.packageName) are subject to denylist enforcement on-device, in addition to the server-side check at workflow-save time.

Tap at coordinates

UI
action.tapAtCoords

Dispatch a synthetic tap at an exact pixel coordinate.

Fields
NameTypeNotes
x*number
y*number

Brittle across resolutions; prefer tapByText when possible.

Tap by text

UI
action.tapByText

Walk the accessibility tree, find the first node whose text matches, tap its nearest clickable ancestor.

Fields
NameTypeNotes
text*string
matchMode"exact" | "contains" | "regex"Defaults to `contains`
inPackagestring?If set, only match when this package is foreground

Swipe

UI
action.swipe

Dispatch a swipe gesture from one point to another over a duration.

Fields
NameTypeNotes
fromX*number
fromY*number
toX*number
toY*number
durationMsnumber50..5000, default 300

Type text

UI
action.typeText

Set the text of the currently focused input element.

Fields
NameTypeNotes
text*string

Requires an input to be focused. Use `tapByText` first to focus the right field.

Wait

Flow
action.wait

Pause the workflow for a fixed duration in milliseconds.

Fields
NameTypeNotes
durationMs*number10..600_000

Open app

UI
action.openApp

Launch an app by its package name.

Fields
NameTypeNotes
packageName*string

Refused if the package is on the denylist.

Screenshot to Spaces

Output
action.screenshotToSpaces

Capture the current screen and upload it to your private object-storage prefix.

Fields
NameTypeNotes
labelstring?Optional human-readable label, ≤120 chars

MediaProjection-backed. Uploaded to `screenshots/{userId}/{runId}/{nodeId}.png` and signed URL-only. Pro and Team plans.

HTTP call

Network
action.httpCall

Make an outbound HTTP request.

Fields
NameTypeNotes
method"GET" | "POST" | "PUT" | "PATCH" | "DELETE"Defaults to GET
url*stringMust be a valid URL, ≤2048 chars
headersRecord<string, string>?Custom headers
bodystring?Raw body, typically JSON
storeResponseAsstring?Variable name; the response body is stored in the run scope under this name and can be referenced by `action.branch`

Set clipboard

Output
action.setClipboard

Replace the clipboard contents.

Fields
NameTypeNotes
text*string≤2000 chars

Show toast

Output
action.showToast

Show a short toast notification on screen.

Fields
NameTypeNotes
message*string≤200 chars

Play sound

Output
action.playSound

Play a sound file from a URI.

Fields
NameTypeNotes
soundUri*stringcontent://, file://, or http(s)://

Vibrate

Output
action.vibrate

Vibrate the device for a fixed duration.

Fields
NameTypeNotes
durationMsnumber10..10_000, default 200
Android permission: VIBRATE

Log to Google Sheet

Network
action.logToSheet

Append a row to a Google Sheet.

Fields
NameTypeNotes
sheetId*string
range*stringA1-style, e.g. `Sheet1!A:C`
values*string[]Cell values, one per column

Requires Google OAuth — connect once from Settings → Integrations.

Send SMS

Network
action.sendSms

Send a text message via the device's default SMS app.

Fields
NameTypeNotes
to*stringPhone number, ≤40 chars
body*string≤1600 chars
Android permission: SEND_SMS

Set brightness

System
action.setBrightness

Set screen brightness on a 0..255 scale.

Fields
NameTypeNotes
level*number0..255
Android permission: WRITE_SETTINGS — granted from system settings

Toggle Wi-Fi

System
action.toggleWifi

Toggle Wi-Fi on or off.

Fields
NameTypeNotes
state*"on" | "off"

Android 10+ restricts programmatic Wi-Fi toggling — we open the system Wi-Fi panel for user confirmation instead.

Toggle Bluetooth

System
action.toggleBluetooth

Toggle Bluetooth on or off.

Fields
NameTypeNotes
state*"on" | "off"

Same Android 10+ restriction as Wi-Fi: we surface the Bluetooth settings panel.

Start music

UI
action.startMusic

Start music playback. If a packageName is given, launch that music app. Otherwise dispatch a media-play key event to whatever is the current media session.

Fields
NameTypeNotes
packageNamestring?

Stop automation

Flow
action.stopAutomation

Halt the run. Downstream nodes are not executed.

Useful as the target of a `false` branch when you want a workflow to exit gracefully.

Branch (if/then)

Flow
action.branch

Evaluate a condition on a stored variable and follow the `true` or `false` edge.

Fields
NameTypeNotes
condition*{ variable, op, value }op ∈ eq, neq, gt, gte, lt, lte, contains, matches

Variables are populated by `action.httpCall.storeResponseAs`. Branches must have two outgoing edges labeled `true` and `false`.

Loop

Flow
action.loop

Execute the downstream subgraph N times.

Fields
NameTypeNotes
times*number1..1000