Workflows
Workflows let you automate multi-step processes by connecting actions together in a visual canvas — no code required. Chain together emails, AI agents, external services, database queries, and more, then let Evolvable.ai run them automatically.
Table of Contents
- Overview
- Core Concepts
- Creating a Workflow
- Trigger Types
- Node Types
- Passing Data Between Nodes
- Conditional Branching
- Scheduling a Workflow
- Running a Workflow
- Monitoring Executions
Overview
A workflow is a sequence of automated steps that run in response to a trigger — a manual action, a schedule, or an event from an external system. Each step is a node that performs a specific action, and nodes are linked by connections that define the order of execution.
With workflows you can:
- Automate repetitive tasks across multiple services without writing code
- Build intelligent pipelines that involve AI agents, databases, and external APIs
- React to external events in real time and route logic based on dynamic conditions
Core Concepts
Workflow
A workflow is a series of automated steps. You define what should happen and in what order, and the system handles the rest.
Node
A node represents a single action — for example, sending an email, calling an external service, or running a script. Nodes are placed on a visual canvas and connected together to form a flow.
Connection
A connection links one node to the next. Connections can be:
- Flow — always continue to the next node
- Conditional — only continue if a condition is met (see Conditional Branching)
Execution
An execution is a single run of a workflow. Every run is logged so you can review what happened, what data was produced, and whether any steps failed.
Creating a Workflow
- Give the workflow a name — Choose a clear, descriptive name.
- Add a START node — Choose how the workflow will be triggered: manually, on a schedule, or via webhook.
- Add action nodes — Browse the Node Catalog, drag nodes onto the canvas, and configure their settings.
- Connect the nodes — Draw connections from one node to the next to define the execution order.
- Save and activate — Set the status to Active so the workflow can run.
Tip: Keep a workflow in Draft status while you’re still building it to prevent it from being triggered accidentally.
Trigger Types
Every workflow starts with a START node. The trigger type determines how the workflow is launched.
Manual
The workflow is started by a user on demand. Use this for one-off or on-request automations.
To run it, open the workflow and click Run. You can optionally provide input data before the execution starts.
Scheduled
The workflow runs automatically on a recurring schedule. You define the schedule using a cron expression — see Scheduling a Workflow.
Once active, the workflow will run at the defined times without any manual action.
Webhook
The workflow is triggered by an external system. When active, the workflow gets a unique URL that third-party tools can call to start it.
The webhook URL is shown in the START node settings after the workflow is saved. Provide this URL to the external system that should trigger the workflow.
Node Types
Nodes are organized into categories. You can browse all available nodes in the Node Catalog.
Control Flow
| Node | Description |
|---|---|
| START | The entry point of every workflow. Defines the trigger type. |
| END | Marks the successful completion of the workflow. |
HTTP / API
| Node | Description |
|---|---|
| HTTP GET | Fetch data from an external service. |
| HTTP POST | Send data to an external service. |
| HTTP PUT | Update a resource in an external service. |
| HTTP DELETE | Delete a resource in an external service. |
Communication
| Node | Description |
|---|---|
| Send an email via Evolvable.ai’s default mail settings. | |
| Send Email | Send an email using custom mail credentials. |
| Read Email | Read messages from a mailbox. |
| Gmail Read | Read messages from a connected Gmail account. |
| Gmail Send | Send messages from a connected Gmail account. |
| Slack | Send a message to a Slack channel or user. |
| WhatsApp Send | Send a WhatsApp message. |
AI / Agents
| Node | Description |
|---|---|
| Agent Chat | Send a message to one of your configured AI agents and receive a response. |
Data Processing
| Node | Description |
|---|---|
| Transform | Modify text or convert data formats. |
| JSON Processor | Extract or manipulate values from structured data. |
Database
| Node | Description |
|---|---|
| PostgreSQL Query | Run a query against a connected database. |
Code
| Node | Description |
|---|---|
| Python Code | Execute a custom Python script. Useful for logic that doesn’t fit another node. |
Utility
| Node | Description |
|---|---|
| Delay | Pause the workflow for a set amount of time before continuing. |
Passing Data Between Nodes
Nodes can use the output of previous nodes as input. This is how data flows through your workflow.
How It Works
When configuring a node’s parameters, you can reference the output of any earlier node using the template syntax:
{{nodeId->output->fieldName}}Type this directly into any parameter field. The node ID is visible on the canvas when you select a node.
Example
If node 3 fetches a user record and returns their ID, a later node can use that value:
{{3->output->userId}}For nested data, use dot notation:
{{3->output->user.address.city}}Input Data
When triggering a workflow manually, you can provide input data before the run starts (for example, a user ID or a message). This data is available to nodes as {{input->fieldName}}.
Conditional Branching
You can route the workflow down different paths depending on the data produced at runtime.
How It Works
- Draw a Conditional connection from a node.
- Click the connection to open the condition editor.
- Define one or more conditions.
- The workflow follows that path only when all conditions are met.
If no conditional connection matches, the workflow stops at that node. You can add a fallback Flow connection as a default path.
Setting Up a Condition
| Field | Description |
|---|---|
| Path | The data field to check (e.g. user.role) |
| Operator | How to compare the value |
| Value | The value to compare against |
Operators
| Operator | Meaning |
|---|---|
| Equals | Field matches the value exactly |
| Not equals | Field does not match the value |
| Greater than | Field is greater than the value |
| Greater than or equal | Field is greater than or equal to the value |
| Less than | Field is less than the value |
| Less than or equal | Field is less than or equal to the value |
| In | Field is one of a list of values |
| Not in | Field is not in a list of values |
| Exists | Field is present in the data |
| Not exists | Field is absent from the data |
Combining Conditions
Multiple conditions on the same connection can be combined with AND (all must be true) or OR (at least one must be true).
Scheduling a Workflow
Set the START node trigger to Scheduled and define when the workflow should run using a cron expression.
Cron Expression Format
second minute hour day-of-month month day-of-weekUse * to mean “every”. For example, * * * * * * means every second.
Common Examples
| Expression | Runs |
|---|---|
0 0 * * * * | Every hour |
0 0 9 * * MON-FRI | Weekdays at 9:00 AM |
0 */30 * * * * | Every 30 minutes |
0 0 0 1 * * | First of every month at midnight |
Use the Validate button in the START node settings to check that your expression is correct before saving.
Running a Workflow
Only Active workflows can be executed. Change the workflow status to activate it.
Workflow Statuses
| Status | Meaning |
|---|---|
| Draft | Being built — cannot be executed |
| Active | Live and executable |
| Inactive | Paused — temporarily disabled |
| Archived | Kept for history — no longer runs |
| Deprecated | Superseded by a newer workflow |
Manual Run
Open the workflow and click Run in the toolbar. An optional input panel will appear where you can provide data for the execution. Click Confirm to start.
Webhook Run
Copy the webhook URL from the START node settings and provide it to the external system. When that system sends a request to the URL, the workflow starts automatically. Any data included in the request body is available as input data inside the workflow.
Monitoring Executions
Every time a workflow runs, an execution record is created. Open the Execution History tab on any workflow to see all past and current runs.
Execution Statuses
| Status | Meaning |
|---|---|
| Running | Execution is in progress |
| Success | All steps completed without errors |
| Failed | One or more steps encountered an error |
| Cancelled | Execution was stopped manually |
| Timeout | Execution exceeded the allowed time limit |
Step-Level Detail
Click on any execution to see the result of each individual node, including the input it received, the output it produced, and how long it took.
| Status | Meaning |
|---|---|
| Pending | Waiting to run |
| Running | Currently executing |
| Success | Completed without errors |
| Failed | Encountered an error |
| Retry | Being retried after a failure |
Retrying a Failed Step
If a node fails (for example, due to a temporary connection issue), click on the failed node in the execution detail view and select Retry. Only that step will re-run — the rest of the execution remains unchanged.