Workflow actions

The steps you keep rebuilding, ready to drop in.

6 official actions with 48 functions — loan schedules and percentiles, slugs and fuzzy matching, business-day SLAs and fiscal periods, group-by and joins, IBAN and national ID checks, UUIDs and signed tokens. Install one and it appears in the workflow designer's Custom actions palette with a typed input panel, and its outputs show up in the data picker with their types.

Security

Your workflow runs the code. It never touches your server.

Custom actions run tenant code, so they run it somewhere it cannot hurt anything:

  • A separate JavaScript engine

    Each run gets a fresh QuickJS engine compiled to WebAssembly: no Node APIs, no process, environment, files, sockets, timers or database — only what the action is handed. Not node:vm, not new Function.

  • Hard limits

    Memory and stack are capped per run, CPU is interrupted at the deadline (an endless loop stops), and every value crossing the boundary is JSON with a size limit.

  • Capabilities by approval

    HTTP only to hosts the manifest declares and an administrator approves, through the egress guard. Data tables only as granted. Files only when given as inputs. Secrets only by declared name, encrypted at rest.

  • Versioned and signed

    Every version is immutable with a SHA-256; gallery packages are signed with the UserTasks Gallery key. A kill switch turns an action off everywhere at once, and deleting one a workflow uses is refused.

Install

From the gallery to a running step in a minute

  1. Step 1

    Install

    In the app: Extensibility → Workflow actions → Browse gallery (or Automations → Packages → Browse gallery → Workflow actions). Or download the .utpkg here and import it.

  2. Step 2

    Use

    Drag the action from the designer's Custom actions palette, pick a function, fill its inputs with values or {{data}}. A sample workflow comes with every action.

  3. Step 3

    Test

    Save & Test shows the typed outputs in the data panel and the run log (version, duration, host calls). Extensibility → Manage → Test runs one function on its own.

Need something else? Build any action with the starter kit and the @usertasks/action helper.