Skip to main content

Understanding Nodes

Nodes are the building blocks of workflows. Every action, decision, and transformation in your workflow is represented by a node. This guide teaches you everything about nodes.

Time to complete: 15 minutes


What is a Node?

A node is a single unit of work in a workflow. Each node:

  • Receives input data
  • Processes or transforms it
  • Outputs results for the next node

Think of nodes as workers on an assembly line, each doing one specific job.

[INPUT] → [ NODE ] → [OUTPUT]

(config)

Node Anatomy

Every node has the same basic structure:

┌──────────────────────────────────────┐
│ 📧 Email Send ⚙️ │ ← Header (icon + name + settings)
├──────────────────────────────────────┤
│ │
│ ○ ────────────────────────────── ○ │ ← Input (left) and Output (right) handles
│ │
│ emailsend_1 │ ← Alias (unique identifier)
│ │
└──────────────────────────────────────┘

Key Parts

PartDescriptionExample
IconVisual indicator of node type📧 for email
NameNode's display name"Email Send"
AliasUnique identifier for referencingemailsend_1
Input HandleLeft side - receives data○ on left
Output HandleRight side - sends data○ on right
SettingsAccess configuration panel⚙️ icon

Node Categories

Expedify organizes nodes into categories based on what they do:

Triggers (Starting Points)

Start your workflow when events occur.

NodePurposeWhen to Use
Webhook TriggerExternal HTTP requestsAPI integrations, Zapier
Database TriggerCRM record changesContact created, deal updated
SchedulerTime-based executionDaily reports, reminders
User MessageChat messagesChatbots, AI assistants
WhatsApp TriggerWhatsApp messagesCustomer support
Click TriggerManual/button clicksOn-demand workflows

Logic (Decision Making)

Control the flow of your workflow.

NodePurposeWhen to Use
ConditionTrue/false branchingIf email exists, then...
Multi-ConditionMultiple branchesRoute by category
LoopIterate over arraysProcess each item
DelayWait before continuingRate limiting, spacing
Workflow SwitchJump to another workflowModular design
MergeCombine parallel pathsRejoin branches

Data (Transform & Process)

Work with data between steps.

NodePurposeWhen to Use
Transform DataJavaScript transformationsFormat, calculate, combine
Set VariablesStore valuesSave for later use
Database QueryRun SQL queriesGet data from DB
API RequestCall external APIsFetch/send data
CodeCustom JavaScriptComplex logic

AI (Intelligence)

Add AI capabilities to your workflows.

NodePurposeWhen to Use
LLM IntegrationGenerate text with AIContent, responses
KB SearchSearch knowledge baseFind documents
KB RAG QueryQ&A from documentsAnswer questions
Core AgentMulti-tool AI agentComplex reasoning
Prompt TemplateStructured promptsReusable AI instructions

Channel (Messaging)

Send messages across channels.

NodePurposeWhen to Use
Email SendSend emailsNotifications, campaigns
WhatsApp SendSend WhatsApp messagesCustomer comms
SMS SendSend text messagesAlerts, OTPs
Slack MessagePost to SlackTeam notifications
Voice CallMake phone callsOutbound calls

CRM (Customer Data)

Work with CRM records.

NodePurposeWhen to Use
Contact CreateAdd new contactsLead capture
Contact UpdateModify contactsData enrichment
Contact SearchFind contactsLookup by email
Deal CreateCreate dealsSales pipeline
Task CreateCreate tasksFollow-up reminders

Integration (External Services)

Connect to third-party services.

NodePurposeWhen to Use
Google SheetsRead/write spreadsheetsData sync
SalesforceCRM operationsEnterprise sync
ZohoZoho CRM operationsZoho integration
Custom WebhookSend HTTP requestsAny API

Output (End Points)

Return results from your workflow.

NodePurposeWhen to Use
Text ResponseReturn textChat responses
JSON ResponseReturn structured dataAPI responses
Webhook ResponseHTTP responseWebhook acknowledgment

Adding Nodes to Your Workflow

Method 1: Drag and Drop

  1. Open the node library (left panel)
  2. Find your node category
  3. Drag the node onto the canvas
  4. Drop where you want it

Method 2: Quick Add

  1. Click the + button on a node's output
  2. Search for the node you want
  3. Click to add and auto-connect
  1. Press Ctrl/Cmd + K or click search
  2. Type the node name
  3. Click to add to canvas

Connecting Nodes

Nodes connect through handles - the small circles on their edges.

Connection Rules

HandlePositionPurpose
InputLeft sideReceives data from previous node
OutputRight sideSends data to next node

How to Connect

  1. Hover over a node's output handle (right side)
  2. Click and drag a line
  3. Drop onto another node's input handle (left side)
  4. Connection created!
[Node A] ────────────→ [Node B]
output→input

Multiple Outputs

