Skip to main content

What are Workflow Nodes and How Do I Connect Them?

A complete reference to every node type; what they do, and how they interconnect

L
Written by Laura Cecilli

What is a node?

A node is a single building block on the workflow canvas. Each node represents one instruction or process - for example: supplying a text prompt, generating an image, or routing work for human review. Nodes are connected together to form a workflow. The output of one node becomes the input of the next, and the system executes each step in sequence.

You add nodes by double-clicking the canvas or pressing the plus (+) icon to open the node menu. Once placed, you connect nodes by dragging from an output pin on one node to an input pin on another.

How connections work - the pin colour system

Every node has one or more pins - the small coloured circles on its edges. Pins define what type of data a node can send or receive. You can only connect an output pin to an input pin of the same colour. This prevents any incompatibility issues between nodes; if two nodes are not compatible, they simply can’t be connected.

Pin

Colour

What it carries

Green

Text / Prompt - written content passed to the next node

Pink

Context - text, images, or brand assets used as background reference

Blue

Attachment - character or product reference images for generation models

Purple

Work - a reference to a specific output, asset, or deliverable

A single node can have multiple pins of different colours. For example, an Image Generation node has a green (text/prompt) input pin, a pink (context) input pin, and a blue (attachment) input pin - and outputs a purple (work) pin.

A few things to note:

  • Text Input nodes feed naturally into agents and generation nodes, since those expect a prompt.

  • Image Generation nodes output a work (an asset), so they can't pipe directly into nodes that expect plain text, such as Split text.

  • Terminal nodes like Export, Approval, and Email sit at the end of a chain. Nothing connects downstream of them.

Some nodes - notably the Agent node - may have different output pin types depending on which particular agent is used inside the node.


Node categories

Nodes are organised inside the node menu into three categories: Generate, Input/Output, and Data. When you open the node picker, you can filter by these tabs or search by name. There are over twenty node types in total currently, with more on the roadmap.

Generate

Generate nodes are the creative engines of your workflow. Each one takes inputs (prompts, context, attachments) and produces new work.

Generate Text

Writes copy, scripts, descriptions, or any text-based output. Useful when the workflow needs to draft a headline, voiceover script, product description, or long-form content. Outputs a text string that downstream nodes can treat as either a prompt or context. Pair with Split text when you want a single generation to fan out into multiple parallel branches.

Generate Image

Creates images, visuals, or illustrations via a selected model (Nano Banana Pro, Gemini, etc.). Takes a text prompt (green), optional context (pink), and optional attachments (blue) such as product shots or style references. You can set aspect ratio and specify how many variations to produce per run. This is the workhorse for most static creative workflows.

Generate Video

Creates videos, clips, or animations. Works the same way as Generate Image but outputs motion. Often paired with an upstream Generate Image node that establishes a hero frame, which is then animated from there.

Video Stitch

Concatenates multiple video and audio inputs into one single video. Videos are stitched based on the order of the input nodes, starting from the top, working down.

Agents

Runs a custom agent from your workspace as a node. The agent brings its own system prompt, model selection, and knowledge sources with it; you don't reconfigure anything at the node level. This means any specialist you've already built (a copywriter agent, a brand tone analyst, a localisation agent) becomes a reusable building block across workflows. One thing to keep in mind: workflows depend on the agents they reference, so if the underlying agent is modified or removed, future runs may be affected.


Input, output nodes, including scaling & human-in-the-loop nodes

This category covers everything that feeds data into the workflow and everything that delivers finished work out of it. It also houses the workflow's human-in-the-loop (HitL) nodes: Approval and Email. Although these sit under Input/Output in the node menu, they function as review and notification gates rather than pure output destinations, so you'll often see them mid-workflow rather than at the very end.

Text Input

A field where you type a prompt or written instruction for another node to use. Almost every workflow starts with at least one Text Input. It has no input pins, only an output pin, so it always sits at the head of a chain. A useful pattern: put the variable, iteration-friendly instructions in your starting Text Input (the thing you'll change between runs), and keep the fixed, rigorous instructions in a downstream Text Input closer to your generation node.

Work

Pulls an existing piece of work from your workspace's work library into the workflow. Use this when you want to iterate on a previously generated asset; for example, swapping a product inside an existing ad, or resizing a key visual you've already approved.

Asset

Adds a file from your computer or the asset library. Typically used to bring in product shots, reference imagery, or any media the workflow needs as a visual anchor. Outputs on the blue (attachment) pin, so it connects to the attachment inputs of generation and agent nodes.

Template

Brings a template from your template library onto the canvas. Useful when the workflow needs to produce assets that conform to a predefined layout or structure.

List

A List node holds a sequence of items, all of the same type, and passes them to the downstream nodes one at a time, in the order you set. The type can be anything Pencil supports as an input: text strings, images, video clips, brand assets, but every item in a given List must be the same type.

Use it when each item needs its own full pass through downstream nodes: a list of product names each generating its own hero image, a list of headlines each translated into the same target language, or a list of brand colour values each applied to a template variation.

Collection

A Collection node holds a group of items of mixed types and passes them all together as a single batch. Where a List sends one item at a time, a Collection sends everything at once.

Use it when the items are different types but belong together for the same downstream step: a packshot, a brand mood reference, and a text prompt all feeding the same generative model in one call; or a set of mixed assets (logos, fonts, packshots) needed together for a single template fill.

Table

A Table node holds data in rows and columns, in the same shape as a spreadsheet or CSV. Each row is one record; each column holds one type of input. The workflow runs once per row, with the values in that row supplied to the downstream nodes.

Tables come in two kinds. Structured tables have column headers that map to specific input pins (a Headline column to a text input, a Packshot column to an attachments pin), and are the right choice when your data is already organised as a feed-style dataset and you want named, predictable mapping.

Unstructured tables have no headers, with downstream nodes picking up columns positionally. Table nodes effectively give you the breadth of Feed Variation work without needing to switch tabs out of the workflow canvas.

Brand library

Pulls specific assets from the workspace brand library into the workflow as context or attachments. This is the precision option for brand references: use it when you need a model to see a specific logo, colour chip, or tone-of-voice document directly, rather than relying on a brand-aware agent to surface the right reference automatically.

Export

A terminal node that makes the final creative available for download or onward delivery. Place this at the end of any chain whose output you actually want to keep and hand off.

Approval

The primary human-in-the-loop node. Pauses workflow execution and sends a preview link to reviewers for sign-off, so a human can QA the work before anything irreversible happens downstream. Pair it with an If/Else node to route work differently depending on whether it's approved or rejected. Despite living under Input/Output in the node menu, Approval is really a mid-workflow quality gate, not a delivery step.

Email

Sends an email with generated work attached. Also a human-in-the-loop node, but a non-blocking one: the workflow continues executing while the email goes out. Useful for keeping stakeholders informed mid-run, sharing progress with clients, or triggering reviews that don't need to halt the pipeline. The distinction from Approval is important: Approval pauses and waits for a decision; Email notifies and moves on.


Data

Data nodes handle scoring, transformation, and routing. They don't generate new creative; they manipulate or direct the work that's already moving through the canvas.

Scores

Applies AI-powered quality scoring to outputs on the canvas. Available scores vary by workspace and may include creative engagement, brand relevance, and other media performance metrics. Most powerful when combined with an If/Else node: feed the score into the condition and automatically route low-scoring work back for regeneration, or forward for human review.

Split text

Breaks a structured list or text block into individual items, fanning out into multiple downstream branches. The classic use case: a Generate Text node outputs three headline options, Split text separates them, and three parallel Generate Image nodes each produce a key visual for their respective headline. Essential for any one-to-many ideation pattern.

If/Else

Evaluates a condition and routes work down one of two branches. The decision-making node. Combine with Scores for automated quality routing, or with Approval for human-gated branching. This is how you build decision trees without hard-coding a separate workflow for every scenario.

Special ports and connection types

Iterator (connection port)

A new type of port (also known as a "pin") that handles iteration between nodes. Unlike the colour-coded input pins (which carry a single value of a given type - text, context, or attachment - into the receiving node), an Iterator port carries a sequence or batch from a List, Collection, or Table into the downstream node and tells the workflow to repeat: once per item for a List, once for the whole batch for a Collection, once per row for a Table.

Router

Routes a single input node to multiple output nodes for better organisation. It doesn't change any of the data; it's purely a quality-of-life node to help you keep the canvas tidy, and makes structures easier to parse at a glance, when one input needs to feed many downstream steps. Use it to avoid the chaotic "spaghetti" when large complex workflows have dozens of crossed wires.



Tips for working with nodes in workflows

Start with your inputs. Decide what data your workflow needs (text prompts, assets, brand context) before placing any processing or generation nodes. Clean inputs make everything downstream easier.

Keep each node focused on one job. Overloaded nodes are harder to debug and harder for colleagues to understand when they duplicate your workflow. If a single node is trying to do three things, break it into three nodes.

Use Split text to fan out variations. When you need parallel outputs (multiple headlines, multiple scene variations, multiple format adaptations), generate them as a list in one node and split them into branches, rather than duplicating your whole generation chain.

Add an Approval node before anything terminal. A quick human check before Export or Email catches issues that automated scoring can miss, and costs very little in execution time.

Connect brand and reference nodes early. The earlier in your chain that brand context enters, the more consistently it propagates through downstream generations.

Test nodes in isolation as you build. Use "Run this node only" to verify each step before wiring it into the full sequence. A broken step halfway through a workflow wastes every step that preceded it.

Did this answer your question?