Nodes

Nodes are the individual processing units inside a workflow. NodeLoom ships with 169+ built-in nodes spanning triggers, AI models, control flow, integrations, and more.

Node Anatomy

Every node in NodeLoom shares a consistent structure:

PartDescription
Input handle(s)Connection points on the left side of the node where data arrives from upstream nodes.
Output handle(s)Connection points on the right side where the node sends its result to downstream nodes.
Configuration panelA side panel that opens when you select the node. Each node type has a unique set of fields, dropdowns, expression inputs, and credential selectors.
Test capabilityA built-in Test button that executes the node in isolation so you can inspect its output without running the full workflow.
Icon and labelA visual indicator showing the node type (e.g., Slack icon, OpenAI icon) and a user-editable display name.

Node configuration panel

The configuration panel is context-sensitive. It detects the node type and renders only the relevant settings. For example, an HTTP Request node shows method, URL, headers, and body, while an AI Agent node shows model selection, system prompt, tools, and memory settings.

Handles and Connections

Nodes connect to each other through handles -- small circles on the edges of each node. A standard node has one input handle and one output handle. Branching nodes (If/Else, Switch, Try/Catch) have multiple named output handles, each representing a different path.

To create a connection, click and drag from an output handle to an input handle. NodeLoom validates the connection in real time and prevents invalid links (e.g., connecting a node to itself or creating a cycle).

Edge definition with sourceHandle
{
  "source": "node_if_1",
  "target": "node_slack_2",
  "sourceHandle": "true"
}

Node Categories

NodeLoom organizes its 169+ nodes into the following categories. You can browse the full list in the node picker on the canvas.

Triggers

37 trigger types that start a workflow: Manual, Webhook, Schedule (cron), Chat Trigger, Google Suite triggers (Gmail, Calendar, Drive), AWS triggers (S3, SQS, SNS), message queue triggers (Kafka, RabbitMQ, Redis Pub/Sub), database triggers, file system triggers, and more.

AI and Intelligence

AI Agent, LLM (OpenAI, Anthropic, Google, Ollama, etc.), Text Classifier, Sentiment Analysis, Summarizer, Embeddings, Vector Store operations, and RAG (Retrieval-Augmented Generation) nodes.

Control Flow

If/Else, Switch, Loop, Try/Catch, Parallel, Wait, Delay, Merge, and Subflow nodes. These nodes control the execution path, enable branching, iteration, error handling, and workflow composition.

Data and Integration

HTTP Request, GraphQL, databases (PostgreSQL, MySQL, MongoDB, Redis), cloud storage (S3, Google Cloud Storage), file operations, JSON/XML/CSV transforms, Code (JavaScript/Python in a secure sandbox), and spreadsheet operations.

Communication

Email (SMTP, Gmail, Outlook), Slack, Discord, Microsoft Teams, Telegram, Twilio (SMS/Voice), and other messaging platform nodes.

Security

Guardrail nodes for content filtering, PII detection and redaction, toxicity checks, and custom validation rules that can halt workflow execution when safety thresholds are exceeded.

Finding the right node

Use the search bar in the node picker to quickly find nodes by name, category, or keyword. For example, searching "email" shows Gmail, SMTP, Outlook, and other email-related nodes.

Node Configuration

Click any node on the canvas to open its configuration panel on the right side. The panel contains:

  • Parameters: Type-specific fields like URLs, queries, prompts, or file paths. Most fields support expressions.
  • Credentials: A dropdown to select stored credentials for the service (e.g., choose which Slack workspace token to use).
  • Input/Output inspector: View the last test or execution result directly in the panel.
  • Settings: Advanced options like retry policy, timeout, continue-on-error, and notes/description.
Example: HTTP Request node config
{
  "type": "HTTP_REQUEST",
  "parameters": {
    "method": "POST",
    "url": "https://api.example.com/orders",
    "headers": {
      "Content-Type": "application/json"
    },
    "body": {
      "customer": "{{ $json.customer.name }}",
      "amount": "{{ $json.total }}"
    }
  },
  "credentials": "http_header_auth_prod"
}

Testing Nodes

Every node has a Test button in its configuration panel. Clicking it executes the node with the output of its upstream node (or sample data you provide). The result is displayed immediately in the panel so you can iterate quickly.

You can also pin static test data to a node, which freezes its output for all downstream nodes during development. This is helpful when the upstream node calls an expensive API or produces non-deterministic results.

Code nodes run in a sandbox

Code nodes (JavaScript and Python) always execute inside a secure, isolated sandbox for security.