Workflow Builder (n8n Engine)
The Workflow Builder is FlowStack's advanced automation engine powered by n8n. It provides a powerful node-based editor for building complex, multi-branch automations with code execution and advanced data transformation.
Interface
The Workflow Builder opens in a full-featured editor within the FlowStack dashboard:
- Canvas — Infinite workspace with zoom and pan. Connect nodes by dragging wires between them.
- Node Panel — Click any node to configure it. Shows input parameters, expressions, and output preview.
- Node Palette — Search 880+ node types. Organized by category (triggers, actions, utilities, AI).
- Execution Panel — Shows execution data flowing through each node in real-time.
- Runs Panel — History of all executions with status and duration.
Building a Workflow
1. Select a Trigger
Every workflow starts with a trigger node:
- Manual Trigger — Run on-demand from the dashboard
- Schedule Trigger — Cron-based scheduling (every N minutes/hours/days, custom cron)
- Webhook — HTTP endpoint that accepts GET, POST, PUT, DELETE requests
- App Trigger — Event from a connected service (e.g., new Slack message, new GitHub PR)
2. Add Nodes
Click the + button or drag from a node's output to add new nodes:
Action nodes — Interact with external services:
- Gmail, Slack, Google Sheets, Notion, Airtable, HubSpot, Salesforce, etc.
Utility nodes — Control flow logic:
- IF — Conditional branching
- Switch — Multi-way branching based on values
- Merge — Combine data from multiple branches
- Loop Over Items — Process arrays one item at a time
- Wait — Pause execution for a duration or until a webhook is received
- Set — Create or transform data fields
Code nodes — Execute custom code:
- Code — Write JavaScript or Python with full
require()/importsupport - HTTP Request — Call any REST API with custom headers, auth, and body
- Execute Command — Run shell commands
AI nodes — Build AI pipelines:
- AI Agent — Create an agent with tools and memory
- Chat Model — Connect to OpenAI, Anthropic, Google, etc.
- Vector Store — Query Pinecone, Weaviate, Qdrant, etc.
- Text Splitter — Chunk documents for embedding
- Chain — Build LangChain sequences
3. Configure Expressions
The Workflow Builder uses a powerful expression system for data mapping:
// Reference data from previous nodes
{{ $json.email }}
// Access nested properties
{{ $json.user.profile.name }}
// Use JavaScript expressions
{{ $json.amount * 1.1 }}
// Access environment variables
{{ $env.API_KEY }}
// Reference specific node output
{{ $node["Gmail"].json.subject }}
4. Error Handling
Add error handling to make your workflows resilient:
- Retry on Fail — Automatically retry a node up to N times with configurable delay
- Continue on Fail — Don't stop the workflow if a node fails
- Error Trigger — A special trigger that fires when any workflow in the project fails
5. Test and Execute
- Click Execute Workflow to run with test data
- Each node shows its output in real-time (green = success, red = failure)
- Click any node to inspect input/output data
- Pin test data to nodes for consistent testing
Sub-Workflows
Break complex automations into reusable modules:
- Create a workflow that starts with a Manual Trigger or Execute Workflow Trigger
- In your main workflow, add an Execute Workflow node
- Select the sub-workflow
- Pass data in and receive results back
This is ideal for shared logic like "enrich contact data" or "send notification" that's used across multiple workflows.
Webhook Configuration
Webhook triggers create a unique URL for your workflow:
https://your-n8n-instance.com/webhook/abc123-def456
Configure:
- HTTP Method — GET, POST, PUT, DELETE, or any
- Path — Custom path segment
- Authentication — None, Basic Auth, or Header Auth
- Response — Immediately or after workflow completes (with custom response body)
Tips
- Pin data on nodes to speed up testing without re-executing the full workflow
- Use sticky notes on the canvas to document complex sections
- Color-code nodes by right-clicking to visually organize your workflow
- Use the Code node sparingly — prefer built-in nodes when available for maintainability