Some nodes have multiple outputs:

[Condition]
├──── True ────→ [Success Path]
└──── False ───→ [Error Path]

Multiple Inputs

Nodes can receive from multiple sources:

[Source A] ───┐
├──→ [Merge] ──→ [Next Step]
[Source B] ───┘

Configuring Nodes

Every node has configuration options accessible via the right panel.

Opening Configuration

  1. Click on any node
  2. Right panel shows configuration
  3. Fill in required fields
  4. Settings auto-save

Configuration Panel Sections

SectionContains
BasicName, alias, description
ConfigurationNode-specific settings
AdvancedTimeout, error handling

Field Types

Field TypeExampleHow to Fill
TextSubject lineType directly
DropdownSelect integrationChoose from list
Variable{{contact.email}}Use variable picker
CodeJavaScriptWrite in editor
ToggleEnable featureClick on/off

Node Aliases

Every node gets a unique alias - an identifier used to reference its outputs.

Alias Format

{nodetype}_{number}

Examples:

  • webhooktrigger_1 - First webhook trigger
  • emailsend_1 - First email send
  • transformdata_2 - Second transform data

Custom Aliases

You can rename aliases for clarity:

  1. Click on the node
  2. Find Alias field in config
  3. Enter a descriptive name

Default: emailsend_1 Custom: send_welcome_email

Using Aliases in Variables

Reference node outputs using their alias:

{{webhooktrigger_1.payload.email}}
{{transformdata_1.formatted_name}}
{{send_welcome_email.success}}

Node States During Execution

When a workflow runs, nodes show their status:

StateVisualMeaning
PendingGrayWaiting to execute
RunningBlue pulseCurrently executing
CompletedGreen borderFinished successfully
FailedRed borderError occurred
SkippedGray dashedPath not taken

Node Input and Output

Input Data

Each node receives input from connected nodes:

// Input automatically includes outputs from all connected upstream nodes
{
"webhooktrigger_1": {
"payload": { "email": "user@example.com" }
},
"transformdata_1": {
"formatted_email": "user@example.com"
}
}

Output Data

Each node produces output for downstream nodes:

// Email Send node output
{
"success": true,
"message_id": "msg_123",
"recipient": "user@example.com"
}

Viewing Input/Output

During testing or execution:

  1. Click on any node
  2. View Input tab - what the node received
  3. View Output tab - what the node produced

Required vs Optional Fields

Required Fields

Marked with * or red indicator. Node won't execute without these.

NodeRequired Fields
Email SendTo, Subject, Body
LLM IntegrationIntegration, Prompt
ConditionVariable, Operator, Value

Optional Fields

Enhance functionality but have defaults:

NodeOptional Fields
Email SendCC, BCC, Attachments
LLM IntegrationTemperature, Max Tokens
API RequestHeaders, Timeout

Common Node Patterns

Pattern 1: Trigger → Action

Simplest workflow - event triggers action.

[Webhook Trigger] → [Send Email]

Pattern 2: Trigger → Transform → Action

Process data before acting.

[Database Trigger] → [Transform Data] → [Update Contact]

Pattern 3: Trigger → Condition → Branches

Route based on conditions.

[Trigger] → [Condition] → True → [Action A]
→ False → [Action B]

Pattern 4: Trigger → Loop → Action

Process arrays.

[Webhook] → [Loop over items] → [Process each item]

Tips and Best Practices

Naming Conventions

Good aliases:
✅ validate_email
✅ send_welcome_email
✅ check_lead_score

Bad aliases:
❌ node1
❌ x
❌ temp

Organization

  • Keep related nodes close together
  • Align nodes vertically or horizontally
  • Use consistent spacing
  • Group logical sections

Performance

  • Minimize nodes when possible
  • Use Transform for multiple operations
  • Avoid unnecessary loops
  • Cache repeated API calls

Next Steps

Now that you understand nodes, continue with:

  1. Understanding Variables - Master data flow
  2. Configuring Nodes - Detailed setup guide
  3. Node Reference - Complete node documentation

Quick Reference

Node Categories

TRIGGERS      → Start workflows (webhook, database, schedule)
LOGIC → Control flow (condition, loop, delay)
DATA → Transform (transform, code, query)
AI → Intelligence (LLM, KB search, agent)
COMMUNICATION → Messaging (email, WhatsApp, SMS)
CRM → Customer data (contact, deal, task)
INTEGRATION → External services (API, sheets)
OUTPUT → Return results (response, webhook)

Node Anatomy

Input Handle (○) ─── [Icon + Name] ─── Output Handle (○)

(alias)

Configuration

Keyboard Shortcuts

ActionShortcut
Delete nodeDelete or Backspace
DuplicateCtrl/Cmd + D
CopyCtrl/Cmd + C
PasteCtrl/Cmd + V
UndoCtrl/Cmd + Z