How to build workflows
What this feature does
The Workflow Editor is a drag-and-drop interface for automating processes across systems. You connect nodes (triggers, AI, API, decisions, notifications) to define how data flows through your automation. The workflow engine manages execution, retries, and state tracking.
Scope: This guide covers creating a workflow, configuring triggers, and adding nodes. It does not cover testing (refer to How to test and run workflows) or publishing (refer to How to publish and release).
Who this applies to
- Audience: Developers and editors building workflow automations in Opus
- Access required: Editor or Administrator role on a project
- Assumed knowledge: You have an Opus workspace and project. Refer to Get started with Opus for initial setup.
Steps
Step 1: Create a workflow
You can start from a template or from scratch.
From a template:
- Select Use Template from the project view.
- Browse templates tagged with Workflow and select one that matches your use case.
- Select Use Template to create the workflow with a pre-configured blueprint.
From scratch:
- From the project view, select Add New File.
- Select Workflow as the artifact type.
- Enter a descriptive name (e.g., “Customer Onboarding”, “Invoice Processing”).
- Select Add, then open the new workflow.
Step 2: Configure the trigger
The trigger node defines the starting point — where instructions first enter the workflow.
| Trigger type | When to use |
|---|---|
| Input (default) | Custom integrations via authenticated API calls |
| ApplySG | Form submissions from ApplySG |
| CFT | File transfer events from Cloud File Transfer |
| FormSG | Secure form submissions from FormSG |
| Ownself Gather | Events from the Case Management system |
| GovRewards | Event notifications from GovRewards |
- Select Select Input on the trigger node.
- Choose the trigger type.
- Open the trigger node settings and copy the webhook endpoint URL.
- Configure the receiving system to send data to this URL (if applicable).
Triggering workflows via API requires an access token. Refer to How to execute via API for details.
Step 3: Add and configure nodes
Drag nodes from the node palette onto the canvas and connect them to define your automation steps. Each node performs a specific action — API calls, AI processing, file handling, notifications, or branching logic.
- Drag a node from the palette onto the canvas.
- Connect the node to the trigger (or a preceding node) by dragging from one node’s output to another’s input.
- Select the node and configure its settings in the side panel.
- Repeat for each step in your workflow.
For the full list of available nodes and their configuration, refer to Node reference.
Step 4: Configure advanced settings (optional)
Advanced settings are available on non-trigger nodes for fine-tuning behaviour.
| Setting | What it does |
|---|---|
| Additional input | Reference data from upstream nodes that are not directly connected |
| Execution mode (loop) | Execute the node once per item in an array instead of once for the full input |
| Output path | Customise where the node’s output is stored in the data context |
| Schema validation | Define a JSON schema to validate the node’s output — fails execution if validation fails |
Step 5: Preview your workflow
Before testing, review the workflow graph to confirm:
- The trigger node is connected to the first processing node
- All nodes are connected in the correct sequence
- Node settings are complete (nodes with validation errors display an indicator)
Constraints and limitations
| Constraint | Limit |
|---|---|
| Nodes per workflow | 50 |
| Payload size (per node) | 10 MB |
| Child workflow depth | 5 levels |
| Loop iterations | 10 items |
| Function node timeout | 5 seconds |
For the full limits table, refer to Limits and constraints.
Related features
- How to test and run workflows — simulate, run in staging, and monitor execution.
- How to publish and release — commit changes, run regression tests, and create releases.
- Node reference — configuration details for all 35+ node types.