Automations
Build event-driven, no-code workflows with a visual node-graph editor: triggers, actions, conditions, data transforms, and schedulers.
Overview
The Automation Engine lets you automate repetitive work without writing code. You build automations as a visual graph of connected nodes: a trigger fires when something happens, data flows through transform and condition nodes, and action nodes make changes back in Pomavo.
Every automation is scoped to your organization and, optionally, to a single project. Automations run asynchronously in the background, so they never slow down the action that triggered them.
Automations are built in the visual editor under Automations in the sidebar. Each automation has a name, an enabled/disabled toggle, an optional project scope, and a graph.
How It Works
A trigger fires
Something happens in Pomavo, a ticket is created, a field changes, a comment is added, a sprint starts. The matching trigger node starts a run.
Data flows downstream
The trigger emits typed outputs, for example the ticket and the comment. Edges carry those values into the inputs of downstream nodes.
Conditions gate the path
Condition and logic nodes decide which branches continue. A branch whose condition is false is skipped, along with everything downstream of it.
Actions make changes
Action nodes transition tickets, add comments, change fields, move tickets between sprints, create or clone tickets, and more.
The Node Graph
Nodes are organized into categories in the left-hand palette. You can also search for a node by name and drop it onto the canvas.
Triggers
Start an automation in response to ticket, comment, link, attachment, and sprint events: or on a schedule.
Actions
Make changes: transition, comment, change fields, move iterations, create/clone tickets, manage links, lock fields.
Conditions & Logic
Branch on DSL conditions, AND/OR/NOT, if/else, and null checks.
Data & Transforms
Constants, pickers, extract properties, compare, math, and list operations like ForEach and Collect.
Schedulers
Run on a recurring cron schedule or after a delay, with fork-based deferred execution.
Run History
Inspect every run node-by-node: inputs, outputs, status, errors, and duration.
The Type System
Every node port has a type. The editor validates connections as you draw them, so you can only connect compatible ports. Types include:
- Primitives:
string,number,boolean,date - Objects:
ticket,user,state,transition,iteration,project,link,comment,tag - Generics:
list<T>for collections, and type variables (T) for nodes that work with any type
When a node outputs an object, such as a ticket, it carries the full object rather than just an ID, so downstream nodes can read any of its properties.
Some nodes have dynamic ports whose outputs depend on their input. The classic example is Extract Properties: connect a ticket and it offers title, state, fields, and so on; connect a link and it offers the link's properties instead. The editor resolves these ports live as you wire the graph.
Merged Input + Config
Many nodes accept a value either from a wired input or from an inline config control. When the input is not connected, the config control appears inline so you can type a constant value. As soon as you wire the input, the control hides and the wired value is used. This keeps simple automations compact while still allowing fully dynamic graphs.
Conditions and Branching
Condition nodes evaluate to true or false. The If/Else node routes its value to either a true or a false output; only the active branch continues. Logical nodes - AND, OR, NOT, and Is Null - combine boolean signals. The DSL Condition node evaluates a search-query expression against a ticket, and DSL Query returns every ticket matching a query, perfect for fan-out.
Loops: ForEach and Collect
To act on many items, use the list nodes:
- ForEach: iterates over a
list<T>and runs everything downstream once per item. Iterations run in parallel for throughput. - Collect: gathers a value from each iteration back into a single ordered
list<T>. - Length: returns the number of items in a list.
A common pattern: DSL Query for all tickets in the active sprint → ForEach → Add Comment posts a comment on every matching ticket.
Rate Limits
Automation runs are governed by your organization's quota tier. Each run counts toward the automation_runs metric. If you exhaust your tier's limit within the rolling window, further runs are skipped until the window resets.