Core Concepts
Learn the fundamental building blocks of Agents: workflows, nodes, triggers, and more
Understanding these core concepts will help you design and build effective workflows. This page covers the fundamental building blocks of Agents.
Workflows
A workflow is a container for your automation logic. It defines what triggers the automation, what processing happens, and what actions are taken.
Workflow Properties
| Property | Description |
|---|---|
| Name | Human-readable identifier |
| Version | Workflows are versioned; only one version is active at a time |
| Status | Draft, Active, or Superseded |
| Trigger | What event starts this workflow |
Workflow Lifecycle
Draft → Release → Active → (New Release) → Superseded
- Draft: Workflow is being edited and won't execute
- Active: Workflow is live and will execute when triggered
- Superseded: Old version replaced by a newer release
Nodes
Nodes are the building blocks of workflows. Each node performs a specific function: triggering, processing data, calling AI, or taking actions.
Node Categories
| Category | Purpose | Examples |
|---|---|---|
| Triggers | Start the workflow | Event Trigger, Scheduled Trigger |
| Loaders | Fetch external data | Load Meeting |
| AI | Process with AI | AI Prompt, AI Agent |
| Actions | Take external actions | Slack Post, Email Send, Create Task |
| Control | Control execution flow | If, Zip, Wait, Sink |
Node Structure
Every node has:
┌───────────────────────────────────┐
│ Node Name │
├───────────────────────────────────┤
│ ○ Input Port 1 │
│ ○ Input Port 2 (if applicable) │
├───────────────────────────────────┤
│ Configuration │
│ Parameters │
├───────────────────────────────────┤
│ ● Success Output │
│ ● Error Output (if applicable) │
└───────────────────────────────────┘
- Input Ports: Receive data from upstream nodes
- Configuration: Parameters that control the node's behavior
- Output Ports: Send data to downstream nodes (success and/or error channels)
Execution Modes
Nodes operate in one of two modes:
| Mode | Description | Use Case |
|---|---|---|
| Per-Item | Processes each input item individually | Most nodes (Slack, Email, AI) |
| Batch | Processes all items together as a collection | Aggregation, merging streams |
Edges (Connections)
Edges connect nodes together, defining how data flows through your workflow. An edge connects an output port of one node to an input port of another.
[Trigger] ─success─→ [AI Prompt] ─success─→ [Slack Post]
│
└─error─→ [Error Handler]
Connection Rules
- Every input port must receive exactly one connection
- Output ports can connect to multiple downstream nodes
- Connections determine data flow and execution order
- Error channels allow branching on failure
Triggers
Triggers are special nodes that start workflow execution. A workflow has exactly one trigger.
Trigger Types
| Type | When It Fires | Use Case |
|---|---|---|
| Event Trigger | When a system event occurs | React to meeting completions |
| Scheduled Trigger | On a cron schedule | Daily summaries, periodic checks |
Event Types
Event triggers can listen for:
| Event | Timing | Description |
|---|---|---|
MEETING_START_MINUS_24H | 24 hours before | Pre-meeting preparation |
MEETING_START_MINUS_6H | 6 hours before | Day-of prep |
MEETING_START_MINUS_1H | 1 hour before | Last-minute reminders |
MEETING_START_MINUS_30M | 30 minutes before | Final checks |
MEETING_START_MINUS_15M | 15 minutes before | Immediate prep |
MEETING_START | At meeting start | Real-time actions |
MEETING_ENDED | When meeting ends | Post-meeting follow-up |
MANUAL | User clicks Trigger | Testing and ad-hoc execution |
Executions
An execution is a single run of a workflow. When a trigger fires, a new execution is created.
Execution Lifecycle
┌→ Completed
Queued → Running ─┼→ Failed
└→ Canceled
| Status | Meaning |
|---|---|
| Queued | Waiting to start |
| Running | Currently processing nodes |
| Completed | All nodes finished successfully |
| Failed | A node failed without recovery |
| Canceled | User or system stopped execution |
Execution Tracking
Each execution records:
- Start and end times
- Status of each node
- Input and output data at each step
- Error details if failures occur
Data Flow
Data flows through workflows via connections between nodes. Understanding how data moves is key to building effective workflows.
The trigger Object
When a workflow starts, the trigger node outputs a trigger object containing event data:
{
"meetingPlanId": "abc123",
"dealRoomId": "xyz789",
"organizationId": "org456",
"event": "MEETING_ENDED",
"firedAt": "2024-01-15T10:30:00Z"
}
The json Variable
Within node configurations, you can reference upstream data using the json variable:
{{ json.meeting.title }}
{{ json.callRecording.transcriptSummary }}
Data Transformation
Data transforms as it flows through nodes:
Trigger (event data)
↓
Load Meeting (adds meeting details)
↓
AI Prompt (adds AI analysis)
↓
Slack Post (consumes data, produces confirmation)
Expressions (CEL)
CEL (Common Expression Language) is used for dynamic values and conditions in node configurations.
Common Uses
| Use Case | Example |
|---|---|
| Access data | trigger.meetingPlanId |
| Conditions | json.score > 0.8 |
| String operations | json.name + " - Summary" |
| Array access | json.attendees[0].email |
| Null checks | json.value ?? "default" |
Examples
// Access trigger data
trigger.dealRoomId
// Access upstream node output
json.meeting.title
// Conditional expression
json.sentiment == "positive" ? "Great meeting!" : "Follow up needed"
// Check if field exists
has(json.callRecording)
Templates (Liquid)
Liquid is a templating language used for generating text content in message nodes.
Syntax
Hello {{ json.attendee.name }},
Thank you for meeting with us on {{ json.meeting.startTime | date: "%B %d" }}.
{% if json.actionItems.size > 0 %}
Here are the action items we discussed:
{% for item in json.actionItems %}
- {{ item }}
{% endfor %}
{% endif %}
Best regards,
{{ author.name }}
Available Objects
| Object | Contains |
|---|---|
trigger | Trigger event data |
json | Upstream node output |
author | Current user info |
organization | Organization details |
Retry Policies
Nodes can fail due to temporary issues (network problems, rate limits). Agents automatically retries failed nodes using configurable policies.
Retry Strategies
| Strategy | Behavior |
|---|---|
exponential_jitter | Random delay with exponential growth (default) |
exponential | Predictable exponential backoff |
fixed | Same delay between retries |
none | No retries |
Default Configuration
Max Attempts: 3
Initial Backoff: 1 second
Max Backoff: 30 seconds
Strategy: exponential_jitter
Dead Letter Queue (DLQ)
When a node exhausts all retries, the failure is recorded in the Dead Letter Queue. This prevents data loss and allows for manual review and retry.
DLQ Workflow
Node Fails → Retry 1 → Retry 2 → Retry 3 → DLQ
↓
Manual Review
↓
Fix & Retry OR Discard
Key Terminology Summary
| Term | Definition |
|---|---|
| Workflow | Container for automation logic |
| Node | Individual processing unit |
| Edge | Connection between nodes |
| Trigger | What starts a workflow |
| Execution | Single run of a workflow |
| Port | Input or output connection point on a node |
| CEL | Expression language for dynamic values |
| Liquid | Templating language for text generation |
| DLQ | Storage for permanently failed messages |
Next Steps
Now that you understand the concepts, set up your account: