n8n error index

Parameters & expressions · Expression / item linking

Paired item data for item from node is unavailable. Ensure node is providing the required output.

Your expression used .item to reach back to an earlier node, and somewhere in the chain between that node and this one, a node produced output without attaching pairedItem metadata — so n8n has no way to know which of the earlier node's items produced the item you're currently on.

If you just want it working: replace .item with .first(), .last() or .all()[index]. That skips item tracing entirely. The rest of this page is for deciding which of those is actually correct, and for the case where you need .item to work.

The exact string, and why yours looks different

n8n builds this message from a template, so the wording varies with what you wrote:

Paired item data for <method> from node '<NodeName>' is unavailable.
Ensure '<NodeName>' is providing the required output.

<method> is whichever of these you used — and it is the literal text that appears:

In the message What you wrote
item $('Node').item
itemMatching $('Node').itemMatching(i)
pairedItem the default, when n8n resolves linking internally
$getPairedItem internal resolution from a Code node

The item index is attached to the error as context rather than being part of the message itself, so depending on where you read the error — the node's red banner, the execution log, a forum paste — you may or may not see a trailing item number. Don't treat its absence as a different error.

Check this first: is the referenced node pinned?

If the node you're reaching back to has pinned data, n8n throws a completely different message for the same underlying problem:

Using the item method doesn't work with pinned data in this scenario.
Please unpin '<NodeName>' and try again.

and in some paths simply Unpin '<NodeName>' to execute.

This is worth checking before anything else, because it's the version that hits people mid-build — you pin some test data to stop re-hitting an API, and an expression that worked five minutes ago stops working. Unpin the node and the error goes. Nothing is wrong with your expression.

Fix 1 — use a method that doesn't need item linking

This is n8n's own recommendation and it's right most of the time. Which one you want depends on what the referenced node actually returns:

{{ $('Get Customer').first().json.email }}

If none of those is honest — if you genuinely need the item that corresponds to this one — then you need Fix 2.

Fix 2 — make the offending node supply the link

The culprit is almost always a Code node in "Run Once for All Items" mode. In that mode you build the output array yourself, and if you don't set pairedItem, nothing downstream can trace through your node.

Two things worth knowing, both from n8n's source:

So in "Run Once for All Items":

const items = $input.all();

return items.map((item, i) => ({
  json: { ...item.json, domain: item.json.email.split('@')[1] },
  pairedItem: { item: i },
}));

If your node fans out — one input item becoming several output items — point each output at the input it came from:

const out = [];
$input.all().forEach((item, i) => {
  for (const line of item.json.lines) {
    out.push({ json: line, pairedItem: { item: i } });
  }
});
return out;

n8n will also nudge you about this on its own: when a Code node returns a different number of items than it received, or any item without pairedItem, the output panel shows a hint reading "To make sure expressions after this node work, return the input items that produced each output item." That hint is not an error and is easy to scroll past, which is why most people meet it as this error instead, three nodes later.

Fix 3 — accept that some nodes can't supply it

A node that aggregates, merges, summarises or splits has genuinely destroyed the one-to-one relationship. There is no correct pairedItem for a row that was computed from forty input items. For anything downstream of such a node, .item is the wrong tool and Fix 1 is the answer, permanently.

The same failure, four other messages

This is the part that makes searching for it so frustrating: n8n's item-linking code throws five distinct messages, and it rewrites the message when the failure happens inside a Code node rather than in an expression field. So the same root cause reaches you under different text depending on where you hit it.

Expression field Inside a Code node What it means
Paired item data for … is unavailable (same) a node in the chain didn't supply pairedItem
Invalid expression / No path back to referenced node (same) the referenced node isn't wired to this one at all. Wire it up — intermediate nodes are fine
Branch not found / Paired item references non-existent branch Invalid branch reference a node pointed at an output branch that doesn't exist
Paired item resolution failed / Unable to find paired item source Data not found traversal ran out of chain before reaching the node
Multiple matches found / Multiple matching items for item [N] Multiple matches more than one item could be the source — genuinely ambiguous

Two neighbours that look similar but aren't item-linking problems at all:

Why this happens at all

n8n items don't carry their history inside them. Instead every node is expected to stamp each output item with a pointer to the input item that produced it, and .item resolves by walking that chain of pointers backwards, node by node, until it reaches the node you named. One node that doesn't stamp its output breaks the chain — and the error surfaces at the node doing the reading, which may be well downstream of the node actually at fault.

That's the practical lesson: the node named in the error is the node that failed to supply the data, not the node you need to edit. Read the node name in the message and go look at that node, not at the expression in front of you.

A worked example

Treadle's Lead Reply with Delivery Log is built the way that avoids this problem entirely: every branch — invalid address, unusable draft, mail server rejection, successful send — writes its own outcome row with a reason, instead of relying on an expression downstream to trace back which lead a result belonged to.

Lead Reply with Delivery Log — $19


Sources: packages/workflow/src/workflow-data-proxy.ts and the editor's English string table in n8n's repository, read directly. n8n documents item linking in general but does not have a page for this error string.

Related errors on this site

Last verified 15 September 2026 against n8n 2.39.5 (source read on master @ 2.40.0). n8n changes these messages between releases; if the wording you see differs, the version above is what this page was checked against.